【技术实现步骤摘要】
【国外来华专利技术】数据重分布方法、装置及系统
本申请涉及数据库领域,特别涉及一种数据重分布方法、装置及系统。
技术介绍
在线数据重分布是指在不中断用户业务的情况下完成数据重新分布。目前越来越多的数据库都在应用该技术。在关系型数据库中,数据库的多个节点中维护有一个或多个数据表的数据。通常采用创建临时表的方式来实现数据的在线重分布。例如,对于需要进行数据重分布的第一数据表,先为该表创建临时表。然后将该第一数据表对应节点上部署的第一数据表的所有数据对应复制至临时表对应节点中,在完成数据复制后,交换临时表的数据和第一数据表的数据(该过程称为数据切换),交换完成后,删除临时表和临时表的数据,至此即完成了数据重分布。在上述数据重分布过程中,需要保证源表(即第一数据表)和临时表的数据一致性,还需要执行数据切换过程,因此,在线数据重分布的复杂度较高。
技术实现思路
本申请实施例提供一种数据重分布方法、装置及系统,可以降低在线数据重分布的复杂度。第一方面,提供一种数据重分布方法,包括:确定分布式数据库中与第一数据表分别关联的第一节点集和第二节点集,第一节点集包括在第一数据表的数据被数据重分布之前用于存储第一数据表中的数据的数据节点,第二节点集包括从第一数据表的数据被数据重分布开始用于存储第一数据表中的数据的数据节点;将第一数据表的数据从第一节点集迁移至第二节点集;在迁移所述第一数据表的数据的过程中,当接收到对第一数据表的目标业务请求时,在第一节点集和第二节点集中确定用于响应目标业务请求的第三节点集;< ...
【技术保护点】
一种数据重分布方法,其特征在于,包括:/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任一所述的方法,其特征在于,所述方法包括:
为所述第一节点集上的所述第一数据表中的已迁移数据设置删除标识。
一种数据重分布装置,其特征在于,包括:
第一确定模块,用于确定...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。