一种分布式数据库数据分片后动态调整方法及装置转让专利

申请号 : CN201410409582.9

文献号 : CN104239417B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕迅高宏达陈文亭朱宏军

申请人 : 天津南大通用数据技术股份有限公司

摘要 :

本发明提供一种分布式数据库数据分片后动态调整方法,包括:生成新的分片规则,同时保留旧的分片规则;根据旧的分片规则取出分布式数据库所有涉及的每个节点内的分片数据,在按照新的分片规则重新分布到各个节点;重新分布到各个节点后,删除旧的分片规则,只留新的分片规则;其中,根据所有的分片规则进行读操作,根据最新的分片规则进行写操作。本发明具有的优点和积极效果是:保障了分布式数据库的高可用性和扩展性,能够使得分布式数据库在节点调整时继续提供服务;同时,在后台整理完成后不影响分布式数据库的性能,有效的保障了分布式数据库对集群节点的利用率。

权利要求 :

1.一种分布式数据库数据分片后动态调整方法,其特征在于包括:生成新的分片规则,同时保留旧的分片规则;

根据旧的分片规则取出分布式数据库所有涉及的每个节点内的分片数据,再按照新的分片规则重新分布到各个节点;

重新分布到各个节点后,删除旧的分片规则,只留新的分片规则;

其中,分布式数据库收到的数据操作请求与分片规则队列内的分片规则相关联,根据所有的分片规则进行读操作,根据最新的分片规则进行写操作。

2.根据权利要求1所述的分布式数据库数据分片后动态调整方法,其特征在于包含:将同一数据的分片规则加入一个分片规则队列,当生成一个新的分片规则,并将其加入到对应的分片规则队列内,其中分片规则队列内的多个分片规则按照时间顺序排列;

按照分片规则队列内分片规则的时间顺序,根据其内最初的分片规则取出涉及的每个节点内的分片数据,再按照最新的分片规则重新分布到各个节点,当最初的分片规则涉及的所有节点的数据全部按照最新的分片规则分布到各个节点内,删除最初的分片规则;

重复上个步骤直到分片规则队列内仅剩最新的分片规则后,完成数据的动态调整。

3.根据权利要求2所述的分布式数据库数据分片后动态调整方法,其特征在于:所述分布式数据库收到的数据操作请求若为读操作,获取对应分片规则队列内的所有分片规则,将根据所有分片规则获取的节点信息进行汇总;若为写操作,取对应分片规则队列内最新的分片规则,根据最新的分片规则执行操作。

4.根据权利要求2所述的分布式数据库数据分片后动态调整方法,其特征在于:所述同一数据的分片规则中的数据与分片规则之间的逻辑关系是指,数据按照特征名或某一属性名称与分片规则建立对应关系。

5.根据权利要求1或2所述的分布式数据库数据分片后动态调整方法,其特征在于:当生成一个新的分片规则后,立即进行数据动态调整,或制定任务调度在指定时间内执行,或是由用户手动执行进行操作。

6.根据权利要求1所述的分布式数据库数据分片后动态调整方法,其特征在于:所述分布式数据库收到创建分片请求和修改分片请求时,均会生成新的分片规则。

7.根据权利要求1至4任一所述的分布式数据库数据分片后动态调整方法,其特征在于:所述分片规则包括:哈希分片,或列表分片,或范围分片。

8.一种分布式数据库数据分片后动态调整装置,其特征在于包含:分片规则管理器,进行分片规则的添加、删除;

分片规则生成器,用于生成新的分片规则,并将其加入分片规则管理器;

数据调整执行器,根据旧的分片规则取出分布式数据库所有涉及的每个节点内的分片数据,再按照新的分片规则重新分布到各个节点;

第一接收器,接收读数据操作请求,根据所有的分片规则进行读操作,并汇总结果;

第二接收器,接收写数据操作请求,根据最新的分片规则进行写操作。

