支持灵活动态分片的分布式数据库架构及其实现方法与流程

文档序号:31189056发布日期:2022-08-19 23:08阅读:109来源:国知局
支持灵活动态分片的分布式数据库架构及其实现方法与流程

1.本发明涉及数据库领域,尤其涉及支持灵活动态分片的分布式数据库架构及其实现方法。


背景技术:

2.现有分布式数据库一般采用计算和存储分离架构,且通过提供多副本增强数据的可用性,并使用分片技术提高数据库查询处理和优化的效率,进而缓解单一服务器的压力。现有分布式数据库产品存在以下问题:
3.(1)分片策略单一,即多个副本字段均相同的表的分片策略都是相同的;
4.(2)分片策略设置后,大多不支持运行过程中的动态改变;数据库运行过程中动态改变分片时,需要从旧分片提取表数据,在数据提取过程中,可能会有针对表数据的新的写操作,从而产生读写冲突问题,需要设计相应的冲突解决方法。
5.现有方法提出在从旧分片进行数据提取创建新分片的过程中,数据库的写操作在新的分片执行,该方法存在的问题是不能解决读写冲突,如果写操作对应的新分片的数据还未从旧分片完成提取,则写操作不能执行。当一个写操作不能执行,需要判断后续的操作与该写操作的关系来决定后续操作是否能够执行,进一步的,不能执行的写操作可能会累积,从而无法处理导致产生错误。
6.综上所述,现有分布式数据库进行多种不同类型的复杂查询的处理和优化时,往往只对一种查询性能较高,而对其他查询性能都较低,且缺乏运行过程中的灵活性。


技术实现要素:

