计算;推算;计数设备的制造及其应用技术1.本技术实施例涉及分布式数据库技术领域,尤其涉及一种数据分片方法、装置、电子设备及存储介质。背景技术:2.传统的分布式数据库中,会涉及到数据分片技术,数据分片即用来确定数据在多台存储设备上分布的技术。通常,为了实现数据分片,会使用数据的分片值(key)或者分片值的哈希值来计算分片值的分布,从而确定出数据的分布。3.其中,最常用的是利用分片值的哈希值,对数据节点数量进行取余,将取余的值确定为分片值对应的数据所需分布在的数据节点的编号,基于该方法将数据存储到各个数据节点中。4.但是,随着分布式数据库中数据存储量的不断发生变化,很可能会出现增加或者减少数据节点数量的需求,由于前述数据分片依赖于数据节点的数量,当数据节点的数量发生变化时,前述数据分片结果将无法继续使用,出现数据路由算法失效的情况,此时就需要重新进行数据分片,而重新进行数据分片则意味着大量的数据迁移,需要耗费较长的时间,导致数据库性能在该较长时间内受到影响。技术实现要素:5.本技术实施例提供一种数据分片方法、装置、电子设备及存储介质,以减少数据节点数量发生变化时的数据迁移量,缩减数据库性能受到影响的时长。6.第一方面,本技术实施例提供了一种数据分片方法,所述方法包括:在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。7.第二方面,本技术实施例提供了一种数据分片装置,所述装置包括:节点数量确定模块,用于在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;哈希桶分布数量确定模块,用于基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;哈希桶调整模块,用于基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;数据分片调整模块,用于基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。8.第三方面,本技术实施例还提供了一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本技术任一实施例提供的数据分片方法。9.第四方面,本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本技术任一实施例提供的数据分片方法。10.本技术实施例的技术方案,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于所述第一节点数量和所述哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于所述第二节点数量和所述哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于所述第一哈希桶分布数量以及所述第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。附图说明11.图1为本技术实施例一提供的数据分片方法的流程示意图;图2为本技术实施例二提供的一种数据分片装置的结构示意图;图3为本技术实施例三提供的一种电子设备的结构示意图。具体实施方式12.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部结构。13.实施例一图1为本技术实施例一提供的数据分片方法的流程示意图,本实施例从第一平台端进行说明,方法可适用于数据分片的场景。该方法可以由数据分片装置来执行,该装置可采用硬件和/或软件的方式实现,并一般可以集成在具有数据运算能力的计算机等电子设备中,具体包括如下步骤:步骤101、在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量。14.本步骤中,数据节点数量发生变化指的是数据节点数量减少或者增多,这两种情况涉及了不同的哈希桶的调整方式,具体会在后续步骤103中进行说明,此处不再赘述。15.另外,变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量可以从存储单元中直接获取,为了便于本步骤获取,可以实时监测数据节点的数量以及哈希桶的数量,并将其记录在存储单元中。16.步骤102、基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量。17.为了充分利用各数据节点的cpu、磁盘等资源,需要保证各节点的数据较为均匀地分布,即各数据节点的哈希桶的数量相差要小于等于1。为了实现该目的,本实施例提供了哈希桶和数据节点进行映射的方案。18.具体的,可以先按照正整数的顺序,将整数确定为各哈希桶的哈希桶标识,以及将整数确定为数据节点的节点编号;对于任一目标哈希桶,将目标哈希桶的哈希桶标识与数据节点的个数的进行取余,得到取余值,并将节点编号为取余值的目标数据节点与目标哈希桶进行映射;基于哈希桶标识、节点编号以及确定的数据节点和哈希桶之间的映射关系生成数据路由映射表。19.这种方式可以保证每个数据节点分配到的哈希桶的数量相近,且数量差小于等于1。20.另外,为了便于后续数据分片时不再对路由算法进行调整,本实施例生成了前述数据路由映射表,该映射表中为每个哈希桶和数据节点进行了编号和映射,在后续新增数据节点或者减少数据节点的情况下,直接调整相关的哈希桶映射的数据节点即可,然后再基于该路由表进行数据分片即可。21.需要说明的是,本步骤中,第一哈希桶分布数量和第二哈希桶分布数量指的是期望各数据节点应当分布的哈希桶的数量,并非是实际的哈希桶分布数量。22.具体的,第一哈希桶分布数量的确定过程可以为:确定哈希桶数量对第一节点数量的取整值,并将取整值确定为变化前各数据节点对应的第一哈希桶分布数量。23.第二哈希桶分布数量的确定过程可以为:确定哈希桶数量对第二节点数量的取整值,并将取整值确定为变化后各数据节点对应的第二哈希桶分布数量。24.步骤103、基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中。25.本步骤中,若第一节点数量小于第二节点数量,说明增加的数据节点,这种情况对应了为新增数据节点划分哈希桶;若第一节点数量大于第二节点数量,说明减少了数据节点,这种情况对应了为留存数据节点划分哈希桶。26.具体的,若第一节点数量小于第二节点数量,从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出第二哈希桶分布数量的哈希桶;若第一节点数量大于第二节点数量,将被删除的数据节点对应的哈希桶划分至留存数据节点。27.从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出第二哈希桶分布数量的哈希桶时,对于任一新增数据节点,将旧数据节点中第n的整倍数个哈希桶划分至新增数据节点,直至新增数据节点的哈希桶的数量达到第二哈希桶分布数量,进行下一新增数据节点的哈希桶的划分;其中,n为第二节点数量。28.在一个具体的例子中,若数据节点的数量从2增加到3,此时n等于3,在增加之前,哈希桶与数据节点之间的映射关系如下表1所示:表1那么第n的整数倍个,即是第3个、第6个、第9个等等,从表1中可以知道,划分给数据节点3的哈希桶即为5、6、11、12、17、18等等。在划分时,可以按照哈希桶标识的次序从旧的数据节点中轮询划分,即按照前述5、6、11、12、17、18等等的顺序划分给新增数据节点,直至新增数据节点的哈希桶的数量达到第二哈希桶分布数量。29.调整后的哈希桶与数据节点之间的映射关系如下表2所示:表2基于这种划分方式,最后划分得到的各数据节点的哈希桶的数量仍然是较为均匀的,还是以上述示例为例,假如总共有18个哈希桶,那么划分后,每个数据节点都各自对应了6个哈希桶(如表2),6同样是前述计算出来的第二哈希桶分布数量。30.另外,将被删除的数据节点对应的哈希桶划分至留存数据节点时(留存数据节点即为删除数据节点之后留下来的数据节点),可以先按照哈希桶数量,从少到多对各留存数据节点进行排序;再将被删除的数据节点对应的哈希桶按照排序,轮询分配至各留存数据节点。31.由于进行了排序,轮询一圈下来,若有剩余的哈希桶,还是会优先分配给排序靠前的哈希桶数量较少的数据节点,从而使划分后的数据节点中的哈希桶的分布更为均匀。32.步骤104、基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。33.本步骤中,基于数据路由映射表进行数据分片时,可以先对数据的分片键进行哈希,然后对哈希桶数量进行取余,将取余得到的值确定为该分片键的数据所要分配到的哈希桶的哈希桶标识;再根据数据路由映射表中哈希桶标识与数据节点的编号之间的映射关系,确定出该分片键对应的数据所需分布到的数据节点的编号。34.本实施例中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。35.实施例二图2为本技术实施例二提供的一种数据分片装置的结构示意图。本技术实施例所提供的数据分片装置可执行本技术任意实施例所提供的数据分片方法,具备执行方法相应的功能模块和有益效果。该装置可采用软件和/或硬件的方式实现,如图2所示,数据分片装置具体包括:节点数量确定模块201、哈希桶分布数量确定模块202、哈希桶调整模块203、数据分片调整模块204。36.其中,节点数量确定模块,用于在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;哈希桶分布数量确定模块,用于基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;哈希桶调整模块,用于基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;数据分片调整模块,用于基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。37.本技术实施例的技术方案中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。38.进一步地,哈希桶分布数量确定模块包括:第一分布数量确定单元,用于确定哈希桶数量对第一节点数量的取整值,并将取整值确定为变化前各数据节点对应的第一哈希桶分布数量。39.进一步地,哈希桶分布数量确定模块包括:第二分布数量确定单元,用于确定哈希桶数量对第二节点数量的取整值,并将取整值确定为变化后各数据节点对应的第二哈希桶分布数量。40.进一步地,哈希桶调整模块包括:第一调整单元,用于若第一节点数量小于第二节点数量,从变化前的旧数据节点对应的哈希桶中,为每个新增数据节点划分出第二哈希桶分布数量的哈希桶;第二调整单元,用于若第一节点数量大于第二节点数量,将被删除的数据节点对应的哈希桶划分至留存数据节点。41.进一步地,第一调整单元,包括:第一划分子单元,用于对于任一新增数据节点,将旧数据节点中第n的整倍数个哈希桶划分至新增数据节点,直至新增数据节点的哈希桶的数量达到第二哈希桶分布数量,进行下一新增数据节点的哈希桶的划分;其中,n为第二节点数量。42.进一步地,第二调整单元,包括:排序子单元,用于按照哈希桶数量,从少到多对各留存数据节点进行排序;第二划分子单元,用于将被删除的数据节点对应的哈希桶按照排序,轮询分配至各留存数据节点。43.进一步地,装置还包括:编号模块,用于按照正整数的顺序,将整数确定为各哈希桶的哈希桶标识,以及将整数确定为数据节点的节点编号;映射模块,用于对于任一目标哈希桶,将目标哈希桶的哈希桶标识与数据节点的个数的进行取余,得到取余值,并将节点编号为取余值的目标数据节点与目标哈希桶进行映射;映射表生成模块,用于基于哈希桶标识、节点编号以及确定的数据节点和哈希桶之间的映射关系生成数据路由映射表。44.实施例三图3为本技术实施例三提供的一种电子设备的结构示意图,如图3所示,该电子设备包括处理器310、存储器320、输入装置330和输出装置340;电子设备中处理器310的数量可以是一个或多个,图3中以一个处理器310为例;电子设备中的处理器310、存储器320、输入装置330和输出装置340可以通过总线或其他方式连接,图3中以通过总线连接为例。45.存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据分片方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据分片,即实现上述的数据分片方法:在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。46.本技术实施例的技术方案中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。47.存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。48.实施例四本技术实施例四还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种数据分片方法,该方法包括:在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。49.本技术实施例的技术方案中,在数据节点数量发生变化的情况下,获取变化之前的第一节点数量、变化后的第二节点数量以及哈希桶的数量;基于第一节点数量和哈希桶数量确定变化前各数据节点对应的第一哈希桶分布数量,基于第二节点数量和哈希桶数量确定变化后各数据节点对应的第二哈希桶分布数量;基于第一哈希桶分布数量以及第二哈希桶分布数量为新增数据节点或者留存数据节点划分哈希桶,并将划分后的哈希桶与数据节点直接的映射关系更新至预设的数据路由映射表中;基于更新后的数据路由映射表中发生变化的映射关系进行数据分片的调整。基于该数据路由映射表的出现,在数据节点数量发生变化时,仅需要调整该数据路由映射表,且调整的方式,在新增数据节点时,仅涉及到旧数据节点与新增数据节点之间的哈希桶变化,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的哈希桶变化,在后续数据分片调整的数据迁移,在新增数据节点时,也仅涉及到旧数据节点与新增数据节点之间的数据迁移,在删除数据节点时,仅涉及到被删除数据节点与留存数据节点之间的数据迁移,数据迁移量大大减少。50.当然,本技术实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本技术任意实施例所提供的数据分片方法中的相关操作。51.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本技术可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory, rom)、随机存取存储器(random access memory, ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例的方法。52.值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。53.注意,上述仅为本技术的较佳实施例及所运用技术原理。本领域技术人员会理解,本技术不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术构思的情况下,还可以包括更多其他等效实施例,而本技术的范围由所附的权利要求范围决定。
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
数据分片方法、装置、电子设备及存储介质与流程 专利技术说明
作者:admin
2023-06-28 20:05:09
510
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术