9.根据权利要求8所述的分布式数据库数据分片后动态调整装置,其特征在于:所述分片规则管理器为存储分片规则的列表管理器,按时间顺序对分片规则进行排序,进行分片规则的添加、删除。

说明书 :

一种分布式数据库数据分片后动态调整方法及装置

技术领域

[0001] 本发明属于分布式数据库领域,尤其是涉及一种分布式数据库数据分片后动态调整方法及装置。

背景技术

[0002] 随着信息化技术的快速发展,大型数据库系统需要处理和存储的数据量越来越大,计算越来越复杂,对于性能的挑战也越来越大,性能,可靠性,可扩展性的需求就会越来越强烈,这个时候一个集中式的数据库显然已经满足不了需求了。为了适应应用业务的发展需要,分布式数据库系统将数据分布在计算机网络的不同节点上,而这些数据在逻辑上属于同一个系统。
[0003] 为了保证更高的性能和更大的扩展性,分布式数据库采用了数据分片技术。应用数据按照一定的分片规则分布到不同的数据节点上,当应用系统进行精确查询或小范围查询时,根据分片规则,该查询仅仅影响涉及的分片节点,而其他的节点可以继续对外提供服务,使得分布式数据库可以对外提供更高的并发访问性能。同时,相近的数据按照统一的规则部署到一个节点上,也使得应用数据的维护和管理更为方便。
[0004] 在传统分片方法中,存在着一个问题需要解决:由于业务系统的需要,当分片规则发生变更时,需要对所有涉及到的数据进行整理,由于此时涉及到大量的数据搬运工作,数据库的服务会停止服务。同时,由于该数据因为数据量过大,整理时无法提供事务保证,整理过程中一旦出现故障,有可能造成所有数据的损坏。
[0005] 如图1,在分布式数据库系统中,数据表为分布表,其中字段1的数据类型为正整数。系统运行初期只包含两个节点,数据表以字段1的奇偶作为分片规则将数据表分布在节点1和节点2上,如字段1为奇值则该行数据存储于节点1上,否则存储在节点2上。随着业务的发展,数据规模越来越大,原有的两个节点无法满足业务系统对于数据存储和访问的需要,于是决定添加一个节点,新的分片规则为对字段一用数值3取模,如取模值为1,则该行存储于节点1之上,如果取模值为2,则该行存储于节点2之上,否则存储于节点上。
[0006] 为了使得数据分片的调整后数据能够被查询到,分布式数据库还需要执行图2所示的以下过程:
[0007] 步骤201,分布式数据库系统停止对外服务,避免由于新插入数据的堆积造成数据不一致情况的产生;
[0008] 步骤202,将节点1和节点2内的数据全部导出。由于节点内原有数据是按照旧分片规则分片的,所以旧有数据无法按照新的分片规则查询到,需要将这些数据导出;
[0009] 步骤203,将上一步骤导出的数据合并,消除掉旧分片规则造成的影响;
[0010] 步骤204,将节点1和节点2上的原有数据删除;
[0011] 步骤205,将步骤203合并的数据,按照新的分片规则导入到节点1、节点2、节点3之内;
[0012] 步骤206,数据更新完毕,分布式数据库系统可以对外提供服务;
[0013] 在以上步骤中,有很长一段时间,分布式数据库系统无法对外提供服务,同时,数据的导出需要占用大量的物理存储设备。而且,一旦以上步骤发生异常情况,用户数据有可能造成无法挽回的损失。
[0014] 综上所述,现有分布式数据库的分片方法无法保证分布式数据库系统在数据分片调整时的高可用性和高可靠性,也无法提供分布式数据库系统所需要的节点动态伸缩性。

发明内容