7.为克服上述现有技术的不足,本发明提供了支持灵活动态分片的分布式数据库架构及其实现方法。
8.为实现上述目的,本发明提供的技术方案如下:
9.根据本说明书一个或多个实施例的第一方面,提出一种支持灵活动态分片的分布式数据库架构及其实现方法,内容包括:
10.分布式数据库分为统一计算与小表存储层、分布式大表存储层。
11.数据库表可设置为大表或小表;大表指表的数据量大,而小表指表的数据量相对小。所述小表数据存储在统一计算与小表存储层;所述大表存储在分布式大表存储层。
12.统一计算与小表存储层主处理节点功能模块包括小表存储管理器、分布式大表存储管理器、全局事务管理器、日志合并及逻辑复制管理器、动态分片管理器、步骤sql计算器、高可用管理器、热分片管理器模块。
13.数据库对不同节点组上字段均相同的表设置灵活的分片方式。
14.数据库支持表的动态分片,包括支持表的存储层和分片策略在数据库运行期间动态改变,以及支持副本节点组的动态增减。所述支持动态分片的分布式数据库架构及其实现方法详述如下:
15.所述统一计算与小表存储层主处理节点中,由所述小表存储管理器管理统一计算与小表存储层的节点和数据,包括统一计算与小表存储层元数据管理、节点管理等;由所述分布式大表存储管理器管理分布式大表存储层的节点和数据,包括分布式大表存储层元数据管理、节点管理等。
16.所述小表存储管理器和所述分布式大表存储管理器均支持存储节点的动态增减。
17.分布式数据库系统节点分为主节点和副本节点。
18.所述主节点包括统一计算与小表存储层的主处理节点和分布式大表存储层的主存储节点。
19.所述副本节点包括所述统一计算与小表存储层的副本存储节点和所述分布式大表存储层的副本存储节点。
20.所述统一计算与小表存储层的主处理节点和副本存储节点均存储小表数据;每个所述小表的一份完整的数据存储在所述统一计算与小表存储层的单个节点上。
21.所述分布式大表存储层的主存储节点和副本存储节点均存储大表数据;每个所述大表的一份完整数据存储在所述分布式大表存储层的多个节点;
22.对节点分组,组成节点组;主处理节点和所有主存储节点组成一组,称为主节点组;若干副本节点组成一组,称为副本节点组;一个副本节点组包含统一计算与小表存储层的一个副本存储节点和分布式大表存储层的若干副本存储节点。
23.一个所述节点组存储数据库全部表的完整数据;
24.所述副本节点组的组个数至少为2个。
25.一个所述节点组的分布式大表存储层的节点数至少为2个。
26.所述统一计算与小表存储层主处理节点中,所述全局事务管理器对所述主节点组的多个节点的事务进行全局管理;所述全局事务管理器支持事务的快照隔离,通过汇集多个节点的事务,对事务进行冲突检测和排序,保证多节点分布式事务的一致性。
27.所述统一计算与小表存储层主处理节点中,由步骤sql计算器处理数据库全部步骤sql计算,根据步骤sql任务,从所述统一计算与小表存储层节点或所述分布式大表存储层节点获取相关数据并进行处理。
28.对所述主节点组和副本节点组上字段均相同的表,设置灵活的分片方式,包括以下情况:
29.(1)一个所述小表的数据存储在统一计算与小表存储层;对所述节点组上字段均相同的小表,可以设置为不分片;或者对全部所述节点组字段相同的小表,任意两个小表之间,可设置为不同的分片策略,或设置为相同的分片策略;
30.(2)一个所述大表的数据存储在分布式大表存储层;对所述全部节点组上字段均相同的大表,任意两个大表之间,可设置为不同的分片策略,或设置为相同的分片策略;
31.分片策略设置包括分片键和分片算法的设置;分片键或分片算法不同,则分片策略不同;分片键为单个分片键或多个分片键;分片算法用=、》=、《=、》、《、between and、和in等条件作为分片规则,自定义分片逻辑;
32.一种分片策略是针对某种特定的查询优化设置;分片策略设置原则是使得对特定的查询,获得查询结果在表分片的数据量最少,降低数据聚合的时间复杂度,提升数据查询效率。
33.所述主节点和副本节点之间的数据同步采用逻辑复制方式,由所述日志合并及逻辑复制管理器来管理实施;
34.所述日志合并及逻辑复制管理器提取多个主节点的更新日志并进行日志合并,采取日志流合并的方式,保证合并日志的快照一致性,以合并的日志创建统一的更新日志数据源;作为副本节点执行逻辑复制更新的数据源;
35.所述日志合并及逻辑复制管理器向每个副本节点发送逻辑复制更新的消息;
36.每个副本节点从统一的更新日志源获取本节点对应的更新消息,执行相应的表更新,并提供逻辑复制执行过程的会话保证机制。
37.数据库支持表的动态分片,包括所述副本节点组的表的分片方式可在数据库运行期间动态改变,情形之一为所述副本节点组的一个表的一份副本由一种分片方式改为另一种分片方式,该表副本仍然存储在所述统一计算与小表存储层或所述分布式大表存储层,包括情况如下:
38.(1)一个表的一份副本存储在所述统一计算与小表存储层,由不分片改为一种新的分片策略,副本仍存储在所述统一计算与小表存储层;
39.(2)一个表的一份副本存储在所述统一计算与小表存储层,由一种分片策略改为一种新的分片策略,副本仍存储在所述统一计算与小表存储层;
40.(3)一个表的一份副本存储在所述分布式大表存储层,由一种分片策略改为一种新的分片策略,副本仍存储在所述分布式大表存储层;
41.以上改变由所述动态分片管理器管理实施,流程为:
42.设置一个表的一份副本的新的分片策略;
43.停止对所述副本所在节点组全部表的查询与更新;
44.由所述动态分片管理器通过管理针对所述副本数据提取和数据重新分布,在所述副本所在节点组创建该旧副本的一份新的分片策略的新副本;
45.所述新副本创建期间,所述动态分片管理器与日志合并及逻辑复制管理器通信,获取并保存新副本所在节点组全部表在新副本创建期间需要执行的事务更新的日志;
46.所述新副本创建完成后,将数据库表的所述旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将表的所述旧副本移除;
47.所述动态分片管理器根据所述新副本所在节点组全部表需要执行的更新日志,更新日志包括所述新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,直至与数据库运行状态达到同步;
48.达到同步后,所述动态分片管理器配合数据库其他相关模块,将所述新副本所在节点组全部表加入到运行的数据库系统中,即恢复对节点组所有表的查询与更新;
49.数据库支持表的动态分片,包括支持一个表的主节点组的表分片方式在数据库运行期间动态改变,即该主表由一种分片方式改为另一种新的分片方式,该主表仍然存储在统一计算与小表存储层或分布式大表存储层,包括情况如下:
50.一个表的所述主表数据存储在所述统一计算与小表存储层,由不分片改为分片,数据仍存储在所述统一计算与小表存储层;
51.一个表的所述主表数据存储在所述统一计算与小表存储层,由一种分片策略改为另一种分片策略,数据仍存储在所述统一计算与小表存储层;
52.一个表的所述主表数据存储在所述分布式大表存储层,由一种分片策略改为另一种分片策略;
53.以上改变由所述动态分片管理器管理实施,流程为:
54.设置一个表的主表的新的分片策略;
55.停止对所述表的一份副本所在副本节点组全部表的查询与更新;
56.由所述动态分片管理器通过管理针对该副本数据提取和数据重新分布,在所述主节点组创建所述主表的一份新的分片策略的新主表;并在所述副本所在副本节点组创建一份与主表新的分片策略相同的新副本。
57.步骤s904,所述新副本创建期间,所述动态分片管理器与所述日志合并及逻辑复制管理器通信,获取并保存所述副本所在节点组全部表在新副本创建期间需要执行的事务更新的日志;
58.所述新副本创建完成后,将所述数据库表c的旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将所述表c的旧副本移除;
59.所述动态分片管理器根据所有副本节点组全部表需要执行的更新日志,更新日志包括新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,同时对所述新主表实施与新主表相同分片策略的表副本的相同更新,直至与数据库运行状态达到同步;
60.达到同步后,所述动态分片管理器配合数据库其他相关模块,数据库将所述主节点组的新主表替换对应的所述旧主表,数据库开始对所述新主表进行查询与更新;
61.由所述动态分片管理器管理实施,将所述新副本的新分片策略改变为原来的分片策略,流程参考步骤s801至步骤s807的所述副本分片策略改变流程。
62.数据库支持表的动态分片,包括支持一个表由所述统一计算与小表存储层改到所述分布式大表存储层存储,包括情况如下:
63.(1)一个表的全部数据存储在所述统一计算与小表存储层,存储由所述统一计算与小表存储层改到所述分布式大表存储层存储,该表由小表变为大表,该表的主表和每份副本由不分片改为一种分片策略;对该表的不同副本设置不同的分片策略。该表的主表的分片策略与该表的其中一份副本的分片策略相同。
64.(2)一个表的全部数据存储在统一计算与小表存储层,存储由所述统一计算与小表存储层改到所述分布式大表存储层存储,该表由小表变为大表,该表的副本的分片策略可以设置为不改变,或设置为一种新的分片策略;该表的主表的分片策略与该表的其中一份副本的分片策略相同。
65.以上改变由所述动态分片管理器管理实施,流程为:
66.一个表c的全部数据需要由所述统一计算与小表存储层改到所述分布式大表存储层存储时,停止对所述所有副本节点组的全部表的查询与更新;
67.由所述动态分片管理器通过管理针对该表全部副本的数据提取和数据重新分布,在所述表每份副本所在节点组创建该旧副本的一份存储到分布式大表存储层节点的分片策略的新副本,同时在所述表的主节点组创建该旧表的一份存储到分布式大表存储层的主存储节点的设置的分片策略的新主表;
68.所述新副本创建期间,所述动态分片管理器与所述日志合并及逻辑复制管理器通
信,获取并保存所述所有副本节点组的全部表在新副本创建期间需要执行的事务更新的日志,以及保存所述主存储节点的新主表在创建过程中需要执行的事务更新的日志所述。
69.所述新副本创建完成后,将所述数据库表c的全部旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将所述表c的全部旧副本移除;
70.所述动态分片管理器根据所述所有副本节点组全部表需要执行的更新日志,更新日志包括所述新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,同时对所述新主表实施与新主表相同分片策略的表副本的相同更新,直至与数据库运行状态达到同步;
71.达到同步后,所述动态分片管理器配合数据库其他相关模块,将所述所有副本节点组的全部表加入到运行的数据库系统中,并将所述主节点组的新主表替换掉对应的旧主表,即恢复对所述节点组所有表的查询与更新。
72.数据库支持表的动态分片,包括支持所述副本节点组的动态增减,包括以下情况:
73.(1)在数据库运行期间增加一个副本节点组,由所述分布式大表存储管理器和所述动态分片管理器等协同管理实施,流程为:
74.设置所述新增副本节点组的全部节点信息和全部的表相关信息,包括设置每个表的新的分片策略;
75.假设所述新增副本节点组为组p,将所述新增副本节点组p的1个节点加入所述统一计算与小表存储层,组p的其它节点加入所述分布式大表存储层;
76.停止对另一个副本节点组全部表的查询与更新,假设该副本节点组为组a;
77.由所述动态分片管理器通过对所述副本节点组a上的全部表数据提取和数据重新分布,在所述新增副本节点组p节点上,创建数据库全部表的新的分片策略的新副本;
78.在所述副本节点组p创建全部表的新副本期间,所述动态分片管理器获取并保存所述新增副本节点组p和副本节点组a全部表在此期间需要执行的事务更新的日志;
79.在所述副本节点组p创建全部表的新副本完成后,所述动态分片管理器根据所述新增副本节点组p和副本节点组a全部表需要执行的更新日志,更新日志包括在所述副本节点组p创建全部表的新副本期间保存的更新日志和完成复制后的同步期间的新增更新日志,管理实施所述副本组的表更新,直至与数据库运行状态达到同步;
80.达到同步后,所述动态分片管理器配合数据库其他相关模块,将所述新增副本节点组p和所述副本节点组a的全部节点加入到运行的数据库系统中,即数据库可对所述副本节点组p和所述副本节点组a的全部表进行查询与更新。
81.(2)所述副本节点组可在数据库运行期间减少,由所述分布式大表存储管理器和所述动态分片管理器等协同管理实施,流程为:
82.一个副本节点组在数据库运行期间减少时,停止对该副本节点组上全部表的查询与更新,并将该副本节点组上全部节点从数据库移除。
83.在对数据库进行查询时,对查询的步骤sql语句进行解析,判断和选择对应的最优的主分片/副本分片,主分片为存储在主节点上的表的分片,副本分片为存储在副本节点上的表的分片。判断选择规则如下:
84.(1)查询语句条件仅包含单个表的分片键,则选择该分片键对应的主分片/副本分片;
85.(2)查询语句条件包含多个表的分片键,基于查询计划器计算对不同分片键策略的主分片/副本分片的查询时间复杂度,选择时间复杂度最低的主分片/副本分片;
86.(3)查询语句条件不包含任何表的分片键,或者查询语句没有条件,优先选择表没有分片的主节点组的表/副本节点组的表,否则按照负载均衡原则选择主节点组的表/副本节点组的表。
87.根据选择的所述主分片/副本分片,或所述主节点组的表/副本节点组的表对应的节点信息,在节点进行查询获得结果数据。
88.对每个主节点,包括主处理节点和主存储节点,由高可用管理器配置从节点,主、从节点之间采用流式复制方式;
89.如果一个主节点失败,所述高可用管理器负责将数据库快速从该主节点切换到从节点;
90.如果一个副本节点x失败,即节点x不再可用,由所述高可用管理器和所述动态分片管理器等协同处理,流程为:
91.假设所述副本节点x所在节点组为组a,由所述高可用管理器选择,数据库停止对组a的全部表的数据查询与更新,并且数据库停止对另一个副本节点组b的全部表的查询与更新;
92.所述高可用管理器和数据库其他模块协同工作,如所述小表存储管理器或所述分布式大表存储管理器等,在数据库系统增加一个新的节点y,节点y替换节点x,通过从所述副本节点组b的节点上提取相应的表数据和重新分布数据,在节点y上创建所述副本节点x上存储的全部表。
93.在所述节点y上的表创建期间,所述高可用管理器获取并保存所述组a和组b的全部表在复制期间需要执行的事务更新的日志;
94.在所述节点y上的表创建完后,所述高可用管理器根据所述组a和组b的全部表需要执行的保存的更新日志,更新日志包括在节点y上的表创建期间保存的更新日志和在所述节点y上的表创建后的同步期间的新增更新日志,管理实施所述组a和组b的全部节点的表数据的更新,直至与数据库运行状态达到同步;
95.达到同步后,所述高可用管理器配合数据库其他相关模块,将所述组a和组b的全部节点加入到运行的数据库系统中,数据库恢复对所述组a和组b的全部表的查询与更新。
96.数据库热分片管理器支持热分片管理,流程为:
97.设置所述分布式大表存储层表分片数据查询频率的阀值;
98.定期统计所述分布式大表存储层分片数据表的分片数据查询频率;
99.当所述分布式大表存储层分片数据某表的分片a的数据查询频率超过设定的阀值,则在所述主处理节点设置存储区域,在该存储区域通过数据复制创建一份该分片相同的热分片,流程为:
100.停止对所述表的分片a所在节点组的全部表的查询与更新;
101.由所述热分片管理器管理该热分片数据的复制,在所述主处理节点设置的存储区域创建所述分片a的一份相同的热分片副本b;
102.数据复制期间,所述热分片管理器获取并保存所述分片a所在节点组的全部表和所述分片b在复制期间需要执行的事务更新的日志;
103.所述热分片b数据复制完后,所述热分片管理器根据保存的所述分片a所在节点组的全部表和所述热分片b需要执行的事务更新日志,更新日志包括数据复制期间保存的更新日志和完成复制后的同步期间的新增更新日志,管理实施所述分片a所在节点组的全部表和所述热分片b的更新,直至与数据库运行状态达到同步;
104.达到同步后,所述热分片管理器配合数据库其他相关模块,将所述分片a所在节点组的全部表和所述热分片b加入到运行的数据库系统中,数据库可对所述分片a和所述热分片b进行查询与更新。完成此步骤后,所述热分片b创建成功。
105.创建热分片后,对所述主处理节点上的热分片数据实时更新同步;当所述热分片对应的分布式大表存储层的分片产生数据更新,该数据更新的结果实时发送给热分片管理器,由热分片管理器管理实施对所述热分片相同的数据更新。
106.当数据库处理步骤sql查询时,如果需要获取所述热分片对应的数据,则从所述主处理节点获取;
107.当所述热分片数据查询频率低于设定的阀值,将所述分片数据从所述主处理节点删除。
108.与现有技术相比,本发明的积极效果为:本发明通过设计支持灵活动态分片的分布式数据库架构及其实现方法,支持分布式数据库的可扩展性、高可用性等特性,提高了分布式数据库多种复杂查询的效率,并且提高了分布式数据库的灵活性。
附图说明:
109.图1是本说明书示例性实施例提供的一种支持动态分片的分布式数据库架构示意图。
110.图2是本说明书示例性实施例提供的日志合并与逻辑复制流程示意图。
111.图3是本说明书示例性实施例提供的表存储层不改变的表副本动态分片方法示意图。
112.图4是本说明书示例性实施例提供的表存储层不改变的主表动态分片方法示意图。
113.图5是本说明书示例性实施例提供的表存储层改变的动态分片方法示意图。
114.图6是本说明书示例性实施例提供的新增副本节点组方法示意图。
115.图7是本说明书示例性实施例提供的副本节点失败处理方法示意图。
116.图8是本说明书示例性实施例提供的热分片设置及管理方法示意图。
117.图9是本说明书示例性实施例提供的热分片创建方法示意图。
具体实施方式:
以下通过特定的具体实例并结合附图说明本发明的实施策略,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
118.本发明提出一种支持灵活动态分片的分布式数据库架构及其实现方法,内容包括:
119.分布式数据库分为统一计算与小表存储层、分布式大表存储层。
120.数据库表可设置为大表或小表;大表指表的数据量大,而小表指表的数据量相对小。
121.实施例子1如下:某分布式数据库的表初始分类设置后,其中一个大表为保险单据数据表,该大表属性项包括保单金额、客户性别、客户年收入等,一个小表为客户基本信息表,该小表属性项包括客户姓名、年龄、性别、年收入、婚姻状况等信息。
122.所述小表数据存储在统一计算与小表存储层;所述大表存储在分布式大表存储层。
123.统一计算与小表存储层主处理节点功能模块包括小表存储管理器、分布式大表存储管理器、全局事务管理器、日志合并及逻辑复制管理器、动态分片管理器、步骤sql计算器、高可用管理器、热分片管理器等模块。
124.数据库对不同节点组上字段均相同的表设置灵活的分片方式。
125.数据库支持表的动态分片,包括支持表的存储层和分片策略在数据库运行期间动态改变,以及支持副本节点组的动态增减。
126.所述统一计算与小表存储层主处理节点中,由所述小表存储管理器管理统一计算与小表存储层的节点和数据,包括统一计算与小表存储层元数据管理、节点管理等;由所述分布式大表存储管理器管理分布式大表存储层的节点和数据,包括分布式大表存储层元数据管理、节点管理等。
127.所述小表存储管理器和所述分布式大表存储管理器均支持存储节点的动态增减。
128.分布式数据库系统节点分为主节点和副本节点。
129.所述主节点包括统一计算与小表存储层的主处理节点和分布式大表存储层的主存储节点。
130.所述副本节点包括所述统一计算与小表存储层的副本存储节点和所述分布式大表存储层的副本存储节点。
131.所述统一计算与小表存储层的主处理节点和副本存储节点均存储小表数据;每个所述小表的一份完整的数据存储在所述统一计算与小表存储层的单个节点上。
132.所述分布式大表存储层的主存储节点和副本存储节点均存储大表数据;每个所述大表的一份完整数据存储在所述分布式大表存储层的多个节点;
133.对节点分组,组成节点组;主处理节点和所有主存储节点组成一组,称为主节点组;若干副本节点组成一组,称为副本节点组;一个副本节点组包含统一计算与小表存储层的一个副本存储节点和分布式大表存储层的若干副本存储节点。
134.一个所述节点组存储数据库全部表的完整数据;
135.所述副本节点组的组个数至少为2个。
136.一个所述节点组的分布式大表存储层的节点数至少为2个。
137.所述统一计算与小表存储层主处理节点中,所述全局事务管理器对所述主节点组的多个节点的事务进行全局管理;所述全局事务管理器支持事务的快照隔离,通过汇集多个节点的事务,对事务进行冲突检测和排序,保证多节点分布式事务的一致性。
138.所述统一计算与小表存储层主处理节点中,由步骤sql计算器处理数据库全部步骤sql计算,根据步骤sql任务,从所述统一计算与小表存储层节点或所述分布式大表存储
层节点获取相关数据并进行处理。
139.本发明上述优选的一个实施例如图1所示,分布式数据库主节点组包括主处理节点1_1、主存储节点1_2、

