CN103345519B - 无共享分布式数据库的数据分布的方法和装置 - Google Patents
无共享分布式数据库的数据分布的方法和装置 Download PDFInfo
- Publication number
- CN103345519B CN103345519B CN201310292152.9A CN201310292152A CN103345519B CN 103345519 B CN103345519 B CN 103345519B CN 201310292152 A CN201310292152 A CN 201310292152A CN 103345519 B CN103345519 B CN 103345519B
- Authority
- CN
- China
- Prior art keywords
- data
- shrard
- stored
- identifier
- subintervals
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000013508 migration Methods 0.000 claims description 23
- 230000005012 migration Effects 0.000 claims description 23
- 238000007726 management method Methods 0.000 abstract description 6
- 238000004891 communication Methods 0.000 abstract description 5
- 238000013500 data storage Methods 0.000 abstract description 4
- 238000013467 fragmentation Methods 0.000 abstract 1
- 238000006062 fragmentation reaction Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 238000013523 data management Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种无共享分布式数据库的数据分布的方法和装置。涉及通信技术领域。解决了当数据库扩容后,导致大部分数据需要在shard之间进行迁移,降低了数据库的性能的问题。本发明具体可以包括:为数据库中包含的数据分片shard配置第一shard标识;根据第一shard标识将待存储数据存储至相应的shard中;数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。可应用于分布式数据库的管理中。
Description
技术领域
本发明涉及通信技术领域,尤其涉及无共享分布式数据库的数据分布的方法和装置。
背景技术
无共享分布式数据库思路是把数据分布到多个数据分片(shard)上,每个shard拥有自己的CPU(Central Processing Unit,中央处理器)和内存,管理自己的存储空间,各个shard之间不共享数据,应用通过分片管理(即数据的存储方式)找到正确的shard来进行数据读写。
现有技术中,可以通过区间划分的方式将待存储数据存储在相应的shard中。
具体的,可以根据MSISDN(移动台国际ISDN<Integrated Services DigitalNetwork,综合业务数字网>号码)的数值对待存储数据进行区间划分,划分后的区域的数量与shard的数量相同,然后,按照一定的准则将相应的区域的待存储数据存储至相应的shard中。
但是,采取这种数据存储方式后,每个shard管理多个区间,当数据库需要扩容时,即增加数据库中包含的shard的数量,这样,还需要对区间进行重新划分,将新划分好的区间分配给相应的shard,由于,各shard对应的区间变化了,因此,各shard中存储的数据也随之变化,导致大部分数据需要在shard之间进行迁移,降低了数据库的性能。
发明内容
本发明的实施例提供一种无共享分布式数据库的数据分布的方法和装置,解决了当数据库扩容后,导致大部分数据需要在shard之间进行迁移,降低了数据库的性能的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种无共享分布式数据库的数据分布的方法,包括:
为数据库中包含的数据分片shard配置第一shard标识;
根据所述第一shard标识将第一待存储数据存储至相应的shard中;
在数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;
将所述数据量最大的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储。
在第一种可能实现的方式中,所述为数据库中的数据分片shard配置第一shard标识包括:
将各shard的所述第一shard标识设置为整数,且不同shard的所述第一shard标识不同,相邻shard的所述第一shard标识的差为1;
所述根据所述第一shard标识将第一待存储数据存储至相应的shard中包括:
将所述第一待存储数据的移动台国际综合业务数字网号码MSISDN除以N,得到第一余数,所述N为所述数据库包括的shard的个数;
将所述第一待存储数据存储至与所述第一余数相同的所述第一shard标识对应的shard中。
结合第一方面或第一方面的第一种可能实现的方式,在第二种可能实现的方式中,根据数据量最大的shard为新增加的shard配置第二shard标识包括:
将所述第二shard标识确定为与所述数据量最大的shard对应的第一shard标识相同的shard标识。
结合第一方面或第一方面的第一种可能实现的方式或第二种可能实现的方式,在第三种可能实现的方式中,所述部分数据的数据量与所有数据的数据量的一半的差值小于预设值,所述所有数据为所述数据量最大的shard中存储的所有数据。
结合第一方面或第一方面的第一种可能实现的方式至第三种可能实现的方式中任意一种方式,在第四种可能实现的方式中,所述根据数据量最大的shard为新增加的shard配置第二shard标识之后,还包括:
根据所述第一shard标识和所述第二shard标识将第二待存储数据存储至相应的shard中;
若存在至少两个shard的shard标识相同,且所述第二待存储数据的第一余数与所述至少两个shard的shard标识相同,则所述根据shard标识将第二待存储数据存储至相应的shard中包括:
按照轮流的方式选择所述至少两个shard中的一个,并存储所述第二待存储数据;或者,
将待存储数据存储至所述至少两个shard中的数据量最小的shard中。
结合第一方面,在第五种可能实现的方式中,所述为数据库中的数据分片shard配置第一shard标识包括:
将预设参考区间平均分成N个子区间,每个子区间对应一个shard,所述N为所述数据库中包含的shard的数量,所述预设参考区间为整数区间;
将各shard的所述第一shard标识分别设置为对应子区间中的任意数值,不同shard的所述第一shard标识分别属于不同子区间;
所述根据所述第一shard标识将第一待存储数据存储至相应的shard中包括:
将所述第一待存储数据的MSISDN除以预设参数,得到第二余数,其中,所述预设参数大于所述数据库中包含的shard的数量;
根据所述第二余数,将所述第一待存储数据存储至相应的shard中,其中,所述shard的第一shard标识对应的子区间包含所述第二余数。
结合第一方面的第五种可能实现的方式,在第六种可能实现的方式中,所述将MSISDN除以所述预设参数包括:
将所述第一待存储数据的MSISDN所有数位除以所述预设参数;或者,
将待存储数据的MSISDN的低数位除以所述预设参数,所述低数位的位数大于或等于预设参数的位数。
结合第一方面的第五种可能实现的方式或第六种可能实现的方式,在第七种可能实现的方式中,所述根据数据量最大的shard为新增加的shard配置第二shard标识包括:
从所述N个子区间中获取连续的两个子区间的总范围最大的两个子区间;
将所述两个子区间合并成一个子区间;
将合并的一个子区间平均分成三个子区间;
将所述新增加的shard的所述第二shard标识设置为所述三个子区间中位于中间位置的子区间中的任意数值,将所述两个子区间中高子区间对应的shard的第一shard标识修改为所述三个子区间中高子区间中的任意数值,将所述两个子区间中低子区间对应的shard的第一shard标识修改为所述三个子区间中低子区间中的任意数值。
结合第一方面的第七种可能实现的方式,在第八种可能实现的方式中,所述将所述数据量最大的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储包括:
将所述两个子区间对应的shard中存储的部分数据迁移至所述shard中存储。
结合第一方面的第五种可能实现的方式至第八种可能实现的方式中任意一种方式,在第九种可能实现的方式中,所述预设参数大于或等于所述数据库中包含的shard的数量乘以250。
第二方面,提供一种无共享分布式数据库的数据分布的装置,包括:
第一配置单元,用于为数据库中包含的数据分片shard配置第一shard标识;
存储单元,用于根据所述第一shard标识将第一待存储数据存储至相应的shard中;
第二配置单元,用于根据所述第一shard标识将第一待存储数据存储至相应的shard中;
迁移单元,用于将所述数据量最大的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储。
在第一种可能实现的方式中,所述第一配置单元,具体用于将各shard的所述第一shard标识设置为整数,且不同shard的所述第一shard标识不同,相邻shard的所述第一shard标识的差为1;
所述存储单元,具体用于将所述第一待存储数据的移动台国际综合业务数字网号码MSISDN除以N,得到第一余数,所述N为所述数据库包括的shard的个数;将所述第一待存储数据存储至与所述第一余数相同的所述第一shard标识对应的shard中。
结合第二方面或第二方面的第一种可能实现的方式,在第二种可能实现的方式中,所述第二配置单元,具体用于将所述第二shard标识确定为与所述数据量最大的shard对应的第一shard标识相同的shard标识。
结合第二方面或第二方面的第一种可能实现的方式或第二种可能实现的方式,在第三种可能实现的方式中,所述迁移单元迁移的所述部分数据的数据量与所有数据的数据量的一半的差值小于预设值,所述所有数据为所述数据量最大的shard中存储的所有数据。
结合第二方面或第二方面的第一种可能实现的方式至第三种可能实现的方式中任意一种方式,在第四种可能实现的方式中,所述存储单元,,在所述第二配置单元根据数据量最大的shard为新增加的shard配置第二shard标识之后,还用于根据所述第一shard标识和所述第二shard标识将第二待存储数据存储至相应的shard中;
所述存储单元,具体用于若存在至少两个shard的shard标识相同,且所述第二待存储数据的所述第一余数与所述至少两个shard的shard标识相同,则按照轮流的方式选择所述至少两个shard中的一个,并存储所述第二待存储数据;或者,将待存储数据存储至所述至少两个shard中的存储数据量最小的shard中。
结合第二方面,在第五种可能实现的方式中,所述第一配置单元,具体用于将预设参考区间平均分成N个子区间,每个子区间对应一个shard,所述N为所述数据库中包含的shard的数量,所述预设参考区间为整数区间;将各shard的所述第一shard标识分别设置为对应子区间中的任意数值,不同shard的所述第一shard标识分别属于不同子区间;将所述第一待存储数据的MSISDN除以预设参数,得到第二余数,其中,所述预设参数大于所述数据库中包含的shard的数量;根据所述第二余数,将所述第一待存储数据存储至相应的shard中,其中,所述shard的第一shard标识对应的子区间包含所述第二余数。
结合第二方面的第五种可能实现的方式,在第六种可能实现的方式中,所述第一配置单元,具体用于将所述第一待存储数据的MSISDN所有数位除以所述预设参数;或者,将所述第一待存储数据的MSISDN的低数位除以所述预设参数,所述低数位的位数大于或等于预设参数的位数。
结合第二方面的第五种可能实现的方式或第六种可能实现的方式,在第七种可能实现的方式中,所述第二配置单元,具体用于若新增加的shard的数量为1,则从所述N个子区间中获取连续的两个子区间的总范围最大的两个子区间;将所述两个子区间合并成一个子区间;将合并的一个子区间平均分成三个子区间;将所述新增加的shard的所述第二shard标识设置为所述三个子区间中位于中间位置的子区间中的任意数值,将所述两个子区间中高子区间对应的shard的第一shard标识修改为所述三个子区间中高子区间中的任意数值,将所述两个子区间中低子区间对应的shard的第一shard标识修改为所述三个子区间中低子区间中的任意数值。
结合第二方面的第七种可能实现的方式,在第八种可能实现的方式中,所述迁移单元,具体用于将所述两个子区间对应的shard中存储的部分数据迁移至所述shard中存储。
结合第二方面的第五种可能实现的方式至第八种可能实现的方式中任意一种方式,在第九种可能实现的方式中,所述预设参数大于或等于所述数据库中包含的shard的数量乘以250。
本发明实施例提供的无共享分布式数据库的数据分布的方法和装置,采用上述方案后,当数据库进行扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;并将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。这样,当shard的数量增加后,只需要将数据量最大的shard中存储的第二shard标识对应的数据迁移至新增加的shard中,减少了需要进行数据迁移的shard的数量,提高了系统的性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中无共享分布式数据库的结构示意图;
图2为本实施例提供的一种无共享分布式数据库的数据分布的方法流程图;
图3为本实施例提供的另一种无共享分布式数据库的数据分布的方法流程图;
图4为采用图3所示的方法的情景下的无共享分布式数据库的结构示意图;
图5为采用图3所示的方法的情景下,当数据库进行扩容后的无共享分布式数据库的结构示意图;
图6为本实施例提供的再一种无共享分布式数据库的数据分布的方法流程图;
图7为采用图6所示的方法的情景下的无共享分布式数据库的结构示意图;
图8为采用图6所示的方法的情景下,当数据库进行扩容后的无共享分布式数据库的结构示意图;
图9为本实施例提供的一种无共享分布式数据库的数据分布的装置结构示意图;
图10为本实施例提供的一种计算机的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
数据库管理系统为上层应用程序提供了数据管理服务,随着数据量的快速增长,单节点数据库已经不能支撑。
分布式数据库是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为节点。分布式数据库有一个统一的数据库管理系统来进行管理,称为分布式数据库管理系统。
现有技术中,可以通过轮流放置的方式将待存储数据存储在相应的shard中。
具体的,如图1所示,每条数据被依次存储在一个shard中,以此进行循环。通常可以按照数据分配关键字的值来决定次序,例如,可以以MSISDN除以数据库中包含的shard的数量的余数来决定数据分配到哪个节点,具体的,余数为0所对应的数据被分配到shard1,余数为1所对应的数据可以被分配到shard2,以此类推。
但是,轮流放置方式使得在数据库扩容时会带来大量的数据迁移,以图1所列举的例子为例,当数据库从4个shard扩容到5个shard时,由于,MSISDN除以数据库中包含的shard的数量的余数的变化,因此,Shard1中的MSISDN为13907555404的数据需要迁移到Shard4,Shard2中的MSISDN为13907556505的数据需要迁移到Shard1等等,其他不再赘述,多个shard中的数据迁移会对数据库的性能产生严重的影响。
现有技术中,还可以通过区间划分的方式将待存储数据存储在相应的shard中。区间划分的方式已在背景技术中进行了描述,在此不再赘述。
采取划分区间的数据存储方式后,每个shard管理多个区间,当数据库需要扩容时,即增加数据库中包含的shard的数量,这样,还需要对区间进行重新划分,将新划分好的区间分配给相应的shard,由于,各shard对应的区间变化了,因此,各shard中存储的数据也随之变化,导致大部分数据需要在shard之间进行迁移,降低了数据库的性能。
为了解决上述问题,本是实施例提供一种无共享分布式数据库的数据分布的方法,该方法的执行主体可以为包含有无共享分布式数据库的电子设备,如图2所示,可以包括:
201、为数据库中包含的数据分片shard配置第一shard标识。
每个数据库中可以包括至少一个shard(即物理节点),每个shard中可以包括多可虚拟节点,虚拟节点可以用于存放相应的数据,每个虚拟节点均可以通过一个第一shard标识进行标识,同一shard中的不同虚拟节点的第一shard标识可能相同(即可以理解为第一shard标识可以为一个数值),同一shard中的不同虚拟节点的第一shard标识也可能不相同(即可以理解为第一shard标识为一个区间中的任意数值)。
通常的,可以根据第一shard标识确定待存储数据的存储位置(即存储在哪个shard中),为了为后续的存储步骤作铺垫,则首先为数据库中包含的数据分片shard配置第一shard标识。
202、根据第一shard标识将待存储数据存储至相应的shard中。
本实施例对根据第一shard标识将待存储数据存储至相应的shard中的方法不作限定,为本领域技术人员熟知的技术,在此不作赘述。
203、数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识。
每个shard均对应一个第一shard标识(该第一shard标识可以为一个数值;或者,可以为某一区间中的任意数值),每个shard中存储的数据量可能不同,即每个第一shard标识对应的数据量可能不同。为了使在扩容后,减少进行数据迁移的shard的数量,可以根据所有第一shard标识中对应的数据量最大的shard为新增加的shard配置第二shard标识,例如,可以将第二shard标识设置为与数据量最大的shard对应的第一shard标识相同的标识,或者,第二shard标识可以包括数据量最大的shard对应的第一shard标识中的部分数值等。
本实施例对第二shard标识与数据量最大的shard对应的第一shard标识的关系不作限定,不限于上述列举的方式,其他方式在此不再赘述。
204、将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。
其中,部分数据为第二shard标识对应的数据。
增加了新的shard后,可以为数据量最大的shard分担数据,还可以实现数据库的扩容。
采用上述方案后,当数据库进行扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;并将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。这样,当shard的数量增加后,只需要将数据量最大的shard中存储的第二shard标识对应的数据迁移至新增加的shard中,减少了需要进行数据迁移的shard的数量,增加了系统的性能。
本实施例提供另一种无共享分布式数据库的数据分布的方法,该方法是对图2所示的方法的进一步扩展,本实施例是以通过轮流放置的方式将待存储数据存储在相应的shard中的场景为例进行说明的,且本实施例中,一个数据库包括4个shard,但是数据库中包含的shard是数量不限于4个,还可以为其他数量。
具体的,如图3所示,可以包括:
301、将各shard的第一shard标识设置为最小值为0的正整数,且不同shard的第一shard标识不同,相邻shard的第一shard标识的差为1。
作为本实施例的一种实施方式,同一数据库中的不同的shard的第一shard标识可以分别设置为:0、1、2、3等。
例如,如图4所示,数据库中包括四个物理节点:shard1(物理节点1)、shard2(物理节点2)、shard3(物理节点3)、shard4(物理节点4),可以将shard1、shard2、shard3、shard4中的虚拟节点的第一shard标识(为了描述简单,后续内容中提到的shard标识均为虚拟节点的shard标识)分别设置为0、1、2、3。
302、将待存储数据的MSISDN除以N,得到第一余数。
进一步的,N为数据库包括的shard的个数。在本实施例中N为4,在其他场景中,N的数值可以根据实际情况设定。
作为本实施例的一种实施方式,由于是将MSISDN除以N得到的第一余数,因此,本步骤中得到的所有第一余数只可能为0、或1、或2、或3,且分布较为平均。
303、将待存储数据存储至与第一余数相同的第一shard标识对应的shard中。
例如,如图4所示,由于,13507555504除以4的余数为0,因此,MSISDN为13507555504的待存储数据存储于第一shard标识为0的shard中,即shard1(物理节点1)中,其他数据不再赘述。
作为本实施例的一种实施方式,由于,第一余数只可能为0、或1、或2、或3,且分布较为平均,因此,存储于shard1、shard2、shard3、shard4中的数据也较为平均。
304、判断数据库是否进行了扩容。若数据库进行了扩容,则执行步骤305,若数据库未进行扩容,则执行步骤302。
作为本实施例的一种实施方式,数据库进行扩容可以包括增加数据库中shard的个数。
例如,如图5所示,可以将数据库中的4个shard扩容到5个shard,扩容后的数据库可以包括:shard1(物理节点1)、shard2(物理节点2)、shard3(物理节点3)、shard4(物理节点4)、shard5(物理节点5)。
本实施例对对数据库进行扩容的方法以及扩容后增加的shard的数量不作限定,可以根据实际需要进行设定,在此不再赘述。
305、将第二shard标识确定为与数据量最大的shard对应的第一shard标识相同的shard标识。
进一步的,第二shard标识为新增加的shard的shard标识。
为了减小数据量最大的shard中存储的数据量,则可以将第二shard标识确定为与数据量最大的shard对应的第一shard标识相同的shard标识,这样,使得新增加的shard可以分担些数据量最大的shard中存储的数据。在对数据库进行扩容之后,可以通过两个shard来存储相应的标识对应的待存储数据。
例如,如图5所示,若将数据量最大的shard确定为shard2(物理节点2),且shard2的shard标识为1,则可以将新增加的shard5(物理节点5)的shard标识(即第二shard标识)也设置为1。
306、将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。
其中,部分数据可以为第二shard标识对应的数据。
作为本实施例的一种实施方式,在执行数据迁移之前,第二shard标识对应的全部或部分数据可以是存储于数据量最大的shard中的。
在为新增加的shard设置完第二shard标识后,由于,第二shard标识与数据量最大的shard对应的第一shard标识相同,因此,还可以将将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储,这样,可以更好的对数据库包含的shard存储的数据量进行均衡。
进一步的,部分数据的数据量与所有数据的数据量的一半的差值小于预设值,所有数据为数据量最大的shard中存储的所有数据。
例如,如图5所示,若将数据量最大的shard确定为shard2(物理节点2),则可以将shard2中的部分数据迁移到shard5(物理节点5)中。
本实施例对预设值不作限定,可以根据实际需要进行设定,例如,优选的,部分数据的数据量可以为数据量最大的shard中存储的所有数据的数据量的一半之间的差值为0(换言之,在数据移动后,是的新增加的shard中存储的数据量与数据量最大的shard中存储的数据量相同),其他情况在此不再赘述。
这样,本场景中,在数据库进行扩容后,只需要将其中一个shard中存储的数据迁移至新增加的shard中,避免了迁移多个shard中存储的数据,增加了数据库的性能。
307、根据扩容后的shard的shard标识,将待存储数据存储至相应的shard中。
作为本实施例的一种实施方式,在数据库扩容后,还可以按照步骤302至步骤303中记载的方法将待存储数据存储至相应的5个shard中。
具体的,如图5所示,可以将第一余数为0的所对应的数据存储至shard1(物理节点1)中,将第一余数为1的所对应的数据存储至shard2(物理节点2)和shard5(物理节点5)中,将第一余数为2的所对应的数据存储至shard3(物理节点3)中,将第一余数为3的所对应的数据存储至shard4(物理节点4)中。
作为本实施例的一种实施方式,由于将第二shard标识确定为与数据量最大的shard对应的第一shard标识相同的shard标识,因此,数据库中会存在与新增加的shard的shard标识相同的shard。
此时,根据扩容后的shard的shard标识,将待存储数据存储至相应的shard中可以但不限于包括:
若存在至少两个shard的shard标识相同,且待存储数据的第一余数与至少两个shard的shard标识相同,则将待存储数据轮流存储至两个shard中;或者,
将待存储数据存储至两个shard中的存储的数据量最小的shard中。
例如,若shard2和shard5的shard标识均为1,则可以将第一余数为1的所对应的数据轮流存储至shard2和shard5中;或者,将第一余数为1的所对应的数据存储于shard2和shard5中存储的数据量最小的shard中。
本实施例对区分shard标识相同的shard的方法不作限定,可以根据实际需要进行设定,例如,可以根据shard的物理节点标识来区分,其他方法在此不再赘述。
值得说明的是,本实施例提供的第一shard标识、第二shard标识可以理解为用于标识不同shard的shard标识,属于相同属性的名词。
采用上述方案后,当数据库进行扩容后,将第二shard标识确定为与数据量最大的shard对应的第一shard标识相同的shard标识;并只将数据量最大的shard中存储的部分数据迁移至新增加的shard中存储,减少了需要进行数据迁移的shard的数量,增加了系统的性能。
值得说明的是,当通过区间划分的方式将待存储数据存储在相应的shard中时,现有技术还可以带来其他技术问题,可以包括:
当对数据库执行查询数据或者写入数据操作时,需要从相应的shard中读写目标数据,这样,导致获取目标数据的过程较为复杂,降低了系统性能,例如,数据库有m个shard,每个shard上面有n个区间,因此,获取目标数据最多需要比较m*n次。
为了解决上述提出的所有问题,本实施例提供另一种无共享分布式数据库的数据分布的方法,该方法是对图2所示的方法的进一步扩展,且本实施例是以区间划分的方式将待存储数据存储在相应的shard中的场景为例进行说明的,且本实施例中,一个数据库包括4个shard,但是数据库中包含的shard是数量不限于4个,还可以为其他数量。
具体的,如图6所示,可以包括:
601、将预设参考区间平均分成N个子区间。
进一步的,N为数据库中包含的shard的数量,预设参考区间可以为从0到预设参数减1的整数区间,预设参数大于数据库中包含的shard的数量。
本实施例以预设参数为1000为例进行说明。
本实施例对预设参数的数值不作限定,可以根据实际需要进行设定,并不限于上述列举的例子,例如,可以为:预设参数大于或等于数据库中包含的shard的数量乘以250。
602、将各shard的第一shard标识分别设置为一个子区间中的任意数值,不同shard的第一shard标识分别属于不同子区间。
作为本实施例的一种实施方式,可以将shard1(物理节点1)的第一shard标识设置为子区间[0-249]中的任意数值,shard2(物理节点2)的第一shard标识可以为子区间[250-499]中的任意数值,shard3(物理节点3)的第一shard标识可以为子区间[500-749]中的任意数值,shard4(物理节点4)的第一shard标识可以为子区间[750-999]中的任意数值。
603、将待存储数据的MSISDN除以预设参数,得到第二余数。
进一步的,将待存储数据的MSISDN除以预设参数可以但不限于包括:
将待存储数据的MSISDN所有数位除以预设参数;或者,
将待存储数据的MSISDN的低数位除以预设参数,低数位的位数大于或等于预设参数的位数。
作为本实施例的一种实施方式,可以但不限于将待存储数据的MSISDN的低4位除以预设参数1000。
604、将待存储数据存储至包含第二余数的第一shard标识对应的shard中。
例如,如图7所示,MSISDN为13207552101的低四位2101除以1000,得到的余数为101,由于101在子区间[0-249]中,因此将MSISDN为13207552101所对应的数据存储至shard1(物理节点1)中,其他数据不再赘述。
605、判断数据库是否进行了扩容。若数据库进行了扩容,则执行步骤606,若数据库未进行扩容,则执行步骤603。
作为本实施例的一种实施方式,数据库进行扩容可以包括增加数据库中shard的个数。
例如,如图8所示,可以将数据库中的4个shard扩容到5个shard,扩容后的数据库可以包括:shard1(物理节点1)、shard2(物理节点2)、shard3(物理节点3)、shard4(物理节点4)、shard5(物理节点5)。
本实施例以数据库增加了一个shard为例进行说明。
606、从N个子区间中获取连续的两个子区间的总范围最大的两个子区间。
作为本实施例的一种实施方式,若子区间的范围相同,则获取两个连续的低子区间,例如,如图7所示,可以获取shard1(物理节点1)对应的子区间[0-249]和shard2(物理节点2)对应的子区间[250-499]。
607、将两个子区间合并成一个子区间。
作为本实施例的一种实施方式,将子区间[0-249]和子区间[250-499]合并后得到一个子区间[0-499]。
608、将合并的一个子区间平均分成三个子区间。
作为本实施例的一种实施方式,将一个子区间[0-499]平均分成三个子区间,可以包括:[0-166]、[167-333]、[334-499]。
本实施例对子区间的划分方式不作限定,不限于上述列举的具体例子,其他例子在此不再赘述。
609、将新增加的shard的第二shard标识设置为三个子区间中位于中间位置的子区间中的任意数值,并按照两个子区间由高到低的顺序依次将两个子区间对应的shard的第一shard标识修改为三个子区间中位于两边位置的高子区间中的任意数值和低子区间中的任意数值。
作为本实施例的一种实施方式,如图8所示,可以将新增加的shard5(物理节点5)的shard标识(即第二shard标识)设置为子区间[167-333]中的任意数值,将shard1(物理节点1)的shard标识修改为子区间[0-166]中的任意数值,将shard2(物理节点2)的shard标识修改为子区间[334-499]中的任意数值。
此时,shard1的shard标识可以为子区间[0-166]中的任意数值,shard2的shard标识可以为子区间[334-499]中的任意数值,shard3的shard标识可以为子区间[500-749]中的任意数值,shard4(物理节点4)的shard标识可以为子区间[750-999]中的任意数值,shard5(物理节点5)的shard标识可以为子区间[167-333]中的任意数值。
610、将两个子区间对应的shard中存储的部分数据迁移至新增加的shard中存储。
作为本实施例的一种实施方式,如图8所示,可以将shard1(物理节点1)与shard2(物理节点2)中的数据迁移至shard5(物理节点5)中存储,具体的,可以是将shard1中与区间[167-249]对应的数据迁移至shard5中,将shard2中与区间[250-333]对应的数据迁移至shard5中。
这样,在数据库进行扩容后,只需要将shard1和shard2中的相应数据迁移至shard5中,避免了迁移多个shard中存储的数据,同时不会使得数据库中各shard之间存储的数据量相差过大,使数据库中各shard存储的数据量平衡,增加了系统的性能。
611、根据扩容后的shard的shard标识,将待存储数据存储至相应的shard中。
作为本实施例的一种实施方式,在数据库扩容后,还可以按照步骤603至步骤604中记载的方法将待存储数据存储至相应的5个shard中。
具体的,如图8所示,可以将属于子区间[0-166]的第二余数所对应的数据存储至shard1中,可以将属于子区间[334-499]的第二余数所对应的数据存储至shard2中,可以将属于子区间[500-749]的第二余数所对应的数据存储至shard3中,可以将属于子区间[750-999]的第二余数所对应的数据存储至shard4中,可以将属于子区间[167-333]的第二余数所对应的数据存储至shard5中。
值得说明的是,本实施例提供的第一shard标识、第二shard标识均可以理解为用于标识不同shard的shard标识,属于相同属性的名词。
采用上述方案后,当数据库进行扩容后,将第二shard标识设置为shard1对应的shard标识与shard2对应的标识的总区间中的一个子区间;并只将shard1中存储的和shard2中存储的,且是与第二shard标识对应的部分数据迁移至新增加的shard中存储,减少了需要进行数据迁移的shard的数量,增加了系统的性能。
下面提供一些装置实施例,该装置实施例分别与上述提供的方法实施例相对应。
本实施例提供一种无共享分布式数据库的数据分布的装置,如图9所示,包括:
第一配置单元91,用于为数据库中包含的数据分片shard配置第一shard标识;
存储单元92,用于根据第一shard标识将待存储数据存储至相应的shard中;
第二配置单元93,用于数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;
迁移单元94,用于将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。
进一步的,第一配置单元91,具体用于将各shard的第一shard标识设置为最小值为0的正整数,且不同shard的第一shard标识不同,相邻shard的第一shard标识的差为1;
存储单元92,具体用于将待存储数据的移动台国际综合业务数字网号码MSISDN除以N,得到第一余数,N为数据库包括的shard的个数;将待存储数据存储至与第一余数相同的第一shard标识对应的shard中。
进一步的,第二配置单元93,具体用于将第二shard标识确定为与数据量最大的shard对应的第一shard标识相同的shard标识。
进一步的,迁移单元94迁移的部分数据的数据量与所有数据的数据量的一半的差值小于预设值,所有数据为数据量最大的shard中存储的所有数据。
进一步的,存储单元92,具体用于在数据库扩容,且第二配置单元根据数据量最大的shard为新增加的shard配置第二shard标识之后,根据shard标识将待存储数据存储至相应的shard中,其中,shard标识包括第一shard标识和第二shard标识;
存储单元92,具体用于若存在至少两个shard的shard标识相同,且待存储数据的第一余数与至少两个shard的shard标识相同,则将待存储数据轮流存储至两个shard中;或者,将待存储数据存储至两个shard中的存储的数据量最小的shard中。
进一步的,第一配置单元91,具体用于将预设参考区间平均分成N个子区间,N为数据库中包含的shard的数量,预设参考区间为从0到预设参数减1的整数区间,预设参数大于数据库中包含的shard的数量;将各shard的第一shard标识分别设置为一个子区间中的任意数值,不同shard的第一shard标识分别属于不同子区间;将待存储数据的MSISDN除以预设参数,得到第二余数;将待存储数据存储至包含第二余数的第一shard标识对应的shard中。
进一步的,第一配置单元91,具体用于将待存储数据的MSISDN所有数位除以预设参数;或者,将待存储数据的MSISDN的低数位除以预设参数,低数位的位数大于或等于预设参数的位数。
进一步的,第二配置单元93,具体用于从N个子区间中获取连续的两个子区间的总范围最大的两个子区间;将两个子区间合并成一个子区间;将合并的一个子区间平均分成三个子区间;将新增加的shard的第二shard标识设置为三个子区间中位于中间位置的子区间中的任意数值,并按照两个子区间由高到低的顺序依次将两个子区间对应的shard的第一shard标识修改为三个子区间中位于两边位置的高子区间中的任意数值和低子区间中的任意数值。
进一步的,迁移单元94,具体用于将两个子区间对应的shard中存储的部分数据迁移至新增加的shard中存储。
进一步的,预设参数可以大于或等于数据库中包含的shard的数量乘以250。
采用上述方案后,当数据库进行扩容后,可以根据数据量最大的shard对应的第一hard标识为新增加的shard配置第二shard标识;并只将数据量最大的shard中存储的部分数据迁移至新增加的shard中存储,减少了需要进行数据迁移的shard的数量,增加了系统的性能。
如图10所示,本发明实施例提供一种计算机1,该计算机1包括:至少一个处理器15,例如CPU,至少一个输出接口16或者其他用户接口17,存储器18,至少一个通信总线19。通信总线19用于实现这些组件之间的连接通信。该计算机1可选的包含其他用户接口17,包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。存储器18可能包含高速RAM(Random Access Memory,随机存取存储器),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器18可选的可以包含至少一个位于远离前述处理器15的存储装置。
在一些实施方式中,存储器18存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统180,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
应用程序181,包含各种应用程序,用于实现各种应用业务。
应用程序181中可以但不限于包括:
第一配置单元,用于为数据库中包含的数据分片shard配置第一shard标识;
存储单元,用于根据第一shard标识将待存储数据存储至相应的shard中;
第二配置单元,用于数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;
迁移单元,用于将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。
进一步的,第一配置单元,具体用于将各shard的第一shard标识设置为最小值为0的正整数,且不同shard的第一shard标识不同,相邻shard的第一shard标识的差为1;
存储单元,具体用于将待存储数据的移动台国际综合业务数字网号码MSISDN除以N,得到第一余数,N为数据库包括的shard的个数;将待存储数据存储至与第一余数相同的第一shard标识对应的shard中。
进一步的,第二配置单元,具体用于将第二shard标识确定为与数据量最大的shard对应的第一shard标识相同的shard标识。
进一步的,迁移单元迁移的部分数据的数据量与所有数据的数据量的一半的差值小于预设值,所有数据为数据量最大的shard中存储的所有数据。
进一步的,存储单元,具体用于在数据库扩容,且第二配置单元根据数据量最大的shard为新增加的shard配置第二shard标识之后,根据shard标识将待存储数据存储至相应的shard中,其中,shard标识包括第一shard标识和第二shard标识;
存储单元,具体用于若存在至少两个shard的shard标识相同,且待存储数据的第一余数与至少两个shard的shard标识相同,则将待存储数据轮流存储至两个shard中;或者,将待存储数据存储至两个shard中的存储的数据量最小的shard中。
进一步的,第一配置单元,具体用于将预设参考区间平均分成N个子区间,N为数据库中包含的shard的数量,预设参考区间为从0到预设参数减1的整数区间,预设参数大于数据库中包含的shard的数量;将各shard的第一shard标识分别设置为一个子区间中的任意数值,不同shard的第一shard标识分别属于不同子区间;将待存储数据的MSISDN除以预设参数,得到第二余数;将待存储数据存储至包含第二余数的第一shard标识对应的shard中。
进一步的,第一配置单元,具体用于将待存储数据的MSISDN所有数位除以预设参数;或者,将待存储数据的MSISDN的低数位除以预设参数,低数位的位数大于或等于预设参数的位数。
进一步的,第二配置单元,具体用于从N个子区间中获取连续的两个子区间的总范围最大的两个子区间;将两个子区间合并成一个子区间;将合并的一个子区间平均分成三个子区间;将新增加的shard的第二shard标识设置为三个子区间中位于中间位置的子区间中的任意数值,并按照两个子区间由高到低的顺序依次将两个子区间对应的shard的第一shard标识修改为三个子区间中位于两边位置的高子区间中的任意数值和低子区间中的任意数值。
进一步的,迁移单元,具体用于将两个子区间对应的shard中存储的部分数据迁移至新增加的shard中存储。
进一步的,预设参数大于或等于数据库中包含的shard的数量乘以250。
在本发明实施例中,通过调用存储器18中存储的程序或指令,处理器15用于:
为数据库中包含的数据分片shard配置第一shard标识;
根据第一shard标识将待存储数据存储至相应的shard中;
数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;
将数据量最大的shard中存储的部分数据迁移至第二shard标识对应的shard中存储。
进一步的,处理器15,具体用于将各shard的第一shard标识设置为最小值为0的正整数,且不同shard的第一shard标识不同,相邻shard的第一shard标识的差为1;
根据第一shard标识将待存储数据存储至相应的shard中包括:
将待存储数据的移动台国际综合业务数字网号码MSISDN除以N,得到第一余数,N为数据库包括的shard的个数;
将待存储数据存储至与第一余数相同的第一shard标识对应的shard中。
进一步的,处理器15,具体用于将第二shard标识确定为与数据量最大的shard对应的第一shard标识相同的shard标识。
进一步的,部分数据的数据量与所有数据的数据量的一半的差值小于预设值,所有数据为数据量最大的shard中存储的所有数据。
进一步的,处理器15,还用于在数据库扩容,且根据数据量最大的shard为新增加的shard配置第二shard标识之后,根据shard标识将待存储数据存储至相应的shard中,其中,shard标识包括第一shard标识和第二shard标识;
若存在至少两个shard的shard标识相同,且待存储数据的第一余数与至少两个shard的shard标识相同,则将待存储数据轮流存储至两个shard中;或者,
将待存储数据存储至两个shard中的存储的数据量最小的shard中。
进一步的,处理器15,具体用于将预设参考区间平均分成N个子区间,N为数据库中包含的shard的数量,预设参考区间为从0到预设参数减1的整数区间,预设参数大于数据库中包含的shard的数量;
将各shard的第一shard标识分别设置为一个子区间中的任意数值,不同shard的第一shard标识分别属于不同子区间;
将待存储数据的MSISDN除以预设参数,得到第二余数;
将待存储数据存储至包含第二余数的第一shard标识对应的shard中。
进一步的,处理器15,具体用于将待存储数据的MSISDN所有数位除以预设参数;或者,
将待存储数据的MSISDN的低数位除以预设参数,低数位的位数大于或等于预设参数的位数。
进一步的,处理器15,具体用于若新增加的shard的数量为1,则从N个子区间中获取连续的两个子区间的总范围最大的两个子区间;
将两个子区间合并成一个子区间;
将合并的一个子区间平均分成三个子区间;
将新增加的shard的第二shard标识设置为三个子区间中位于中间位置的子区间中的任意数值,并按照两个子区间由高到低的顺序依次将两个子区间对应的shard的第一shard标识修改为三个子区间中位于两边位置的高子区间中的任意数值和低子区间中的任意数值。
进一步的,处理器15,具体用于将两个子区间对应的shard中存储的部分数据迁移至新增加的shard中存储。
进一步的,预设参数大于或等于数据库中包含的shard的数量乘以250。
采用上述方案后,当数据库进行扩容后,可以根据数据量最大的shard对应的第一hard标识为新增加的shard配置第二shard标识;并只将数据量最大的shard中存储的部分数据迁移至新增加的shard中存储,减少了需要进行数据迁移的shard的数量,增加了系统的性能。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (18)
1.一种无共享分布式数据库的数据分布的方法,其特征在于,包括:
为数据库中包含的数据分片shard配置第一shard标识;
根据所述第一shard标识将第一待存储数据存储至相应的shard中;
在数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;
将所述数据量最大的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储;
所述为数据库中包含的数据分片shard配置第一shard标识包括:
将各shard的所述第一shard标识设置为整数,且不同shard的所述第一shard标识不同,相邻shard的所述第一shard标识的差为1;
所述根据所述第一shard标识将第一待存储数据存储至相应的shard中包括:
将所述第一待存储数据的移动台国际综合业务数字网号码MSISDN除以N,得到第一余数,所述N为所述数据库包括的shard的个数;
将所述第一待存储数据存储至与所述第一余数相同的所述第一shard标识对应的shard中。
2.根据权利要求1所述的方法,其特征在于,所述根据数据量最大的shard为新增加的shard配置第二shard标识包括:
将所述第二shard标识确定为与所述数据量最大的shard对应的第一shard标识相同的shard标识。
3.根据权利要求2所述的方法,其特征在于,所述部分数据的数据量与全部数据的数据量的一半的差值小于预设值,所述全部数据为所述数据量最大的shard中存储的所有数据。
4.根据权利要求3所述的方法,其特征在于,所述根据数据量最大的shard为新增加的shard配置第二shard标识之后,还包括:
根据所述第一shard标识和所述第二shard标识将第二待存储数据存储至相应的shard中;
若存在至少两个shard的shard标识相同,且所述第二待存储数据的第一 余数与所述至少两个shard的shard标识相同,则所述根据shard标识将第二待存储数据存储至相应的shard中包括:
按照轮流的方式选择所述至少两个shard中的一个,并存储所述第二待存储数据;或者,
将待存储数据存储至所述至少两个shard中的数据量最小的shard中。
5.根据权利要求1所述的方法,其特征在于,所述为数据库中的数据分片shard配置第一shard标识还包括:
将预设参考区间平均分成N个子区间,每个子区间对应一个shard,所述N为所述数据库中包含的shard的数量,所述预设参考区间为整数区间;
将各shard的所述第一shard标识分别设置为对应子区间中的任意数值,不同shard的所述第一shard标识分别属于不同子区间;
所述根据所述第一shard标识将第一待存储数据存储至相应的shard中包括:
将所述第一待存储数据的MSISDN除以预设参数,得到第二余数,其中,所述预设参数大于所述数据库中包含的shard的数量;
根据所述第二余数,将所述第一待存储数据存储至相应的shard中,其中,所述shard的第一shard标识对应的子区间包含所述第二余数。
6.根据权利要求5所述的方法,其特征在于,所述将MSISDN除以所述预设参数包括:
将所述第一待存储数据的MSISDN所有数位除以所述预设参数;或者,
将所述第一待存储数据的MSISDN的低数位除以所述预设参数,所述低数位的位数大于或等于预设参数的位数。
7.根据权利要求6所述的方法,其特征在于,所述根据数据量最大的shard为新增加的shard配置第二shard标识包括:
从所述N个子区间中获取连续的两个子区间的总范围最大的两个子区间;
将所述两个子区间合并成一个子区间;
将合并的一个子区间平均分成三个子区间;
将所述新增加的shard的第二shard标识设置为所述三个子区间中位于中 间位置的子区间中的任意数值,将所述两个子区间中高子区间对应的shard的第一shard标识修改为所述三个子区间中高子区间中的任意数值,将所述两个子区间中低子区间对应的shard的第一shard标识修改为所述三个子区间中低子区间中的任意数值。
8.根据权利要求7所述的方法,其特征在于,所述将所述数据量最大的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储包括:
将所述两个子区间对应的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储。
9.根据权利要求5或6所述的方法,其特征在于,所述预设参数大于或等于所述数据库中包含的shard的数量乘以250。
10.一种无共享分布式数据库的数据分布的装置,其特征在于,包括:
第一配置单元,用于为数据库中包含的数据分片shard配置第一shard标识;
存储单元,用于根据所述第一shard标识将第一待存储数据存储至相应的shard中;
第二配置单元,用于在数据库扩容后,根据数据量最大的shard为新增加的shard配置第二shard标识;
迁移单元,用于将所述数据量最大的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储;
所述第一配置单元,具体用于将各shard的所述第一shard标识设置为整数,且不同shard的所述第一shard标识不同,相邻shard的所述第一shard标识的差为1;
所述存储单元,具体用于将所述第一待存储数据的移动台国际综合业务数字网号码MSISDN除以N,得到第一余数,所述N为所述数据库包括的shard的个数;将所述第一待存储数据存储至与所述第一余数相同的所述第一shard标识对应的shard中。
11.根据权利要求10所述的装置,其特征在于,所述第二配置单元,具体用于将所述第二shard标识确定为与所述数据量最大的shard对应的第一shard 标识相同的shard标识。
12.根据权利要求11所述的装置,其特征在于,所述迁移单元迁移的所述部分数据的数据量与全部数据的数据量的一半的差值小于预设值,所述全部数据为所述数据量最大的shard中存储的所有数据。
13.根据权利要求12所述的装置,其特征在于,所述存储单元,在所述第二配置单元根据数据量最大的shard为新增加的shard配置第二shard标识之后,还用于根据所述第一shard标识和所述第二shard标识将第二待存储数据存储至相应的shard中;
所述存储单元,具体用于若存在至少两个shard的shard标识相同,且所述第二待存储数据的第一余数与所述至少两个shard的shard标识相同,则按照轮流的方式选择所述至少两个shard中的一个,并存储所述第二待存储数据;或者,将待存储数据存储至所述至少两个shard中的存储数据量最小的shard中。
14.根据权利要求10所述的装置,其特征在于,所述第一配置单元,还具体用于,
将预设参考区间平均分成N个子区间,每个子区间对应一个shard,所述N为所述数据库中包含的shard的数量,所述预设参考区间为整数区间;
将各shard的所述第一shard标识分别设置为对应子区间中的任意数值,不同shard的所述第一shard标识分别属于不同子区间;
将所述第一待存储数据的MSISDN除以预设参数,得到第二余数,其中,所述预设参数大于所述数据库中包含的shard的数量;
根据所述第二余数,将所述第一待存储数据存储至相应的shard中,其中,所述shard的第一shard标识对应的子区间包含所述第二余数。
15.根据权利要求14所述的装置,其特征在于,所述第一配置单元,具体用于将所述第一待存储数据的MSISDN所有数位除以所述预设参数;或者,将所述第一待存储数据的MSISDN的低数位除以所述预设参数,所述低数位的位数大于或等于预设参数的位数。
16.根据权利要求15所述的装置,其特征在于,所述第二配置单元,具体 用于从所述N个子区间中获取连续的两个子区间的总范围最大的两个子区间;将所述两个子区间合并成一个子区间;将合并的一个子区间平均分成三个子区间;将所述新增加的shard的所述第二shard标识设置为所述三个子区间中位于中间位置的子区间中的任意数值,将所述两个子区间中高子区间对应的shard的第一shard标识修改为所述三个子区间中高子区间中的任意数值,将所述两个子区间中低子区间对应的shard的第一shard标识修改为所述三个子区间中低子区间中的任意数值。
17.根据权利要求16所述的装置,其特征在于,所述迁移单元,具体用于将所述两个子区间对应的shard中存储的部分数据迁移至所述第二shard标识对应的shard中存储。
18.根据权利要求14或15所述的装置,其特征在于,所述预设参数大于或等于所述数据库中包含的shard的数量乘以250。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310292152.9A CN103345519B (zh) | 2013-07-11 | 2013-07-11 | 无共享分布式数据库的数据分布的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310292152.9A CN103345519B (zh) | 2013-07-11 | 2013-07-11 | 无共享分布式数据库的数据分布的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103345519A CN103345519A (zh) | 2013-10-09 |
CN103345519B true CN103345519B (zh) | 2017-07-21 |
Family
ID=49280314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310292152.9A Active CN103345519B (zh) | 2013-07-11 | 2013-07-11 | 无共享分布式数据库的数据分布的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103345519B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2521197A (en) * | 2013-12-13 | 2015-06-17 | Ibm | Incremental and collocated redistribution for expansion of an online shared nothing database |
CN105069109B (zh) * | 2015-08-07 | 2018-04-03 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库扩容的方法和系统 |
CN106843745A (zh) * | 2015-12-03 | 2017-06-13 | 南京中兴新软件有限责任公司 | 容量扩展方法及装置 |
CN105893616B (zh) * | 2016-04-27 | 2019-05-24 | 郑州悉知信息科技股份有限公司 | 一种标识信息配置方法及装置 |
CN106897345B (zh) * | 2016-07-22 | 2021-01-05 | 创新先进技术有限公司 | 一种数据存储的方法及装置 |
CN113760858B (zh) * | 2020-06-05 | 2024-03-19 | 中国移动通信集团湖北有限公司 | 内存库数据动态迁移方法、装置、计算设备及存储设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102013991A (zh) * | 2009-09-08 | 2011-04-13 | 华为技术有限公司 | 自动扩容的方法、管理设备及系统 |
CN102279777A (zh) * | 2011-08-18 | 2011-12-14 | 成都市华为赛门铁克科技有限公司 | 数据冗余处理方法、装置和分布式存储系统 |
CN102591934A (zh) * | 2011-12-23 | 2012-07-18 | 国网电力科学研究院 | 一种基于Zookeeper实现多个Solr Shards自动扩展与切换的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201890B2 (en) * | 2010-10-04 | 2015-12-01 | Dell Products L.P. | Storage optimization manager |
-
2013
- 2013-07-11 CN CN201310292152.9A patent/CN103345519B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102013991A (zh) * | 2009-09-08 | 2011-04-13 | 华为技术有限公司 | 自动扩容的方法、管理设备及系统 |
CN102279777A (zh) * | 2011-08-18 | 2011-12-14 | 成都市华为赛门铁克科技有限公司 | 数据冗余处理方法、装置和分布式存储系统 |
CN102591934A (zh) * | 2011-12-23 | 2012-07-18 | 国网电力科学研究院 | 一种基于Zookeeper实现多个Solr Shards自动扩展与切换的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103345519A (zh) | 2013-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103345519B (zh) | 无共享分布式数据库的数据分布的方法和装置 | |
CN110489059B (zh) | 数据集群存储的方法、装置及计算机设备 | |
EP3637280B1 (en) | Data storage method and device, and storage medium | |
CN107566531B (zh) | 一种支持均衡资源的Elasticsearch集群扩展方法 | |
EP3037988A1 (en) | Configuration method and device for hash database | |
WO2019144553A1 (zh) | 数据存储方法、装置及存储介质 | |
CN102968503B (zh) | 数据库系统的数据处理方法以及数据库系统 | |
TWI662426B (zh) | 分布式流式資料處理的方法和裝置 | |
CN110019125B (zh) | 数据库管理的方法和装置 | |
CN102968498A (zh) | 数据处理方法及装置 | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN111723073B (zh) | 数据存储处理方法、装置、处理系统以及存储介质 | |
US9235613B2 (en) | Flexible partitioning of data | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
CN111694505B (zh) | 数据存储管理方法、装置和计算机可读存储介质 | |
US10102267B2 (en) | Method and apparatus for access control | |
Dai et al. | Improving load balance for data-intensive computing on cloud platforms | |
CN111386521B (zh) | 在数据库集群中重分布表数据 | |
CN108829738A (zh) | 一种ceph中数据存储方法及装置 | |
CN112817538A (zh) | 数据处理的方法、装置、设备和存储介质 | |
CN112905587B (zh) | 数据库的数据管理方法、装置及电子设备 | |
CN111104057B (zh) | 存储系统中的节点扩容方法和存储系统 | |
CN116662019B (zh) | 请求的分配方法、装置、存储介质及电子装置 | |
US8990524B2 (en) | Management of data elements of subgroups | |
US11960453B2 (en) | Techniques for asynchronous snapshot invalidation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |