数据重分布方法、装置及系统制造方法及图纸

技术编号:28434027 阅读:11 留言:0更新日期:2021-05-11 18:45
本申请实施例提供一种数据重分布方法、装置及系统,应用于数据库领域,该方法包括:确定分布式数据库中与第一数据表分别关联的第一节点集和第二节点集,第一节点集包括在第一数据表的数据被数据重分布之前用于存储第一数据表中的数据的数据节点,第二节点集包括从第一数据表的数据被数据重分布开始用于存储第一数据表中的数据的数据节点;将第一数据表的数据从第一节点集迁移至第二节点集;在迁移第一数据表的数据的过程中,当接收到对第一数据表的目标业务请求时,在第一节点集和第二节点集中确定用于响应目标业务请求的第三节点集;将目标业务请求发送至第三节点集中的数据节点。本申请能够降低在线数据重分布的复杂度。本申请用于数据存储。

【技术实现步骤摘要】
【国外来华专利技术】数据重分布方法、装置及系统
本申请涉及数据库领域,特别涉及一种数据重分布方法、装置及系统。
技术介绍
在线数据重分布是指在不中断用户业务的情况下完成数据重新分布。目前越来越多的数据库都在应用该技术。在关系型数据库中,数据库的多个节点中维护有一个或多个数据表的数据。通常采用创建临时表的方式来实现数据的在线重分布。例如,对于需要进行数据重分布的第一数据表,先为该表创建临时表。然后将该第一数据表对应节点上部署的第一数据表的所有数据对应复制至临时表对应节点中,在完成数据复制后,交换临时表的数据和第一数据表的数据(该过程称为数据切换),交换完成后,删除临时表和临时表的数据,至此即完成了数据重分布。在上述数据重分布过程中,需要保证源表(即第一数据表)和临时表的数据一致性,还需要执行数据切换过程,因此,在线数据重分布的复杂度较高。
技术实现思路
本申请实施例提供一种数据重分布方法、装置及系统,可以降低在线数据重分布的复杂度。第一方面,提供一种数据重分布方法,包括:确定分布式数据库中与第一数据表分别关联的第一节点集和第二节点集,第一节点集包括在第一数据表的数据被数据重分布之前用于存储第一数据表中的数据的数据节点,第二节点集包括从第一数据表的数据被数据重分布开始用于存储第一数据表中的数据的数据节点;将第一数据表的数据从第一节点集迁移至第二节点集;在迁移所述第一数据表的数据的过程中,当接收到对第一数据表的目标业务请求时,在第一节点集和第二节点集中确定用于响应目标业务请求的第三节点集;<br>将目标业务请求发送至第三节点集中的数据节点,目标业务请求用于供第三节点集中每个节点基于目标业务请求进行业务处理。本申请实施例提供的数据重分布方法,无需建立临时表,即可进行目标任务的执行,实现在线数据重分布,这样无需进行表间数据迁移,仅需进行表内数据迁移,从而降低了在线数据重分布的复杂度。在一种可能实现中,在第一节点集和第二节点集中确定用于响应目标业务请求的第三节点集,包括:当目标业务请求为数据添加请求时,在第二节点集中确定用于响应所述数据添加请求的第三节点集。将新增数据直接写入重分布后的节点,可以有效降低重分布的复杂度,提高数据迁移效率例如,在第二节点集中确定用于响应所述数据添加请求的第三节点集,包括:根据数据添加请求所携带的新增数据的键值计算哈希值;在第二节点集中确定所述哈希值对应的数据节点,确定的数据节点属于第三节点集。采用哈希分布规则进行数据分布可以实现负载均衡。在一种可能实现中,在第一节点集和第二节点集中确定用于响应目标业务请求的第三节点集,包括:当所述目标业务请求为数据删除请求或者数据修改请求或者与第一数据表关联的数据查询请求时,在所述第一节点集中确定用于响应所述目标业务请求的数据节点,并在所述第二节点集中确定用于响应所述目标业务请求的数据节点,由从所述第一节点集中确定的数据节点和从所述第二节点集中确定的数据节点组成所述第三节点集。在一种可能实现中,将第一数据表的数据从第一节点集迁移至第二节点集,包括:在第一节点集存储的第一数据表的数据中筛选待迁移数据,所述待迁移数据为所述第二节点集在迁移前没有存储的所述第一数据表的数据;将待迁移数据从第一节点集迁移至第二节点集。由于在一些场景中,例如扩容场景中,一些数据可能无需进行迁移,这些数据可以称之为无效迁移数据。例如,在迁移前和迁移后在数据节点中部署的位置不变的数据和/或在迁移动作前已经删除的数据,对这些数据执行迁移动作,不仅占用数据资源,还会影响迁移的效率。因此可以通过筛选操作剔除无效迁移数据,将实际需要进行迁移的数据作为待迁移数据,进行数据迁移。也即是该待迁移数据包括第一数据表的数据中除无效迁移数据之外的数据。这样可以实现表数据的部分迁移,减少迁移的数据量,减少数据资源占用,提高迁移效率。示例的,在第一节点集存储的第一数据表的数据中筛选待迁移数据,包括:获取第一数据表中的数据与第一节点集的数据节点的第一映射关系;获取第一数据表中的数据与第二节点集的数据节点的第二映射关系;对于所述第一数据表中的目标数据,在基于所述第一映射关系确定的与所述目标数据对应的数据节点与基于所述第二映射关系确定的与所述目标数据对应的数据节点不同时,在基于所述第一映射关系确定的与所述目标数据对应的数据节点中,将所述目标数据确定为所述待迁移数据。在一种可能实现中,通过串行执行的多个分布式事务,分别将所述第一数据表的不同数据从所述第一节点集迁移至所述第二节点集。由于采用串行执行的多个分布式事务进行数据迁移,虽然迁移第一数据表的总耗时不一定减短,但每次分布式事务的资源消耗少,单次迁移时间短,由于已经迁移成功的事务的数据,是不需要再重新迁移的,因此,如果一次迁移失败后重新进行数据迁移的代价较低,资源消耗较小,减少了对同时执行的其他用户作业的影响。在一种可能实现中,所述通过串行执行的多个分布式事务,分别将所述第一数据表的不同数据从所述第一节点集迁移至所述第二节点集,包括:在串行执行所述多个分布式事务时,通过当前执行到的分布式事务,从所述第一节点集中的所述第一数据表的未迁移数据中选择满足迁移条件的待迁移数据,并将选择的所述待迁移数据从所述第一节点集迁移至所述第二节点集,选择的所述待迁移数据在被迁移过程中被加锁;其中,所述迁移条件包括:通过当前执行到的分布式事务迁移的所述待迁移数据的数据量小于或等于指定数据量阈值,和/或,通过当前执行到的分布式事务迁移的迁移时长小于或等于指定时长阈值。在一种可能实现中,所述在串行执行所述多个分布式事务时,通过当前执行到的分布式事务,从所述第一节点集中的所述第一数据表的未迁移数据选择满足迁移条件的待迁移数据,并将选择的所述待迁移数据从所述第一节点集迁移至所述第二节点集,包括:基于所述当前执行到的分布式事务,为n个数据节点分别生成n个分布式计划,所述第一节点集包括所述n个数据节点,所述n个数据节点与所述n个分布式计划一一对应,n为正整数;指示所述n个数据节点分别执行所述n个分布式计划来并行从所述n个数据节点中的所述第一数据表的未迁移数据中选择满足子迁移条件的待迁移数据、并将选择的满足所述子迁移条件的所述待迁移数据从所述n个数据节点发送至所述第二节点集,所述子迁移条件是根据所述迁移条件确定的。在一种可能实现中,该方法还包括:在迁移所述第一数据表的数据的过程中,若检测到回滚触发事件,将通过所述多个分布式事务已迁移的数据进行回滚。在一种可能实现中,该方法还包括:在迁移所述第一数据表的数据的过程中,若检测到回滚触发事件,将通过当前执行到的分布式事务已迁移的数据进行回滚。其中,回滚触发事件可以是第一数据表关联的数据节点故障(如宕机),数据传输错误,网络错误,或接收到回滚指令等。本申请实施例中,前述分布式事务保证了迁移过程的数据一致性和持久性,当分布式事务有多个时,针对第一数据表的整体的数据迁移过程拆分成通过多个分布式事务的迁移本文档来自技高网...

【技术保护点】
一种数据重分布方法,其特征在于,包括:/n确定分布式数据库中与第一数据表分别关联的第一节点集和第二节点集,所述第一节点集包括在所述第一数据表的数据被数据重分布之前用于存储所述第一数据表中的数据的数据节点,所述第二节点集包括从所述第一数据表的数据被数据重分布开始用于存储所述第一数据表中的数据的数据节点;/n将所述第一数据表的数据从所述第一节点集迁移至所述第二节点集;/n在迁移所述第一数据表的数据的过程中,当接收到对所述第一数据表的目标业务请求时,在所述第一节点集和所述第二节点集中确定用于响应所述目标业务请求的第三节点集;/n将所述目标业务请求发送至所述第三节点集中的数据节点。/n

【技术特征摘要】
【国外来华专利技术】一种数据重分布方法,其特征在于,包括:
确定分布式数据库中与第一数据表分别关联的第一节点集和第二节点集,所述第一节点集包括在所述第一数据表的数据被数据重分布之前用于存储所述第一数据表中的数据的数据节点,所述第二节点集包括从所述第一数据表的数据被数据重分布开始用于存储所述第一数据表中的数据的数据节点;
将所述第一数据表的数据从所述第一节点集迁移至所述第二节点集;
在迁移所述第一数据表的数据的过程中,当接收到对所述第一数据表的目标业务请求时,在所述第一节点集和所述第二节点集中确定用于响应所述目标业务请求的第三节点集;
将所述目标业务请求发送至所述第三节点集中的数据节点。


根据权利要求1所述的方法,其特征在于,所述在所述第一节点集和所述第二节点集中确定用于响应所述目标业务请求的第三节点集,包括:
当所述目标业务请求为数据添加请求时,在所述第二节点集中确定用于响应所述数据添加请求的所述第三节点集。


根据权利要求2所述的方法,其特征在于,所述在所述第二节点集中确定用于响应所述数据添加请求的所述第三节点集,包括:
根据所述数据添加请求所携带的新增数据的键值计算哈希值;
在所述第二节点集中确定所述哈希值对应的数据节点,确定的数据节点属于所述第三节点集。


根据权利要求1所述的方法,其特征在于,所述在所述第一节点集和所述第二节点集中确定用于响应所述目标业务请求的第三节点集,包括:
当所述目标业务请求为数据删除请求或者数据修改请求或者与第一数据表关联的数据查询请求时,在所述第一节点集中确定用于响应所述目标业务请求的数据节点,并在所述第二节点集中确定用于响应所述目标业务请求的数据节点,由从所述第一节点集中确定的数据节点和从所述第二节点集中确定的数据节点组成所述第三节点集。


根据权利要求1至4任一所述的方法,其特征在于,所述将所述第一数据表的数据从所述第一节点集迁移至所述第二节点集,包括:
在所述第一节点集存储的所述第一数据表的数据中筛选待迁移数据,所述待迁移数据为所述第二节点集在迁移前没有存储的所述第一数据表的数据;
将所述待迁移数据从所述第一节点集迁移至所述第二节点集。


根据权利要求5所述的方法,其特征在于,所述在所述第一节点集存储的所述第一数据表的数据中筛选待迁移数据,包括:
获取所述第一数据表中的数据与所述第一节点集的数据节点的第一映射关系;
获取所述第一数据表中的数据与所述第二节点集的数据节点的第二映射关系;
对于所述第一数据表中的目标数据,在基于所述第一映射关系确定的与所述目标数据对应的数据节点与基于所述第二映射关系确定的与所述目标数据对应的数据节点不同时,在基于所述第一映射关系确定的与所述目标数据对应的数据节点中,将所述目标数据确定为所述待迁移数据。


根据权利要求1至6任一所述的方法,其特征在于,所述将所述第一数据表的数据从所述第一节点集迁移至所述第二节点集,包括:
通过串行执行的多个分布式事务,分别将所述第一数据表的不同数据从所述第一节点集迁移至所述第二节点集。


根据权利要求7所述的方法,其特征在于,所述通过串行执行的多个分布式事务,分别将所述第一数据表的不同数据从所述第一节点集迁移至所述第二节点集,包括:
在串行执行所述多个分布式事务时,通过当前执行到的分布式事务,从所述第一节点集中的所述第一数据表的未迁移数据中选择满足迁移条件的待迁移数据,并将选择的所述待迁移数据从所述第一节点集迁移至所述第二节点集,选择的所述待迁移数据在被迁移过程中被加锁;
其中,所述迁移条件包括:通过当前执行到的分布式事务迁移的所述待迁移数据的数据量小于或等于指定数据量阈值,和/或,通过当前执行到的分布式事务迁移的迁移时长小于或等于指定时长阈值。


根据权利要求8所述的方法,其特征在于,
所述在串行执行所述多个分布式事务时,通过当前执行到的分布式事务,从所述第一节点集中的所述第一数据表的未迁移数据选择满足迁移条件的待迁移数据,并将选择的所述待迁移数据从所述第一节点集迁移至所述第二节点集,包括:
基于所述当前执行到的分布式事务,为n个数据节点分别生成n个分布式计划,所述第一节点集包括所述n个数据节点,所述n个数据节点与所述n个分布式计划一一对应,n为正整数;
指示所述n个数据节点分别执行所述n个分布式计划来并行从所述n个数据节点中的所述第一数据表的未迁移数据中选择满足子迁移条件的待迁移数据、并将选择的满足所述子迁移条件的所述待迁移数据从所述n个数据节点发送至所述第二节点集,所述子迁移条件是根据所述迁移条件确定的。


根据权利要求7至9任一所述的方法,其特征在于,所述方法还包括:
在迁移所述第一数据表的数据的过程中,若检测到回滚触发事件,将通过所述多个分布式事务已迁移的数据进行回滚。


根据权利要求7至9任一所述的方法,其特征在于,所述方法还包括:
在迁移所述第一数据表的数据的过程中,若检测到回滚触发事件,将通过当前执行到的分布式事务已迁移的数据进行回滚。


根据权利要求1至11任一所述的方法,其特征在于,所述方法包括:
为所述第一节点集上的所述第一数据表中的已迁移数据设置删除标识。


一种数据重分布装置,其特征在于,包括:
第一确定模块,用于确定...

【专利技术属性】
技术研发人员:佟强
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1