主存储节点1_,分别配置一个从节点1_、存储从节点1_、

存储从节点1_。副本节点组共有m-1组(m)。第2副本节点组包括副本存储节点2_1、

副本存储节点2_。以此类推。到第m组副本节点组包括副本存储节点m_1、

副本存储节点2_。这里、、

均为大于2的自然数。主处理节点和每个主存储节点均配置一个从节点。
140.如所述实施例子1:设置m=3,n
′1==

=nm;分布式数据库包括1个主节点组,2个副本节点组;主节点组或副本节点组的节点数均为4个。从节点共有4个。分布式数据库系统的总节点数为16个。
141.如所述实施例子1,主处理节点1_1上分布式数据库软件模块包括小表存储管理器、分布式大表存储管理器、步骤sql计算器、全局事务管理器、日志合并及逻辑复制管理器、动态分片管理器、高可用管理器、热分片管理器等。
142.对所述主节点组和副本节点组上字段均相同的表,设置灵活的分片方式,包括以下情况:
143.(1)一个所述小表的数据存储在统一计算与小表存储层;对所述全部节点组上字段均相同的小表,可以设置为不分片;或者对所述全部节点组字段相同的小表,任意两个小表之间,可设置为不同的分片策略,或设置为相同的分片策略;
144.(2)一个所述大表的数据存储在分布式大表存储层;对所述全部节点组上字段均相同的大表,任意两个大表之间,可设置为不同的分片策略,或设置为相同的分片策略;
145.分片策略设置包括分片键和分片算法的设置;分片键或分片算法不同,则分片策略不同;分片键为单个分片键或多个分片键;分片算法用=、》=、《=、》、《、between and、和in等条件作为分片规则,自定义分片逻辑;
146.一种分片策略是针对某种特定的查询优化设置;分片策略设置原则是使得对特定的查询,获得查询结果在表分片的数据量最少,降低数据聚合的时间复杂度,提升数据查询效率。
147.如所述实施例子1,主节点组的保险单据大表分片键设置为保险金额,采用基于分片键取值范围的分片算法,设置如下分片键取值范围区间:(1)保险金额《=10万,对应分片p1;(2)保险金额》10且保险金额《=100万,对应分片p2;(3)保险金额》100万,对应分片p3。
148.如所述实施例子1,设置分片p1存储在主存储节点1_2,分片p2存储在主存储节点1_3,分片p3存储在主存储节点1_4。
149.如所述实施例子1,主节点组分为3个分片,如果查询语句为查询保险金额100万以上的客户数据记录,则查询的数据记录在分片p4。
150.如所述实施例子1,第2副本节点组的保险单据大表的分片键设置为客户性别,分为2个分片:(1)投保客户性别为男性,对应分片p4;(2)投保客户性别为女性,对应分片p5。
151.如所述实施例子1,设置分片p4存储在副本存储节点2_2,分片p5存储在副本存储节点2_3。
152.如所述实施例子1,第3副本节点组的保险单据大表的分片键设置为客户性别,分为2个分片:(1)投保客户性别为男性,对应分片p6;(2)投保客户性别为女性,对应分片p7。
153.如所述实施例子1,设置分片p6存储在副本存储节点3_2,分片p7存储在副本存储
节点3_3。
154.所述主节点和副本节点之间的数据同步采用逻辑复制方式,由所述日志合并及逻辑复制管理器来管理实施;
155.所述日志合并及逻辑复制管理器提取多个主节点的更新日志并进行日志合并,采取日志流合并的方式,保证合并日志的快照一致性,以合并的日志创建统一的更新日志数据源;作为副本节点执行逻辑复制更新的数据源;
156.所述日志合并及逻辑复制管理器向每个副本节点发送逻辑复制更新的消息;
157.每个副本节点从统一的更新日志源获取本节点对应的更新消息,执行相应的的表更新,并提供逻辑复制执行过程的会话保证机制。
158.本说明书示例性实施例提供的日志合并与逻辑复制方法示意图如图2所示。日志合并及逻辑复制管理器通过日志提取组件从主处理节点1_1、主存储节点1_2、

主存储节点1_提取已提交事务日志,然后进行日志合并,合并后的日志进行统一存储,日志发送组件将统一存储的日志通过逻辑复制消息的形式发送给所有副本节点。
159.数据库支持表的动态分片,包括所述副本节点组的表的分片方式可在数据库运行期间动态改变,情形之一为所述副本节点组的一个表的一份副本由一种分片方式改为另一种分片方式,该表副本仍然存储在所述统一计算与小表存储层或所述分布式大表存储层,包括情况如下:
160.(1)一个表的一份副本存储在所述统一计算与小表存储层,由不分片改为一种新的分片策略,副本仍存储在所述统一计算与小表存储层;
161.(2)一个表的一份副本存储在所述统一计算与小表存储层,由一种分片策略改为一种新的分片策略,副本仍存储在所述统一计算与小表存储层;
162.(3)一个表的一份副本存储在所述分布式大表存储层,由一种分片策略改为一种新的分片策略,副本仍存储在所述分布式大表存储层;
163.以上改变由所述动态分片管理器管理实施,流程如图3所示,描述如下:
164.步骤s801,设置一个表的一份副本的新的分片策略;
165.步骤s802,停止对所述副本所在节点组全部表的查询与更新;
166.步骤s803,由所述动态分片管理器通过管理针对该副本数据提取和数据重新分布,在所述副本所在节点组创建该旧副本的一份新的分片策略的新副本;
167.步骤s804,所述新副本创建期间,所述动态分片管理器与日志合并及逻辑复制管理器通信,获取并保存新副本所在节点组全部表在新副本创建期间需要执行的事务更新的日志;
168.步骤s805,所述新副本创建完成后,将数据库表的所述旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将表的所述旧副本移除;
169.步骤s806,所述动态分片管理器根据所述新副本所在节点组全部表需要执行的更新日志,更新日志包括所述新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,直至与数据库运行状态达到同步;
170.步骤s807,达到同步后,所述动态分片管理器配合数据库其他相关模块,将所述新副本所在节点组全部表加入到运行的数据库系统中,即恢复对节点组所有表的查询与更新;
171.如所述实施例子1,第3副本节点组的保险单据大表的分片键设置改为客户年收入,采用基于分片键取值范围的分片算法,设置如下分片键取值范围区间:(1)客户年收入《=10万,对应分片p6;(2)客户年收入》10且客户年收入《=50万,对应分片p7;(3)客户年收入》50万,对应分片p8。
171.如所述实施例子1,第3副本节点组的保险单据大表分片策略改变过程由步骤s801至步骤s807实施,实施过程中,设置分片p6存储在副本存储节点3_2,分片p7存储在副本存储节点3_3,分片p8存储在副本存储节点3_4。
172.数据库支持表的动态分片,包括支持一个表的主节点组的表分片方式在数据库运行期间动态改变,即该主表由一种分片方式改为另一种新的分片方式,该主表仍然存储在统一计算与小表存储层或分布式大表存储层,包括情况如下:
173.一个表的所述主表数据存储在所述统一计算与小表存储层,由不分片改为分片,数据仍存储在所述统一计算与小表存储层;
174.一个表的所述主表数据存储在所述统一计算与小表存储层,由一种分片策略改为另一种分片策略,数据仍存储在所述统一计算与小表存储层;
175.一个表的所述主表数据存储在所述分布式大表存储层,由一种分片策略改为另一种分片策略;
176.以上改变由所述动态分片管理器管理实施,流程如图4所示,描述如下:
177.步骤s901,设置一个表的主表的新的分片策略;
178.步骤s902,停止对所述表的一份副本所在副本节点组全部表的查询与更新;
179.步骤s903,由所述动态分片管理器通过管理针对该副本数据提取和数据重新分布,在所述主节点组创建该主表的一份新的分片策略的新主表;并在所述副本所在副本节点组创建一份与主表新的分片策略相同的新副本。
180.步骤s904,所述新副本创建期间,所述动态分片管理器与所述日志合并及逻辑复制管理器通信,获取并保存所述副本所在节点组全部表在新副本创建期间需要执行的事务更新的日志;
181.步骤s905,所述新副本创建完成后,将所述数据库表c的旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将所述表c的旧副本移除;
182.步骤s906,所述动态分片管理器根据所有副本节点组全部表需要执行的更新日志,更新日志包括新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,同时对所述新主表实施与新主表相同分片策略的表副本的相同更新,直至与数据库运行状态达到同步;由于主表的分片策略与一个表副本的分片策略是相同的,因此对主表的更新与对该表副本的更新操作是相同的,这样可以避免对主表的更新涉及主节点其他表的更新操作,从而避免数据库运行时的读写冲突问题。
183.步骤s907,达到同步后,所述动态分片管理器配合数据库其他相关模块,数据库将所述主节点组的新主表替换对应的所述旧主表,数据库开始对所述新主表进行查询与更新;
184.步骤s908,由所述动态分片管理器管理实施,将所述新副本的新分片策略改变为原来的分片策略,流程参考步骤s801至步骤s807的所述副本分片策略改变流程。
185.数据库支持表的动态分片,包括支持一个表由所述统一计算与小表存储层改到所述分布式大表存储层存储,包括情况如下:
186.(1)一个表的全部数据存储在所述统一计算与小表存储层,存储由所述统一计算与小表存储层改到所述分布式大表存储层存储,该表由小表变为大表,该表的主表和每份副本由不分片改为一种分片策略;对该表的不同副本设置不同的分片策略。该表的主表的分片策略与该表的其中一份副本的分片策略相同。
187.(2)一个表的全部数据存储在统一计算与小表存储层,存储由所述统一计算与小表存储层改到所述分布式大表存储层存储,该表由小表变为大表,该表的副本的分片策略可以设置为不改变,或设置为一种新的分片策略;该表的主表的分片策略与该表的其中一份副本的分片策略相同。
188.以上改变由所述动态分片管理器管理实施,流程如图5所示,描述如下:
189.步骤s1001,一个表c的全部数据需要由所述统一计算与小表存储层改到所述分布式大表存储层存储时,停止对所述所有副本节点组的全部表的查询与更新;
190.步骤s1002,由所述动态分片管理器通过管理针对该表全部副本的数据提取和数据重新分布,在所述表每份副本所在节点组创建该旧副本的一份存储到分布式大表存储层节点的分片策略的新副本,同时在所述表的主节点组创建该旧表的一份存储到分布式大表存储层的主存储节点的设置的分片策略的新主表;
191.步骤s1003,所述新副本创建期间,所述动态分片管理器与所述日志合并及逻辑复制管理器通信,获取并保存所述所有副本节点组的全部表在新副本创建期间需要执行的事务更新的日志,以及保存所述主存储节点的新主表在创建过程中需要执行的事务更新的日志所述。
192.步骤s1004,所述新副本创建完成后,将所述数据库表c的全部旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将所述表c的全部旧副本移除;
193.步骤s1005,所述动态分片管理器根据所述所有副本节点组全部表需要执行的更新日志,更新日志包括所述新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,同时对所述新主表实施与新主表相同分片策略的表副本的相同更新,直至与数据库运行状态达到同步;
194.步骤s1006,达到同步后,所述动态分片管理器配合数据库其他相关模块,将所述所有副本节点组的全部表加入到运行的数据库系统中,并将所述主节点组的新主表替换掉对应的旧主表,即恢复对所述节点组所有表的查询与更新。
195.如所述例子1,数据库小表客户信息基本表原来存储在统一计算与小表存储层,为不分片方式,改为在分布式大表存储层存储,且对表的主表和副本设置新的分片策略;分片策略改变的过程由步骤s1001至步骤s1006实施。
196.如所述例子1,设置客户信息基本表由小表改为大表,主表的分片键设置为客户年收入,采用基于分片键取值范围的分片算法,设置如下分片键取值范围区间:(1)客户年收入《=10万,对应分片p9;(2)客户年收入》10且客户年收入《=50万,对应分片p10;(3)客户年收入》50万,对应分片p11。
197.如所述例子1,设置分片p9存储在主存储节点1_2,分片p10存储在主本存储节点1_3,分片p11存储在主本存储节点1_4。如所述例子1,客户信息基本表由小表改为大表,第2副
本节点组该表的分片键设置为客户年收入,采用基于分片键取值范围的分片算法,设置如下分片键取值范围区间:(1)客户年收入《=10万,对应分片p12;(2)客户年收入》10且客户年收入《=50万,对应分片p13;(3)客户年收入》50万,对应分片p14。如所述例子1,设置分片p12存储在副本存储节点2_2,分片p13存储在主本存储节点2_3,分片p14存储在主本存储节点2_4。
198.如所述例子1,客户信息基本表由小表改为大表,第3副本节点组该表的分片键设置为婚姻状况,设置2个分片:(1)客户婚姻状态为未婚,对应分片p15;(3)客户婚姻状态为已婚,对应分片p16。
199.如所述例子1,设置分片p15存储在副本存储节点3_2,分片p16存储在主本存储节点3_3。
200.数据库支持表的动态分片,包括支持所述副本节点组的动态增减,包括以下情况:
201.(1)在数据库运行期间增加一个副本节点组,由所述分布式大表存储管理器和所述动态分片管理器等协同管理实施,流程如图6所示,描述如下:
202.步骤s1101,设置所述新增副本节点组的全部节点信息和全部的表相关信息,包括设置每个表的新的分片策略;
203.步骤s1102,假设所述新增副本节点组为组p,将所述新增副本节点组p的1个节点加入所述统一计算与小表存储层,组p的其它节点加入所述分布式大表存储层;
204.步骤s1103,停止对另一个副本节点组全部表的查询与更新,假设该副本节点组为组a;
205.步骤s1104,由所述动态分片管理器通过对所述副本节点组a上的全部表数据提取和数据重新分布,在所述新增副本节点组p节点上,创建数据库全部表的新的分片策略的新副本;
206.步骤s1105,在所述副本节点组p创建全部表的新副本期间,所述动态分片管理器获取并保存所述新增副本节点组p和副本节点组a全部表在此期间需要执行的事务更新的日志;
207.步骤s1106,在所述副本节点组p创建全部表的新副本完成后,所述动态分片管理器根据所述新增副本节点组p和副本节点组a全部表需要执行的更新日志,更新日志包括在所述副本节点组p创建全部表的新副本期间保存的更新日志和完成复制后的同步期间的新增更新日志,管理实施所述副本组的表更新,直至与数据库运行状态达到同步;
208.步骤s1107,达到同步后,所述动态分片管理器配合数据库其他相关模块,将所述新增副本节点组p和所述副本节点组a的全部节点加入到运行的数据库系统中,即数据库可对所述副本节点组p和所述副本节点组a的全部表进行查询与更新。
209.(2)所述副本节点组可在数据库运行期间减少,由所述分布式大表存储管理器和所述动态分片管理器等协同管理实施,流程为:
210.一个副本节点组在数据库运行期间减少时,停止对该副本节点组上全部表的查询与更新,并将该副本节点组上全部节点从数据库移除。
211.在对数据库进行查询时,对查询的步骤sql语句进行解析,判断和选择对应的最优的主分片/副本分片,主分片为存储在主节点上的表的分片,副本分片为存储在副本节点上的表的分片。判断选择规则如下:
212.(1)查询语句条件仅包含单个表的分片键,则选择该分片键对应的主分片/副本分片;
213.(2)查询语句条件包含多个表的分片键,基于查询计划器计算对不同分片键策略的主分片/副本分片的查询时间复杂度,选择时间复杂度最低的主分片/副本分片;
214.(3)查询语句条件不包含任何表的分片键,或者查询语句没有条件,优先选择表没有分片的主节点组的表/副本节点组的表,否则按照负载均衡原则选择主节点组的表/副本节点组的表。
215.根据选择的所述主分片/副本分片,或所述主节点组的表/副本节点组的表对应的节点信息,在节点进行查询获得结果数据。
216.对每个主节点,包括主处理节点和主存储节点,由高可用管理器配置从节点,主、从节点之间采用流式复制方式;
217.如果一个主节点失败,所述高可用管理器负责将数据库快速从该主节点切换到从节点。
218.如果一个副本节点x失败,即节点x不再可用,由所述高可用管理器和所述动态分片管理器等协同处理,流程如图7所示,描述如下:
219.步骤s1301,假设所述副本节点x所在节点组为组a,由所述高可用管理器选择,数据库停止对组a的全部表的数据查询与更新,并且数据库停止对另一个副本节点组b的全部表的查询与更新;
220.步骤s1302,所述高可用管理器和数据库其他模块协同工作,如所述小表存储管理器或所述分布式大表存储管理器等,在数据库系统增加一个新的节点y,节点y替换节点x,通过从所述副本节点组b的节点上提取相应的表数据和重新分布数据,在节点y上创建所述副本节点x上存储的全部表。
221.步骤s1303,在所述节点y上的表创建期间,所述高可用管理器获取并保存所述组a和组b的全部表在复制期间需要执行的事务更新的日志;
222.步骤s1304,在所述节点y上的表创建完后,所述高可用管理器根据所述组a和组b的全部表需要执行的保存的更新日志,更新日志包括在节点y上的表创建期间保存的更新日志和在所述节点y上的表创建后的同步期间的新增更新日志,管理实施所述组a和组b的全部节点的表数据的更新,直至与数据库运行状态达到同步;
223.步骤s1305,达到同步后,所述高可用管理器配合数据库其他相关模块,将所述组a和组b的全部节点加入到运行的数据库系统中,数据库恢复对所述组a和组b的全部表的查询与更新。
224.数据库热分片管理器支持热分片管理,流程如图8所示,描述如下:
225.步骤s1401,设置所述分布式大表存储层表分片数据查询频率的阀值;
226.步骤s1402,定期统计所述分布式大表存储层分片数据表的分片数据查询频率;
227.步骤s1403,当所述分布式大表存储层分片数据某表的分片a的数据查询频率超过设定的阀值,则在所述主处理节点设置存储区域,在该存储区域通过数据复制创建一份该分片相同的热分片,流程如图9所示,描述如下:
228.步骤s1403.1,停止对所述表的分片a所在节点组的全部表的查询与更新;
229.步骤s1403.2,由所述热分片管理器管理该热分片数据的复制,在所述主处理节点
设置的存储区域创建所述分片a的一份相同的热分片副本b;
230.步骤s1403.3,数据复制期间,所述热分片管理器获取并保存所述分片a所在节点组的全部表和所述分片b在复制期间需要执行的事务更新的日志;
231.步骤s1403.4,所述热分片b数据复制完后,所述热分片管理器根据保存的所述分片a所在节点组的全部表和所述热分片b需要执行的事务更新日志,更新日志包括数据复制期间保存的更新日志和完成复制后的同步期间的新增更新日志,管理实施所述分片a所在节点组的全部表和所述热分片b的更新,直至与数据库运行状态达到同步;
232.步骤s1403.5,达到同步后,所述热分片管理器配合数据库其他相关模块,将所述分片a所在节点组的全部表和所述热分片b加入到运行的数据库系统中,数据库可对所述分片a和所述热分片b进行查询与更新。完成此步骤后,所述热分片b创建成功。
233.步骤s1404,创建热分片后,对所述主处理节点上的热分片数据实时更新同步;当所述热分片对应的分布式大表存储层的分片产生数据更新,该数据更新的结果实时发送给热分片管理器,由热分片管理器管理实施对所述热分片相同的数据更新。
234.步骤s1405,当数据库处理步骤sql查询时,如果需要获取所述热分片对应的数据,则从所述主处理节点获取;
235.如所述例子1,假设对p2分片的查询频率超过设定的阀值,则可在主节点创建p2对应的热分片ph2;当sql查询需要获取ph2对应的分片数据,则从主节点获取。
236.步骤s1406,当所述热分片数据查询频率低于设定的阀值,将所述分片数据从所述主处理节点删除。
237.除上述以外,还需要说明的是在本说明书中所谈到的“一个实施例”、“另一个实施例”、“实施例”等,指的是结合该实施例描述的具体特征、结构或者特点包括在本技术概括性描述的至少一个实施例中。在说明书中多个地方出现同种表述不是一定指的是同一个实施例。进一步来说,结合任一实施例描述一个具体特征、结构或者特点时,所要主张的是结合其他实施例来实现这种特征、结构或者特点也落在本发明的范围内。
238.尽管这里参照本发明的多个解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本技术公开的原则范围和精神之内。更具体地说,在本技术公开、附图和权利要求的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1