一种数据库并发移植的方法、系统及存储介质与流程

文档序号:37602447发布日期:2024-04-18 12:46阅读:15来源:国知局
一种数据库并发移植的方法、系统及存储介质与流程

本发明涉及数据库移植领域,具体为一种数据库并发移植的方法、系统及存储介质。


背景技术:

1、相关术语解释:

2、源数据库:在数据移植中,作为数据源头的一方数据库。

3、目标数据库:在数据移植中,作为数据移植目的地的一方数据库。目标数据库和源数据库可以是同一类型的数据库,也可以是不同类型的数据库。

4、主表:在存在外键关联关系的表中,以另一个关系的外键作主关键字的表被称为主表。

5、从表:在存在外键关联关系的表中,具有此外键的表被称为主表的从表。

6、在数据库移植技术领域中,经常需要面对的情况:一是,移植的数据量大,比如几十tb甚至几百tb;二是,不同数据表中数据量分布极度不均匀,例如参数表等小数据表可能仅仅几百条数据,而记录每笔业务的交易明细表可能数亿笔。

7、现有的数据移植方式,为了达到高效的目的,一般都会同时对多个数据表进行并发移植。但通常存在以下缺陷:

8、(1)由于数据库中不同数据表的数据量分布不均匀,按照表的维度并发移植时,数据量较大的数据表的移植时间决定了数据移植花费的总时长,会成为整个数据库移植的瓶颈;

9、(2)当数据表之间存在外键依赖关系时,从表必须等主表移植完后才能移植,无法进行并行移植。若从表和主表的数据量均较大时,则从表和主表移植花费的时间之和决定了数据移植的总时长,大大降低了并发度,不利于数据移植效率的提升。

10、因此,我们需要开发出一种数据库并发移植的方法和系统,能够解决因数据表的数据量分配不均带来的数据库移植并发率及效率低的问题。


技术实现思路

1、本发明的目的在于提供一种数据库并发移植的方法、系统及存储介质,以解决上述背景技术中提到的现有的因数据表的数据量分配不均带来的数据库移植并发率及效率低的问题。

2、为实现上述目的,本发明采用以下技术方案:

3、根据本发明的一个方面,提供一种数据库并发移植的方法,所述方法包括:

4、源数据库分析,对源数据库进行扫描和分析,获取所述源数据库的特征;

5、并发计划编排,根据所述源数据库分析的结果,对数据移植的任务进行拆分和排序,形成所述并发计划;

6、表结构移植及去外键引用,从所述源数据库中导出第一表结构ddl语句,转换为目标数据库的第二表结构ddl语句,并执行到所述目标数据库中,根据所述源数据库分析的结果,在所述目标数据库中删除所述外键引用;

7、数据移植,根据所述并发计划,进行所述数据移植;

8、数据校验及加外键引用,所述数据移植完成后进行校验,所述校验成功后还原被删除的所述外键引用。

9、根据本发明的另一个方面,提供一种数据库并发移植系统,包括:

10、源数据库分析模块,对源数据库进行扫描和分析,获取所述源数据库的特征;

11、并发计划编排模块,根据所述源数据库分析的结果,对数据移植的任务进行拆分和排序,形成所述并发计划;

12、表结构移植及去外键引用模块,从所述源数据库中导出第一表结构ddl语句,转换为目标数据库的第二表结构ddl语句,并执行到所述目标数据库中,根据所述源数据库分析的结果,在所述目标数据库中删除所述外键引用;

13、数据移植模块,根据所述并发计划,进行所述数据移植;

14、数据校验及加外键引用模块,所述数据移植完成后进行校验,所述校验成功后还原被删除的所述外键引用。

15、基于前述方案,上述对源数据库进行扫描和分析,获取所述源数据库的特征的方法,包括:

16、统计所述源数据库的每个数据表的数据量n;

17、汇总所述数据量,获取所述源数据库的总数据量nt;

18、标识所述数据表中的超大表;

19、分析所述源数据库的所述表结构,确定所述数据表之间是否有外键依赖关系。

20、基于前述方案,上述根据所述源数据库分析的结果,对数据移植的任务进行拆分和排序,形成所述并发计划的方法,包括:

21、将每个所述数据表依据所述数据量顺序排序,并存放到队列q中;

