CN116303343A - 数据分片方法、装置、电子设备及存储介质 - Google Patents
数据分片方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116303343A CN116303343A CN202310059294.4A CN202310059294A CN116303343A CN 116303343 A CN116303343 A CN 116303343A CN 202310059294 A CN202310059294 A CN 202310059294A CN 116303343 A CN116303343 A CN 116303343A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- hash
- hash bucket
- nodes
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013507 mapping Methods 0.000 claims abstract description 85
- 230000008859 change Effects 0.000 claims abstract description 79
- 239000012634 fragment Substances 0.000 claims description 9
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 2
- 230000005012 migration Effects 0.000 abstract description 18
- 238000013508 migration Methods 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据分片方法、装置、电子设备及存储介质。该方法包括:在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。数据迁移量大大减少。
Description
技术领域
本申请实施例涉及分布式数据库技术领域,尤其涉及一种数据分片方法、装置、电子设备及存储介质。
背景技术
传统的分布式数据库中,会涉及到数据分片技术,数据分片即用来确定数据在多台存储设备上分布的技术。通常,为了实现数据分片,会使用数据的分片值(key)或者分片值的哈希值来计算分片值的分布,从而确定出数据的分布。
其中,最常用的是利用分片值的哈希值,对数据节点数量进行取余,将取余的值确定为分片值对应的数据所需分布在的数据节点的编号,基于该方法将数据存储到各个数据节点中。
但是,随着分布式数据库中数据存储量的不断发生变化,很可能会出现增加或者减少数据节点数量的需求,由于前述数据分片依赖于数据节点的数量,当数据节点的数量发生变化时,前述数据分片结果将无法继续使用,出现数据路由算法失效的情况,此时就需要重新进行数据分片,而重新进行数据分片则意味着大量的数据迁移,需要耗费较长的时间,导致数据库性能在该较长时间内受到影响。
发明内容
本申请实施例提供一种数据分片方法、装置、电子设备及存储介质,以减少数据节点数量发生变化时的数据迁移量,缩减数据库性能受到影响的时长。
第一方面,本申请实施例提供了一种数据分片方法,所述方法包括:
在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;
基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;
基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;
基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
第二方面,本申请实施例提供了一种数据分片装置,所述装置包括:
节点数量确定模块,用于在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;
哈希桶分布数量确定模块,用于基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;
哈希桶调整模块,用于基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;
数据分片调整模块,用于基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本申请任一实施例提供的数据分片方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请任一实施例提供的数据分片方法。
本申请实施例的技术方案,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。
附图说明
图1为本申请实施例一提供的数据分片方法的流程示意图;
图2为本申请实施例二提供的一种数据分片装置的结构示意图;
图3为本申请实施例三提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
实施例一
图1为本申请实施例一提供的数据分片方法的流程示意图,本实施例从第一平台端进行说明,方法可适用于数据分片的场景。该方法可以由数据分片装置来执行,该装置可采用硬件和/或软件的方式实现,并一般可以集成在具有数据运算能力的计算机等电子设备中,具体包括如下步骤:
步骤101、在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量。
本步骤中,数据节点数量发生变化指的是数据节点数量减少或者增多,这两种情况涉及了不同的哈希桶的调整方式,具体会在后续步骤103中进行说明,此处不再赘述。
另外,变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量可以从存储单元中直接获取,为了便于本步骤获取,可以实时监测数据节点的数量以及哈希桶的数量,并将其记录在存储单元中。
步骤102、基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量。
为了充分利用各数据节点的CPU、磁盘等资源,需要保证各节点的数据较为均匀地分布,即各数据节点的哈希桶的数量相差要小于等于1。为了实现该目的,本实施例提供了哈希桶和数据节点进行映射的方案。
具体的,可以先按照正整数的顺序,将整数确定为各哈希桶的哈希桶标识,以及将整数确定为数据节点的节点编号;对于任一目标哈希桶,将目标哈希桶的哈希桶标识与数据节点的个数的进行取余,得到取余值,并将节点编号为取余值的目标数据节点与目标哈希桶进行映射;基于哈希桶标识、节点编号以及确定的数据节点和哈希桶之间的映射关系生成数据路由映射表。
这种方式可以保证每个数据节点分配到的哈希桶的数量相近,且数量差小于等于1。
另外,为了便于后续数据分片时不再对路由算法进行调整,本实施例生成了前述数据路由映射表,该映射表中为每个哈希桶和数据节点进行了编号和映射,在后续新增数据节点或者减少数据节点的情况下,直接调整相关的哈希桶映射的数据节点即可,然后再基于该路由表进行数据分片即可。
需要说明的是,本步骤中,第一哈希桶分布数量和第二哈希桶分布数量指的是期望各数据节点应当分布的哈希桶的数量,并非是实际的哈希桶分布数量。
具体的,第一哈希桶分布数量的确定过程可以为:确定哈希桶数量对第一节点数量的取整值,并将取整值确定为变化前各数据节点对应的第一哈希桶分布数量。
第二哈希桶分布数量的确定过程可以为:确定哈希桶数量对第二节点数量的取整值,并将取整值确定为变化后各数据节点对应的第二哈希桶分布数量。
步骤103、基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中。
本步骤中,若第一节点数量小于第二节点数量,说明增加的数据节点,这种情况对应了为新增数据节点划分哈希桶;若第一节点数量大于第二节点数量,说明减少了数据节点,这种情况对应了为留存数据节点划分哈希桶。
具体的,若第一节点数量小于第二节点数量,从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出第二哈希桶分布数量的哈希桶;若第一节点数量大于第二节点数量,将被删除的数据节点对应的哈希桶划分至留存数据节点。
从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出第二哈希桶分布数量的哈希桶时,对于任一新增数据节点,将旧数据节点中第N的整倍数个哈希桶划分至新增数据节点,直至新增数据节点的哈希桶的数量达到第二哈希桶分布数量,进行下一新增数据节点的哈希桶的划分;其中,N为第二节点数量。
在一个具体的例子中,若数据节点的数量从2增加到3,此时N等于3,在增加之前,哈希桶与数据节点之间的映射关系如下表1所示:
表1
那么第N的整数倍个,即是第3个、第6个、第9个等等,从表1中可以知道,划分给数据节点3的哈希桶即为5、6、11、12、17、18等等。在划分时,可以按照哈希桶标识的次序从旧的数据节点中轮询划分,即按照前述5、6、11、12、17、18等等的顺序划分给新增数据节点,直至新增数据节点的哈希桶的数量达到第二哈希桶分布数量。
调整后的哈希桶与数据节点之间的映射关系如下表2所示:
表2
基于这种划分方式,最后划分得到的各数据节点的哈希桶的数量仍然是较为均匀的,还是以上述示例为例,假如总共有18个哈希桶,那么划分后,每个数据节点都各自对应了6个哈希桶(如表2),6同样是前述计算出来的第二哈希桶分布数量。
另外,将被删除的数据节点对应的哈希桶划分至留存数据节点时(留存数据节点即为删除数据节点之后留下来的数据节点),可以先按照哈希桶数量,从少到多对各留存数据节点进行排序;再将被删除的数据节点对应的哈希桶按照排序,轮询分配至各留存数据节点。
由于进行了排序,轮询一圈下来,若有剩余的哈希桶,还是会优先分配给排序靠前的哈希桶数量较少的数据节点,从而使划分后的数据节点中的哈希桶的分布更为均匀。
步骤104、基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
本步骤中,基于数据路由映射表进行数据分片时,可以先对数据的分片键进行哈希,然后对哈希桶数量进行取余,将取余得到的值确定为该分片键的数据所要分配到的哈希桶的哈希桶标识;再根据数据路由映射表中哈希桶标识与数据节点的编号之间的映射关系,确定出该分片键对应的数据所需分布到的数据节点的编号。
本实施例中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。
实施例二
图2为本申请实施例二提供的一种数据分片装置的结构示意图。本申请实施例所提供的数据分片装置可执行本申请任意实施例所提供的数据分片方法,具备执行方法相应的功能模块和有益效果。该装置可采用软件和/或硬件的方式实现,如图2所示,数据分片装置具体包括:节点数量确定模块201、哈希桶分布数量确定模块202、哈希桶调整模块203、数据分片调整模块204。
其中,节点数量确定模块,用于在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;
哈希桶分布数量确定模块,用于基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;
哈希桶调整模块,用于基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;
数据分片调整模块,用于基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
本申请实施例的技术方案中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。
进一步地,哈希桶分布数量确定模块包括:
第一分布数量确定单元,用于确定哈希桶数量对第一节点数量的取整值,并将取整值确定为变化前各数据节点对应的第一哈希桶分布数量。
进一步地,哈希桶分布数量确定模块包括:
第二分布数量确定单元,用于确定哈希桶数量对第二节点数量的取整值,并将取整值确定为变化后各数据节点对应的第二哈希桶分布数量。
进一步地,哈希桶调整模块包括:
第一调整单元,用于若第一节点数量小于第二节点数量,从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出第二哈希桶分布数量的哈希桶;
第二调整单元,用于若第一节点数量大于第二节点数量,将被删除的数据节点对应的哈希桶划分至留存数据节点。
进一步地,第一调整单元,包括:
第一划分子单元,用于对于任一新增数据节点,将旧数据节点中第N的整倍数个哈希桶划分至新增数据节点,直至新增数据节点的哈希桶的数量达到第二哈希桶分布数量,进行下一新增数据节点的哈希桶的划分;
其中,N为第二节点数量。
进一步地,第二调整单元,包括:
排序子单元,用于按照哈希桶数量,从少到多对各留存数据节点进行排序;
第二划分子单元,用于将被删除的数据节点对应的哈希桶按照排序,轮询分配至各留存数据节点。
进一步地,装置还包括:
编号模块,用于按照正整数的顺序,将整数确定为各哈希桶的哈希桶标识,以及将整数确定为数据节点的节点编号;
映射模块,用于对于任一目标哈希桶,将目标哈希桶的哈希桶标识与数据节点的个数的进行取余,得到取余值,并将节点编号为取余值的目标数据节点与目标哈希桶进行映射;
映射表生成模块,用于基于哈希桶标识、节点编号以及确定的数据节点和哈希桶之间的映射关系生成数据路由映射表。
实施例三
图3为本申请实施例三提供的一种电子设备的结构示意图,如图3所示,该电子设备包括处理器310、存储器320、输入装置330和输出装置340;电子设备中处理器310的数量可以是一个或多个,图3中以一个处理器310为例;电子设备中的处理器310、存储器320、输入装置330和输出装置340可以通过总线或其他方式连接,图3中以通过总线连接为例。
存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据分片方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据分片,即实现上述的数据分片方法:
在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;
基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;
基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;
基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
本申请实施例的技术方案中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。
存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例四
本申请实施例四还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种数据分片方法,该方法包括:
在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;
基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;
基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;
基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
本申请实施例的技术方案中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本申请任意实施例所提供的数据分片方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据分片方法,其特征在于,所述方法包括:
在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,包括:
确定所述哈希桶数量对所述第一节点数量的取整值,并将所述取整值确定为变化前各数据节点对应的第一哈希桶分布数量。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量,包括:
确定所述哈希桶数量对所述第二节点数量的取整值,并将所述取整值确定为变化后各数据节点对应的第二哈希桶分布数量。
4.根据权利要求1所述的方法,其特征在于,所述基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,包括:
若所述第一节点数量小于所述第二节点数量,从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出所述第二哈希桶分布数量的哈希桶;
若所述第一节点数量大于所述第二节点数量,将被删除的数据节点对应的哈希桶划分至留存数据节点。
5.根据权利要求4所述的方法,其特征在于,所述从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出所述第二哈希桶分布数量的哈希桶,包括:
对于任一新增数据节点,将旧数据节点中第N的整倍数个哈希桶划分至所述新增数据节点,直至所述新增数据节点的哈希桶的数量达到所述第二哈希桶分布数量,进行下一新增数据节点的哈希桶的划分;
其中,N为所述第二节点数量。
6.根据权利要求4所述的方法,其特征在于,所述将被删除的数据节点对应的哈希桶划分至留存数据节点,包括:
按照哈希桶数量,从少到多对各所述留存数据节点进行排序;
将被删除的数据节点对应的哈希桶按照所述排序,轮询分配至各所述留存数据节点。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照正整数的顺序,将整数确定为各哈希桶的哈希桶标识,以及将整数确定为数据节点的节点编号;
对于任一目标哈希桶,将所述目标哈希桶的哈希桶标识与数据节点的个数的进行取余,得到取余值,并将节点编号为取余值的目标数据节点与所述目标哈希桶进行映射;
基于所述哈希桶标识、所述节点编号以及确定的数据节点和哈希桶之间的映射关系生成数据路由映射表。
8.一种数据分片装置,其特征在于,所述装置包括:
节点数量确定模块,用于在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;
哈希桶分布数量确定模块,用于基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;
哈希桶调整模块,用于基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;
数据分片调整模块,用于基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据分片方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的数据分片方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2023100235275 | 2023-01-09 | ||
CN202310023527 | 2023-01-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303343A true CN116303343A (zh) | 2023-06-23 |
Family
ID=86817652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310059294.4A Pending CN116303343A (zh) | 2023-01-09 | 2023-01-18 | 数据分片方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303343A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591608A (zh) * | 2024-01-19 | 2024-02-23 | 恒辉信达技术有限公司 | 基于分布式哈希的云原生数据库数据分片方法 |
-
2023
- 2023-01-18 CN CN202310059294.4A patent/CN116303343A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591608A (zh) * | 2024-01-19 | 2024-02-23 | 恒辉信达技术有限公司 | 基于分布式哈希的云原生数据库数据分片方法 |
CN117591608B (zh) * | 2024-01-19 | 2024-04-30 | 恒辉信达技术有限公司 | 基于分布式哈希的云原生数据库数据分片方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109889505B (zh) | 数据持有性验证方法及终端设备 | |
CN109831487B (zh) | 分片文件验证方法及终端设备 | |
CN108287660B (zh) | 数据存储方法和设备 | |
CN108874803B (zh) | 数据存储方法、装置及存储介质 | |
CN111294390B (zh) | 一种区块数据快速同步方法、装置、设备及存储介质 | |
CN111262726B (zh) | 一种配置信息更新方法、装置及计算机可读存储介质 | |
CN110543448A (zh) | 数据同步方法、装置、设备及计算机可读存储介质 | |
CN110008665B (zh) | 一种区块链的权限控制方法及装置 | |
CN111723073B (zh) | 数据存储处理方法、装置、处理系统以及存储介质 | |
US20200065306A1 (en) | Bloom filter partitioning | |
CN107797865A (zh) | 用户任务处理方法及应用服务器 | |
CN110570311B (zh) | 区块链的共识方法、装置及设备 | |
CN104866339A (zh) | Fota数据的分布式持久化管理方法、系统和装置 | |
CN111522811B (zh) | 数据库的处理方法及装置、存储介质、终端 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN116578746A (zh) | 对象去重方法及装置 | |
CN108389124B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20150278543A1 (en) | System and Method for Optimizing Storage of File System Access Control Lists | |
CN112929424B (zh) | 网关负载均衡的方法、装置、设备及存储介质 | |
CN109857805B (zh) | 基于区块链的数据存储方法、相关设备及存储介质 | |
CN115361295B (zh) | 基于topsis的资源备份方法、装置、设备及介质 | |
CN114697142B (zh) | 一种通信数据加密方法及装置、电子设备、存储介质 | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
CN115203255A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN114064706A (zh) | 数据存储方法、装置及服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |