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

技术编号:34627981 阅读:14 留言:0更新日期:2022-08-20 09:36
本发明专利技术提出一种支持灵活动态分片的分布式数据库架构及其实现方法,分布式数据库包括:(1)数据库表分为大表和小表;小表数据存储在统一计算与小表存储层;大表数据存储在分布式大表存储层;(3)统一计算与小表存储层主处理节点模块包括小表存储管理器、分布式大表存储管理器、全局事务管理器、日志合并及逻辑复制管理器、动态分片管理器、SQL计算器、高可用管理器、热分片管理器等模块。(4)数据库对不同节点组上字段均相同的表设置灵活的分片方式;(5)数据库支持表的动态分片,包括支持表的存储层和分片策略在数据库运行期间动态改变,以及支持副本节点组的动态增减。本发明专利技术如此设计,提高了分布式数据库多种复杂查询的效率及其灵活性。其灵活性。其灵活性。

【技术实现步骤摘要】
支持灵活动态分片的分布式数据库架构及其实现方法


[0001]本专利技术涉及数据库领域,尤其涉及支持灵活动态分片的分布式数据库架构及其实现方法。

技术介绍

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

技术实现思路

[0007]为克服上述现有技术的不足,本专利技术提供了支持灵活动态分片的分布式数据库架构及其实现方法。
>[0008]为实现上述目的,本专利技术提供的技术方案如下:
[0009]根据本说明书一个或多个实施例的第一方面,提出一种支持灵活动态分片的分布式数据库架构及其实现方法,内容包括:
[0010]分布式数据库分为统一计算与小表存储层、分布式大表存储层。
[0011]数据库表可设置为大表或小表;大表指表的数据量大,而小表指表的数据量相对小。所述小表数据存储在统一计算与小表存储层;所述大表存储在分布式大表存储层。
[0012]统一计算与小表存储层主处理节点功能模块包括小表存储管理器、分布式大表存储管理器、全局事务管理器、日志合并及逻辑复制管理器、动态分片管理器、步骤SQL计算器、高可用管理器、热分片管理器模块。
[0013]数据库对不同节点组上字段均相同的表设置灵活的分片方式。
[0014]数据库支持表的动态分片,包括支持表的存储层和分片策略在数据库运行期间动态改变,以及支持副本节点组的动态增减。所述支持动态分片的分布式数据库架构及其实现方法详述如下:
[0015]所述统一计算与小表存储层主处理节点中,由所述小表存储管理器管理统一计算与小表存储层的节点和数据,包括统一计算与小表存储层元数据管理、节点管理等;由所述分布式大表存储管理器管理分布式大表存储层的节点和数据,包括分布式大表存储层元数据管理、节点管理等。
[0016]所述小表存储管理器和所述分布式大表存储管理器均支持存储节点的动态增减。
[0017]分布式数据库系统节点分为主节点和副本节点。
[0018]所述主节点包括统一计算与小表存储层的主处理节点和分布式大表存储层的主存储节点。
[0019]所述副本节点包括所述统一计算与小表存储层的副本存储节点和所述分布式大表存储层的副本存储节点。
[0020]所述统一计算与小表存储层的主处理节点和副本存储节点均存储小表数据;每个所述小表的一份完整的数据存储在所述统一计算与小表存储层的单个节点上。
[0021]所述分布式大表存储层的主存储节点和副本存储节点均存储大表数据;每个所述大表的一份完整数据存储在所述分布式大表存储层的多个节点;
[0022]对节点分组,组成节点组;主处理节点和所有主存储节点组成一组,称为主节点组;若干副本节点组成一组,称为副本节点组;一个副本节点组包含统一计算与小表存储层的一个副本存储节点和分布式大表存储层的若干副本存储节点。
[0023]一个所述节点组存储数据库全部表的完整数据;
[0024]所述副本节点组的组个数至少为2个。
[0025]一个所述节点组的分布式大表存储层的节点数至少为2个。
[0026]所述统一计算与小表存储层主处理节点中,所述全局事务管理器对所述主节点组的多个节点的事务进行全局管理;所述全局事务管理器支持事务的快照隔离,通过汇集多个节点的事务,对事务进行冲突检测和排序,保证多节点分布式事务的一致性。
[0027]所述统一计算与小表存储层主处理节点中,由步骤SQL计算器处理数据库全部步骤SQL计算,根据步骤SQL任务,从所述统一计算与小表存储层节点或所述分布式大表存储层节点获取相关数据并进行处理。
[0028]对所述主节点组和副本节点组上字段均相同的表,设置灵活的分片方式,包括以下情况:
[0029](1)一个所述小表的数据存储在统一计算与小表存储层;对所述节点组上字段均相同的小表,可以设置为不分片;或者对全部所述节点组字段相同的小表,任意两个小表之间,可设置为不同的分片策略,或设置为相同的分片策略;
[0030](2)一个所述大表的数据存储在分布式大表存储层;对所述全部节点组上字段均相同的大表,任意两个大表之间,可设置为不同的分片策略,或设置为相同的分片策略;
[0031]分片策略设置包括分片键和分片算法的设置;分片键或分片算法不同,则分片策略不同;分片键为单个分片键或多个分片键;分片算法用=、>=、<=、>、<、BETWEEN AND、和IN等条件作为分片规则,自定义分片逻辑;
[0032]一种分片策略是针对某种特定的查询优化设置;分片策略设置原则是使得对特定的查询,获得查询结果在表分片的数据量最少,降低数据聚合的时间复杂度,提升数据查询效率。
[0033]所述主节点和副本节点之间的数据同步采用逻辑复制方式,由所述日志合并及逻辑复制管理器来管理实施;
[0034]所述日志合并及逻辑复制管理器提取多个主节点的更新日志并进行日志合并,采取日志流合并的方式,保证合并日志的快照一致性,以合并的日志创建统一的更新日志数据源;作为副本节点执行逻辑复制更新的数据源;
[0035]所述日志合并及逻辑复制管理器向每个副本节点发送逻辑复制更新的消息;
[0036]每个副本节点从统一的更新日志源获取本节点对应的更新消息,执行相应的表更新,并提供逻辑复制执行过程的会话保证机制。
[0037]数据库支持表的动态分片,包括所述副本节点组的表的分片方式可在数据库运行期间动态改变,情形之一为所述副本节点组的一个表的一份副本由一种分片方式改为另一种分片方式,该表副本仍然存储在所述统一计算与小表存储层或所述分布式大表存储层,包括情况如下:
[0038](1)一个表的一份副本存储在所述统一计算与小表存储层,由不分片改为一种新的分片策略,副本仍存储在所述统一计算与本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种支持灵活动态分片的分布式数据库架构,其特征在于:分布式数据库分为统一计算与小表存储层、分布式大表存储层;数据库表分为大表和小表;所述小表数据存储在所述统一计算与小表存储层;所述大表数据存储在所述分布式大表存储层;所述统一计算与小表存储层主处理节点功能模块包括小表存储管理器、分布式大表存储管理器、全局事务管理器、日志合并及逻辑复制管理器、动态分片管理器、SQL计算器、高可用管理器、热分片管理器模块。2.根据权利要求1所述的支持灵活动态分片的分布式数据库架构,其特征在于:数据库表可设置为大表或小表;大表指表的数据量大,而小表指表的数据量相对小;表的设置支持以下设置方式:(1)手动设置;(2)通过一定的规则自动设置;所述小表数据存储在所述统一计算与小表存储层;所述大表数据存储在所述分布式大表存储层。3.根据权利要求1所述的支持灵活动态分片的分布式数据库架构,其特征在于:在所述统一计算与小表存储层主处理节点中,由所述小表存储管理器管理所述统一计算与小表存储层的节点和数据;由所述分布式大表存储管理器管理所述分布式大表存储层的节点和数据;所述小表存储管理器和所述分布式大表存储管理器均支持存储节点的动态增减。4.根据权利要求1所述的支持灵活动态分片的分布式数据库架构,其特征在于:分布式数据库系统节点分为主节点和副本节点;所述主节点包括统一计算与小表存储层的主处理节点和分布式大表存储层的主存储节点;所述副本节点包括统一计算与小表存储层的副本存储节点和分布式大表存储层的副本存储节点;所述统一计算与小表存储层的主处理节点和所述统一计算与小表存储层的副本存储节点均存储小表数据;每个小表的一份完整的数据存储在所述统一计算与小表存储层的单个节点上;所述分布式大表存储层的主存储节点和所述分布式大表存储层的副本存储节点都存储大表数据;每个大表的一份完整数据存储在分布式大表存储层的多个节点;对节点分组,组成节点组;所述主处理节点和所有主存储节点组成一组,称为主节点组;若干副本节点组成一组,称为副本节点组;一个副本节点组包含统一计算与小表存储层的一个副本存储节点和分布式大表存储层的若干副本存储节点;一个节点组存储数据库全部表的完整数据;主节点组上的表称为主表;副本节点组的组个数至少为2个;一个节点组的分布式大表存储层的节点数至少为2个。5.根据权利要求1所述的支持灵活动态分片的分布式数据库架构,其特征在于:在所述统一计算与小表存储层主处理节点中,所述全局事务管理器对主节点组的多个节点的事务进行全局管理;所述全局事务管理器支持事务的快照隔离,保证多节点分布式事务的一致性。
6.根据权利要求1所述的支持灵活动态分片的分布式数据库架构,其特征在于:在所述统一计算与小表存储层主处理节点中,所述SQL计算器处理数据库所有SQL计算,根据SQL任务,从统一计算与小表存储层节点或分布式大表存储层节点获取相关数据并进行处理。7.一种实现上述权利1

6中任一一种支持灵活动态分片的分布式数据库的方法,其特征在于:数据库对不同节点组上字段均相同的表设置灵活的分片方式;数据库支持表的动态分片,包括支持表的存储层和分片策略在数据库运行期间动态改变,以及支持副本节点组的动态增减。8.根据权利要求7所述的支持灵活动态分片的分布式数据库实现方法,其特征在于:对所述主节点组和副本节点组上字段均相同的表,设置灵活的分片方式,包括以下情况:(1)一个所述小表的数据存储在所述统一计算与小表存储层;对所述全部节点组上字段均相同的小表,可以设置为不分片;或者对所述全部节点组字段相同的小表,任意两个小表之间,可设置为不同的分片策略,或设置为相同的分片策略;(2)一个所述大表的数据存储在所述分布式大表存储层;对所述全部节点组上字段均相同的大表,任意两个大表之间,可设置为不同的分片策略,或设置为相同的分片策略;所述分片策略设置包括分片键和分片算法的设置;所述分片键或所述分片算法不同,则所述分片策略不同;所述一种分片策略是针对某种特定的查询优化设置;分片策略设置原则是使得对特定的查询,获得查询结果在表分片的数据量最少,降低数据聚合的时间复杂度,提升数据查询效率。9.根据权利要求7所述的支持灵活动态分片的分布式数据库架构及其实现方法,其特征在于:所述主节点和所述副本节点之间的数据同步采用逻辑复制方式,由所述日志及所述逻辑复制管理器来管理实施;所述日志合并及逻辑复制管理器提取多个主节点的更新日志并进行日志合并,保证合并日志的快照一致性,以合并的日志创建统一的更新日志源,作为副本节点执行逻辑复制更新数据源,并向每个副本节点发送逻辑复制更新消息;每个副本节点从统一的更新日志源获取本节点对应的更新消息,执行相应的表更新。10.根据权利要求7所述的支持灵活动态分片的分布式数据库实现方法,其特征在于:数据库支持表的动态分片,包括所述副本节点组的表的分片方式可在数据库运行间动态改变,情形之一为所述副本节点组的一个表的一份副本由一种分片方式改为另一种分片方式,该表副本仍然存储在所述统一计算与小表存储层或所述分布式大表存储层,包括以下情形:(1)一个表的一份副本存储在所述统一计算与小表存储层,由不分片改为一种新的分片策略,副本仍存储在所述统一计算与小表存储层;(2)一个表的一份副本存储在所述统一计算与小表存储层,由一种分片策略改为一种新的分片策略,副本仍存储在所述统一计算与小表存储层;
(3)一个表的一份副本存储在所述分布式大表存储层,由一种分片策略改为一种新的分片策略,副本仍存储在所述分布式大表存储层;以上改变由所述动态分片管理器管理实施,流程为:一个表的一份副本的数据需要改变分片时,停止对所述该副本所在节点组全部表的查询与更新;由所述动态分片管理器通过管理针对该副本的数据提取和数据重新分布,在所述该副本所在节点组创建该旧副本的一份新的分片策略的新副本;所述新副本创建期间,所述动态分片管理器与所述日志合并及逻辑复制管理器通信,获取并保存新副本所在节点组全部表在新副本创建期间需要执行的事务更新的日志;所述新副本创建完成后,将数据库表的所述旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将表的所述旧副本移除;所述动态分片管理器根据所述新副本所在节点组全部表需要执行的更新日志,更新日志包括所述新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,直至与数据库运行状态达到同步;达到同步后,所述动态分片管理器配合数据库其他相关模块,将所述新副本所在节点组全部表加入到运行的数据库系统中,即恢复对所述节点组所有表的查询与更新。11.根据权利要求7所述的支持灵活动态分片的分布式数据库实现方法,其特征在于:数据库支持表的动态分片,包括支持一个表的所述主节点组的表分片方式在数据库运行期间动态改变,即主表由一种分片方式改为另一种新的分片方式,该主表仍然存储在所述统一计算与小表存储层或所述分布式大表存储层,包括情况如下:(1)一个表的所述主表数据存储在所述统一计算与小表存储层,由不分片改为一种新的分片策略,数据仍存储在所述统一计算与小表存储层;(2)一个表的所述主表数据存储在所述统一计算与小表存储层,由一种分片策略改为一种新的分片策略,数据仍存储在所述统一计算与小表存储层;(3)一个表的所述主表数据存储在所述分布式大表存储层,由一种分片策略改为一种新的分片策略;以上改变由所述动态分片管理器管理实施,流程为:设置一个表的所述主表的新的分片策略;停止对所述该表的一份副本所在的所述副本节点组全部表的查询与更新;由所述动态分片管理器通过管理针对该副本数据提取和数据重新分布,在所述主节点组创建该所述主表的一份新的分片策略的新主表;并在所述该副本所在的副本节点组创建一份与所述主表新的分片策略相同的新副本;所述新副本创建期间,所述动态分片管理器与日志合并及所述逻辑复制管理器通信,获取并保存所述该副本所在节点组全部表在新副本创建期间需要执行的事务更新的日志;所述新副本创建完成后,将所述数据库表C的旧副本替换为所述新副本,将相应的数据结构等信息进行更新,并将所述表C的旧副本移除;所述动态分片管理器根据所有副本节点组全部表需要执行的更新日志,更新日志包括新副本创建过程的更新日志和完成创建后的同步期间的新增更新日志,管理实施所述新副本所在节点组全部表的更新,同时对所述新主表实施与新主表相同分片策略的表副本的相
同更新,直至与数据库运行状态达到同步;达到同步后,所述动态分片管理器配合数据库其他相关模块,数据库将所述主节点组的新主表替换对应的所述旧主表,数据库开始对所述新主表进行查询与更新;由所述动态分片管理器管理实施,将所述新副本的新分片策略改变为原来的分片策略,实现流程参考上述(1)中所述副本分片策略改变的流程。12.根据权利要求7所述的方法,其特征在于:数据库支持表的动态分片,包括支持一个表由...

【专利技术属性】
技术研发人员:曾焱方跃坚何震瀛苗旭成刘兵
申请(专利权)人:九有技术深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1