[0015] 本发明要解决的问题是,尤其适合于数据分片后分布式数据库系统可在不停服务的情况下继续正确提供服务,同时通过后台执行数据整理不影响分布式数据库系统的性能,为分布式数据库节点的动态扩展提供了解决方法。
[0016] 为了解决上述技术问题,本发明采用的设计思想是:分布式数据库系统使用多个版本的分片规则,节点变更或分片规则变更后旧有的分片规则并不立即删除。写操作使用新版本的分片规则,读操作使用所有版本的分片规则。分布式数据库系统在后台自动针对新分片规则执行数据整理操作,当数据整理完毕后才删除旧版本的分片规则。
[0017] 为解决上述技术问题,本发明采用的技术方案是:
[0018] 一种分布式数据库数据分片后动态调整方法,包括:
[0019] 生成新的分片规则,同时保留旧的分片规则;
[0020] 根据旧的分片规则取出分布式数据库所有涉及的每个节点内的分片数据,在按照新的分片规则重新分布到各个节点;
[0021] 重新分布到各个节点后,删除旧的分片规则,只留新的分片规则;
[0022] 其中,分布式数据库收到的数据操作请求与分片规则队列内的分片规则相关联,根据所有的分片规则进行读操作,根据最新的分片规则进行写操作。
[0023] 进一步的,所述分布式数据库数据分片后动态调整方法包含:
[0024] 将同一数据的分片规则加入一个分片规则队列,当生成一个新的分片规则,并将其加入到对应的分片规则队列内,其中分片规则队列内的多个分片规则按照时间顺序排列;
[0025] 按照分片规则队列内分片规则的时间顺序,根据其内最初的分片规则取出涉及的每个节点内的分片数据,在按照最新的分片规则重新分布到各个节点,当最初的分片规则涉及的所有节点的数据全部按照最新的分片规则分布到各个节点内,删除最初的分片规则;
[0026] 重复上个步骤直到分片规则队列内仅剩最新的分片规则后,完成数据的动态调整。
[0027] 进一步的,所述分布式数据库收到的数据操作请求若为读操作,获取对应分片规则队列内的所有分片规则,将根据所有分片规则获取的节点信息进行汇总;若为写操作,取对应分片规则队列内最新的分片规则,根据最新的分片规则执行操作。
[0028] 进一步的,所述同一数据的分片规则中的数据与分片规则之间的逻辑关系是指,数据按照特征名或某一属性名称与分片规则建立对应关系。
[0029] 进一步的,当生成一个新的分片规则后,可立即进行数据动态调整,或制定任务调度在指定时间内执行,或是由用户手动执行进行操作。
[0030] 进一步的,所述分布式数据库收到创建分片请求和修改分片请求时,均会生成新的分片规则。
[0031] 进一步的,所述分片规则包括:哈希分片,或列表分片,或范围分片。
[0032] 本发明解决的另一个问题是提供一种分布式数据库数据分片后动态调整装置,包含:
[0033] 分片规则管理器,可进行分片规则的添加、删除;
[0034] 分片规则生成器,用于生成新的分片规则,并将其加入分片规则管理器;
[0035] 数据调整执行器,根据旧的分片规则取出分布式数据库所有涉及的每个节点内的分片数据,在按照新的分片规则重新分布到各个节点;
[0036] 第一接收器,接收读数据操作请求,根据所有的分片规则进行读操作,并汇总结果;
[0037] 第二接收器,接收写数据操作请求,根据最新的分片规则进行写操作。
[0038] 进一步的,所述分片规则管理器为存储分片规则的列表管理器,按时间顺序对分片规则进行排序,可进行分片规则的添加、删除。
[0039] 本发明具有的优点和积极效果是:保障了分布式数据库的高可用性和扩展性,能够使得分布式数据库在节点调整时继续提供服务;同时,在后台整理完成后不影响分布式数据库的性能,有效的保障了分布式数据库对集群节点的利用率。

附图说明

[0040] 图1为现有分布式数据库数据分片后分片调整流程图;
[0041] 图2为本发明分布式数据库系统数据分片后分片调整事例示意图;
[0042] 图3为本发明一实施例中分布式数据库中分片规则队列示意图;
[0043] 图4为本发明一实施例中分布式数据库写操作流程图;
[0044] 图5为本发明一实施例中分布式数据库读操作流程图;
[0045] 图6为本发明一实施例中分布式数据库后台数据整理流程图。

