本申请涉及计算机,尤其涉及一种数据库迁移方法、装置、电子设备和存储介质。
背景技术:
1、数据库迁移是指从源数据库导出数据,然后导入目标数据库。在面对海量数据时,相关技术采用对数据进行定长切片的方法进行数据库迁移,该方法只适用于主键为整型的数据库,无法适用于主键为字符串类型的数据库。
2、因此,如何实现字符串主键数据库的高效迁移成为业界亟待解决的技术问题。
技术实现思路
1、本申请提供一种数据库迁移方法、装置、电子设备和存储介质,用于解决如何实现字符串主键数据库的高效迁移的技术问题。
2、本申请提供一种数据库迁移方法,包括:
3、确定源数据库中的待迁移数据;
4、基于所述待迁移数据对应的字符串主键,生成有向无环图;所述有向无环图用于表示所述字符串主键中各个字符的顺序;
5、遍历所述有向无环图,确定多个字符串主键前缀,并基于所述多个字符串主键前缀,将所述待迁移数据分为多个待迁移数据块;
6、将各个字符串主键前缀对应的待迁移数据块从所述源数据库迁移至目标数据库。
7、在一些实施例中,所述基于所述待迁移数据对应的字符串主键,生成有向无环图,包括:
8、以各个字符串主键中的字符为节点,以字符之间的顺序为边,生成所述有向无环图。
9、在一些实施例中,所述遍历所述有向无环图,确定多个字符串主键前缀,包括:
10、基于深度优先搜索算法对所述有向无环图进行遍历,确定当前节点;
11、基于所述有向无环图中根节点到所述当前节点之间的节点序列,确定候选字符串主键前缀;
12、基于所述候选字符串主键前缀,生成主键查询对应的执行计划分析语句;
13、基于所述执行计划分析语句的分析结果,将所述候选字符串主键前缀确定为所述字符串主键前缀;
14、对所述有向无环图进行剪枝,将所述当前节点对应的子节点确定为无需遍历节点。
15、在一些实施例中,所述基于所述执行计划分析语句的分析结果,将所述候选字符串主键前缀确定为所述字符串主键前缀,包括:
16、基于所述执行计划分析语句的分析结果,确定所述候选字符串主键前缀对应的数据记录影响数量;
17、在所述数据记录影响数量小于或者等于预设数量的情况下,将所述候选字符串主键前缀确定为所述字符串主键前缀;
18、其中,所述预设数量是基于所述源数据库的单次查询数据记录最大值或者所述源数据库的单位时间内数据记录处理最大值确定的。
19、在一些实施例中,所述将各个字符串主键前缀对应的待迁移数据块从所述源数据库迁移至目标数据库,包括:
20、基于各个字符串主键前缀在所述源数据库中进行查询,确定各个字符串主键前缀对应的待迁移数据块;
21、确定所述源数据库的单位时间并发处理数据量;
22、基于所述单位时间并发处理数据量,对各个字符串主键前缀对应的待迁移数据块进行分组;
23、对各个分组对应的数据从所述源数据库迁移至所述目标数据库进行并发控制。
24、在一些实施例中,所述对各个分组对应的数据从所述源数据库迁移至所述目标数据库进行并发控制,包括:
25、确定各个分组对应的数据处理预设时长;
26、在任一分组对应的数据处理实际时长小于所述数据处理预设时长的情况下,基于所述数据处理预设时长与所述数据处理预设时长之间的差值,确定所述源数据库在处理所述任一分组对应的数据时的休眠时长。
27、在一些实施例中,所述将各个字符串主键前缀对应的待迁移数据块从所述源数据库迁移至目标数据库之后,所述方法还包括:
28、确定所述目标数据库中的新增数据量和更新数据量;
29、基于所述新增数据量和所述更新数据量,确定迁移数据量。
30、本申请提供一种数据库迁移装置,包括:
31、确定模块,用于确定源数据库中的待迁移数据;
32、生成模块,用于基于所述待迁移数据对应的字符串主键,生成有向无环图;所述有向无环图用于表示所述字符串主键中各个字符的顺序;
33、划分模块,用于遍历所述有向无环图,确定多个字符串主键前缀,并基于所述多个字符串主键前缀,将所述待迁移数据分为多个待迁移数据块;
34、迁移模块,用于将各个字符串主键前缀对应的待迁移数据块从所述源数据库迁移至目标数据库。
35、本申请提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的数据库迁移方法。
36、本申请提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的数据库迁移方法。
37、本申请提供的数据库迁移方法、装置、电子设备和存储介质,确定源数据库中的待迁移数据;基于待迁移数据对应的字符串主键,生成有向无环图;有向无环图用于表示字符串主键中各个字符的顺序;遍历有向无环图,确定多个字符串主键前缀,并基于多个字符串主键前缀,将待迁移数据分为多个待迁移数据块;将各个字符串主键前缀对应的待迁移数据块从源数据库迁移至目标数据库;由于通过根据字符串主键生成有向无环图,通过图搜索的方式确定字符串主键前缀,根据字符串主键前缀对数据进行分块,通过分块迁移的方式实现了字符串主键数据库的高效迁移,避免了对数据库进行整体迁移,提高了数据迁移的效率;此外,数据分块的依据是字符串主键前缀,而不是固定的数据长度,分块结果对数据完整性的影响程度较小,提高了数据迁移的安全性。
1.一种数据库迁移方法,其特征在于,包括:
2.根据权利要求1所述的数据库迁移方法,其特征在于,所述基于所述待迁移数据对应的字符串主键,生成有向无环图,包括:
3.根据权利要求1所述的数据库迁移方法,其特征在于,所述遍历所述有向无环图,确定多个字符串主键前缀,包括:
4.根据权利要求3所述的数据库迁移方法,其特征在于,所述基于所述执行计划分析语句的分析结果,将所述候选字符串主键前缀确定为所述字符串主键前缀,包括:
5.根据权利要求1所述的数据库迁移方法,其特征在于,所述将各个字符串主键前缀对应的待迁移数据块从所述源数据库迁移至目标数据库,包括:
6.根据权利要求5所述的数据库迁移方法,其特征在于,所述对各个分组对应的数据从所述源数据库迁移至所述目标数据库进行并发控制,包括:
7.根据权利要求1至6任一项所述的数据库迁移方法,其特征在于,所述将各个字符串主键前缀对应的待迁移数据块从所述源数据库迁移至目标数据库之后,所述方法还包括:
8.一种数据库迁移装置,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的数据库迁移方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的数据库迁移方法。