22、从所述队列q中依次取出所述数据表,判断当前所述数据表是否有超大表标识;

23、若有,则识别所述超大表的分区键,根据所述分区键对所述超大表进行分区;

24、并发组分配,计算每个所述并发组的平均数据量,根据所述计算结果分配所述并发组,生成所述并发计划编排表。

25、基于前述方案,上述所述数据移植是根据所述并发计划编排表,采用多进程和多线程的架构模式进行,包括:

26、不同所述并发组采用所述多进程并行模式进行所述数据移植;

27、同一所述并发组内不同所述数据表采用所述多线程并行模式进行所述数据移植。

28、基于前述方案,上述数据移植完成后进行校验,所述校验成功后还原被删除的所述外键引用的方法,包括:

29、检查所述目标数据库中每个所述数据表的所述数据量是否与所述并发计划编排表中的“表记录数”字段一致;

30、若是,则标识移植成功;

31、若否,则根据所述数据表的主键,对所述源数据库和所述目标数据库中的数据进行逐条比对,筛选出差异数据,并形成分析报告和修订sql;

32、执行所述修订sql;

33、执行所述外键引用ddl语句还原所述目标数据库的所述外键引用。

34、基于前述方案,上述根据所述分区键对所述超大表进行分区的方法,包括:

35、计算每个所述分区的平均数据量,其中,为每个所述分区的平均数据量,nt为超大表的数据量,n为超大表分成小数据表的数量;

36、识别所述超大表的分区键;

37、计算i个键范围内的所述数据量之和,比较与的大小,当满足,且时,则i为所述键范围的结束点,i+1为下一键范围的起始点,其中ni为任一所述键范围内的数据量;

38、重复执行上一步,直至所述超大表分区完成。

39、基于前述方案,上述计算每个所述并发组的平均数据量,根据所述计算结果分配所述并发组的方法,包括:

40、计算每个所述并发组的平均数据量,其中,为每个所述并发组的平均数据量,nt为总数据量,m为所述数据移植的并发组数量;

41、计算j个所述数据表的所述数据量之和,比较与的大小,当满足,且时,则把j个所述数据表分配为一个所述并发组,其中nj为任一个所述数据表的数据量;

42、重复执行上一步,直至所有所述数据表均分配完成。

43、基于前述方案,上述修订sql的生成规则包括:

44、若所述差异数据只存在于所述源数据库中,则从所述源数据库中取出所述差异数据生成insert语句;

45、若所述差异数据只存在于所述目标数据库中,则从所述目标数据库中取出所述差异数据生成delete语句;

46、若所述差异数据在所述源数据库及所述目标数据库中均存在,则从所述源数据库中取出所述差异数据生成update语句。

47、本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行代码;所述计算机可执行代码被执行后,能够实现前述一个或多个技术方案提供的数据库并发移植的方法。

48、由上述技术方案可知,本发明与现有技术相比至少具备以下优点和积极效果:

49、(1)本发明通过对超大表进行分区,将超大表拆分为多个小数据表,多个任务在多进程和多线程中并发地进行数据移植,解决了数据库中因为数据表的数据量分布不均匀而导致的移植时间长的问题,有效地提高了移植的效率;

50、(2)数据校验过程使用分区校验,有效地缩短数据移植后校验的时间,进一步地提升了移植效率并保障了数据移植的准确性;

51、(3)本发明对超大表的分区可根据设定的技术方案自动进行,设置参数化配置,使用时可根据实际情况灵活调整;且根据设定的技术方案自动完成的分区结果也可以根据数据库的不同的业务特性进行人工调整,确保分区键携带更多的重要的业务与技术信息,使得分区更精准、平衡;

52、(4)本发明对于小数据量的数据移植任务,用单台机器、单节点即可部署移植,简单高效;对于大数据量的数据移植任务,可进行横向扩展,采用分布式部署,充分利用多台机器的cpu、内存等资源来并行移植;

53、(5)本发明具有良好的通用性,适用于所有关系型数据库之间的数据移植。只要源数据库和目标数据库支持标准的select和insert语句,即可完成这两个数据库之间的数据移植。所以可以广泛使用于oracle、mysql、postgresql、db2等数据库及其他国产数据库。

54、本发明应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1