具体实施方式

[0046] 本发明的分布式数据库数据分片后动态调整方法的设计思想是:分布式数据库系统使用多个版本的分片规则,节点变更或分片规则变更后旧有的分片规则并不立即删除;分布式数据库系统在后台自动针对新分片规则执行数据整理操作,当数据整理完毕后才删除旧版本的分片规则。过程中分布式数据库收到的数据操作请求与分片规则队列内的分片规则相关联,写操作使用新版本的分片规则,读操作使用所有版本的分片规则。
[0047] 下面结合附图2至6对发明的方法做详细的说明。本发明一实施例以图2中所示的分片规则变更为例:分布式数据库的数据表初始分片规则为节点1内存储所有字段1取值为奇数的行,节点2存储所有字段1取值为偶数的行。变更后,节点1存储所有字段1取值除3取模为1的行,节点2存储所有字段1取值除3取模为2的行,节点3存储所有字段1取值除3取模为0的值。
[0048] 首先将分布式数据库的分片规则如除2取模,以队列的形式进行存储,一个队列对应着同一个数据的分片规则,当对数据分片规则的进行调整时,都生成一个新的分片规则如除3取模,并添加到该分片队列内,分片规则队列内的多个分片规则按照时间顺序排列;其中最初的除2取模、新的除3取模的分片规则存储在一个分片规则队列里面,所以字段1的分片规则队列的变化如图3所示,变更后,该分片规则队列原有分片规则不删除,只是添加了新的分片规则。当分布式数据库收到的创建分片请求和修改分片请求时,均是对数据分片规则的进行调整,会生成一个新的分片规则。
[0049] 本发明分布式数据库系统中一个队列对应着同一个数据的分片规则的数据与分片规则之间的逻辑关系是指,数据按照特征名或某一属性名称与分片规则建立对应关系;而本发可采用的分片规则可为哈希分片,或列表分片,或范围分片,所以逻辑关系为例如根据‘文件名称’字段将所有文件按照Hash方式均匀的分片到3个节点内;或是取数据表的‘创建时间’字段按照时间范围分片到5个节点内。
[0050] 按照分片规则队列内分片规则的时间顺序,根据其内最初的分片规则取出涉及的每个节点内的分片数据,在按照最新的分片规则重新分布到各个节点,当最初的分片规则涉及的所有节点的数据全部按照最新的分片规则分布到各个节点内,删除最初的分片规则;
[0051] 重复上个步骤直到分片规则队列内仅剩最新的分片规则后,完成数据的动态调整。
[0052] 任以图2中所示的分片规则变更为例:只需要根据除2取模的分片规则取出涉及的每个节点内的分片数据,在按照除3取模的分片规则重新分布到各个节点,分布完成后删除除2取模的分片规则,分片队列里只剩下除3取模的分片规则。
[0053] 为了使分布式数据库性能最好,可在适当的时间进行数据调整,例如生成一个新的分片规则后,可立即进行数据动态调整,或制定任务调度在指定时间内执行,或是由用户手动执行进行操作,根据配置方式而定。
[0054] 本发明上述步骤的具体实现时,分布式数据库的数据动态调整过程如图6所示:
[0055] 步骤601,分布式数据库系统启动后台数据整理;
[0056] 步骤602,分布式数据库针对存储的不同数据,在本例中判断字段1是否所有的数据整理按照上述步骤全部更新完毕,如果更新完毕执行步骤611,否则执行步骤603;
[0057] 步骤603,取出一个数据分片规则队列,在本例中取出字段1对应的数据分片规则队列;
[0058] 步骤604,判断分片规则队列内是否仅包含一个分片规则,如果仅有一个分片规则,表示数据调整完毕执行步骤602,否则执行步骤605;
[0059] 步骤605,在分片规则队列内,取出最旧分片规则,在本例中为除2取模;
[0060] 步骤606,数据调整在分布式数据库内的每个涉及节点内执行,节点的范围由上一步骤所或取的分片规则获得。在本例中,涉及的节点为节点1、节点2;判断是否所有节点的数据调整执行完成,如果完成则执行步骤610,否则执行步骤607;
[0061] 步骤607,根据上一步骤获取的节点列表,依次选取一个未执行的节点;
[0062] 步骤608,根据步骤605所获取的分片规则在节点内提取数据,例如在本例中分片规则为”if(‘字段1’%2==1)node=1;else node=2;”,则节点1应提取的数据的过滤条件为”if(‘字段1’%2==1)”;
[0063] 步骤609,将上一步骤导出的数据按照新的分片规则重新导入到分布式数据库系统内;在本例中为按照除3取模的分片规则重新导入到分布式数据库系统的3个节点内;
[0064] 步骤610,完成该分片规则的整理,删除分片规则;在本例中为删除分片列表中的除2取模;
[0065] 步骤611,完成整个数据重分布整理过程。
[0066] 任以图2中所示的分片规则变更为例:分布式数据库系统如何应对数据操作请求做详细描述:
[0067] 分布式数据库收到的数据操作请求为写入操作时,对分片数据的写入操作访问过程如图4所示:
[0068] 以分布式数据库执行查询”INSERT INTO‘数据表’(‘字段1’,‘字段2’)VALUES('275',1);”为例。
[0069] 步骤401,根据访问对象,查询数据‘数据表’对应的分片规则队列;
[0070] 步骤402,根据语句访问类型,‘INSERT’操作判定为写操作;
[0071] 步骤403,由于操作为写操作,所以从分片规则队列内获取最新的分片规则;该分片规则为:“if(‘字段1’%3==1)node=1;else if(‘字段1’%3==2)node=2;else node=3;”;
[0072] 步骤404,根据访问查询条件‘字段1’取值为‘275’,通过分片规则,判定该行数据应分片到节点2上;
[0073] 步骤405,将该查询语句在节点2上执行。
[0074] 分布式数据库收到的数据操作请求为读操作时,分布式数据库对分片数据的读操作访问过程如图5所示:
[0075] 以分布式数据库执行查询”SELECT*FROM‘数据表’WHERE‘字段1’='275';”为例。
[0076] 步骤501,根据访问对象,查询数据‘数据表’对应的分片规则队列;
[0077] 步骤502,根据语句访问类型,‘SELECT’操作判定为读操作;
[0078] 步骤503,由于操作为读操作,所以从分片规则队列内获取所有的分片规则;获取到的两条分片规则为:“if(‘字段1’%3==1)node=1;elseif(‘字段1’%3==2)node=2;else node=3;”和”if(‘字段1’%2==1)node=1;else node=2;”;
[0079] 步骤504,根据查询条件‘字段1’取值为‘275’,通过分片规则1,判定符合条件的数据可能位于节点1,根据分片规则2判定符合条件的数据可能位于节点2上;
[0080] 步骤505,将上一步骤获取的节点汇总,为节点1和节点2;
[0081] 步骤506,将该查询分别在节点1和节点2上执行;
[0082] 步骤507,将上一步骤获得查询结果集进行合并,并返回给用户。
[0083] 本发明的一实施例,分布式数据库数据分片后动态调整装置,包含:
[0084] 分片规则管理器,可进行分片规则的添加、删除;
[0085] 分片规则生成器,用于生成新的分片规则,并将其加入分片规则管理器;
[0086] 数据调整执行器,根据旧的分片规则取出分布式数据库所有涉及的每个节点内的分片数据,在按照新的分片规则重新分布到各个节点;
[0087] 第一接收器,接收读数据操作请求,根据所有的分片规则进行读操作,并汇总结果;
[0088] 第二接收器,接收写数据操作请求,根据最新的分片规则进行写操作。
[0089] 本发明的另一个实施例是在上述装置的基础上将所述分片规则管理器限定为存储分片规则的列表管理器,按时间顺序对分片规则进行排序,可进行分片规则的添加、删除。
[0090] 以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。