System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,特别是涉及一种分布式数据库的分片方法、计算机可读存储介质与计算机程序产品。
技术介绍
1、目前,随着业务数据量激增,大量集中式数据库需要转换为分布式数据库,以将集中式数据库中的数据迁移到分布式数据库。在此背景下,分布式数据库场景下如何确定合理且高效的分片策略显得尤为重要。相关技术中,通常需要凭借经验进行分片策略的确定。具体地,对于有主键表的表对象,根据主键进行hash分片,无主键的根据唯一索引进行hash分片,唯一索引也不存在情况下根据列顺序,采用第一个可以作为分片键的数据类型列进行hash分片。
2、上述分片策略可能导致数据库的分片不合理,进而导致各服务器节点负载不均衡(例如某个服务器节点负载过高)等情况。
技术实现思路
1、本专利技术的一个目的是要对集中式数据库进行合理且高效的分片,从而防止或减少分布式数据库的出现业务负载不均衡的问题。
2、具体地,根据本专利技术的一个方面,本专利技术提供了一种分布式数据库的分片方法,其包括:
3、获取待处理数据库的表对象的第一信息,所述第一信息包括所述表对象的基础数据量、关联表和日志信息;
4、根据所述第一信息,确定所述表对象的分片类型,所述分片类型包括单表、广播表和分片表;
5、根据所述分片类型,对所述表对象进行分片。
6、可选地,所述的根据所述第一信息,确定所述表对象的分片类型,包括:
7、响应于所述表对象的sql语句只包含插入语句,
8、响应于所述表对象的sql语句只包含查询语句,所述表对象的基础数据量小于或等于第三预设阈值,且其关联表个数超过第四预设阈值,则判定为广播表;
9、若否,则判定为分片表。
10、可选地,所述的根据所述分片类型,对所述表对象进行分片,包括:
11、响应于所述表对象为单表,将所述表对象存储在一个数据库节点中;
12、响应于所述表对象为广播表,将所述表对象存储在所有数据库节点中;
13、响应于所述表对象为分片表,根据第一预设分片键算法生成分片键,并根据预设分片算法生成分片表,存储在多个数据库节点中。
14、可选地,所述第一预设分片键算法包括:
15、获取预设分片键策略,所述预设分片键策略包括关联优先策略;
16、响应于所述预设分片键策略为关联优先策略,判断所述表对象的sql语句是否包含关联字段;
17、若包含关联字段,则将关联字段中频次最高者设置为分片键;若未包含关联字段,则判断所述sql语句是否包含过滤字段;
18、在所述sql语句包含过滤字段的情况下,将过滤字段中频次最高者设置为分片键;在所述sql语句未包含所述过滤字段的情况下,根据第二预设分片键算法生成分片键。
19、其中,所述第二预设分片键算法包括:
20、判断所述表对象是否有主键;
21、若有主键,则以主键为分片键;若无主键,则判断所述表对象是否有唯一索引;
22、在所述表对象有唯一索引的情况下,以唯一索引为分片键;在所述表对象无唯一索引的情况下,以第一列为分片键。
23、可选地,所述第一预设分片键算法包括:
24、获取预设分片键策略,所述预设分片键策略包括过滤优先策略;
25、响应于所述预设分片键策略为过滤优先策略,判断所述表对象的sql语句是否包含过滤字段;
26、若包含过滤字段,则将过滤字段中频次最高者设置为分片键;若未包含过滤字段,则判断所述sql语句是否包含关联字段;
27、在所述sql语句包含关联字段的情况下,将关联字段中频次最高者设置为分片键;在所述sql语句未包含关联字段的情况下,根据第二预设分片键算法生成分片键。
28、其中,所述第二预设分片键算法包括:
29、判断所述表对象是否有主键;
30、若有主键,则以主键为分片键;若无主键,则判断所述表对象是否有唯一索引;
31、在所述表对象有唯一索引的情况下,以唯一索引为分片键;在所述表对象无唯一索引的情况下,以第一列为分片键。
32、可选地,所述第一预设分片键算法还包括:
33、响应于所述预设分片键策略为空,获取所述表对象的查询语句的执行时间;
34、判断所述查询语句的执行时间是否大于第五预设阈值;
35、若是,将所述预设分片键策略设置为关联优先策略;
36、若否,获取所述查询语句的服务器资源占用率;
37、若所述服务器资源占用大于第六预设阈值,则将所述预设分片键策略设置为关联优先策略;
38、若所述服务器资源占用小于或等于第六预设阈值,则将所述预设分片键策略设置为过滤优先策略。
39、可选地,所述预设分片算法包括:
40、判断所述分片键是否为自增列,且所述表对象的sql语句中包含范围查询;
41、若是,以范围分片算法生成分片;
42、若否,以hash分片算法生成分片。
43、可选地,所述的获取待处理数据库的表对象的第一信息,包括:
44、获取所述表对象、所述表对象的元数据、所述表对象的关联表以及所述待处理数据库的第一预设时间内的日志信息;
45、根据所述日志信息,对所述表对象的sql语句进行特征提取,以至少得到插入语句频次、查询语句频次、关联字段频次、过滤字段频次、范围查询频次信息。
46、根据本专利技术的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一种的分布式数据库的分片方法的步骤。
47、根据本专利技术的又一个方面,还提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上述任一种的分布式数据库的分片方法的步骤。
48、本专利技术的分布式数据库的分片方法,通过获取待处理数据库的表对象的相关信息,根据表对象的业务特点确定不同的分片策略并进行分片。具体地,对于写入业务较少的小表,可设置为单表,以便于分布式数据库的管理和查询。对于读取业务较多的小表,可设置为广播表,可以避免数据的网络传输延迟,从而提高分布式数据库的查询性能。将其它表对象设置为分片表,即将其分割成多个部分(分片),并将这些分片分布在不同的服务器节点上,从而提高数据的读写性能和可扩展性,能够有效地分散负载,提高查询效率。通过合理分片,将热点数据均匀分布在各个分片上,避免某些节点过载而其他节点资源未充分利用的情况,可优化查询效率、减少响应时间,并提升整体系统处理能力。
49、根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
本文档来自技高网...【技术保护点】
1.一种分布式数据库的分片方法,其特征在于,包括:
2.根据权利要求1所述的分片方法,其特征在于,所述的根据所述第一信息,确定所述表对象的分片类型,包括:
3.根据权利要求1所述的分片方法,其特征在于,所述的根据所述分片类型,对所述表对象进行分片,包括:
4.根据权利要求3所述的分片方法,其特征在于,所述第一预设分片键算法包括:
5.根据权利要求3所述的分片方法,其特征在于,所述第一预设分片键算法包括:
6.根据权利要求4或5所述的分片方法,其特征在于,所述第一预设分片键算法还包括:
7.根据权利要求3所述的分片方法,其特征在于,所述预设分片算法包括:
8.根据权利要求1所述的分片方法,其特征在于,所述的获取待处理数据库的表对象的第一信息,包括:
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的分布式数据库的分片方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器
...【技术特征摘要】
1.一种分布式数据库的分片方法,其特征在于,包括:
2.根据权利要求1所述的分片方法,其特征在于,所述的根据所述第一信息,确定所述表对象的分片类型,包括:
3.根据权利要求1所述的分片方法,其特征在于,所述的根据所述分片类型,对所述表对象进行分片,包括:
4.根据权利要求3所述的分片方法,其特征在于,所述第一预设分片键算法包括:
5.根据权利要求3所述的分片方法,其特征在于,所述第一预设分片键算法包括:
6.根据权利要求4或5所述的分片方法,其特征在于,所述第一预设分...
【专利技术属性】
技术研发人员:张蓓蓓,阮青松,
申请(专利权)人:中电科金仓北京科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。