一种基于文件的异构数据库数据一致性校验方法与流程

文档序号:31456910发布日期:2022-09-07 14:52阅读:70来源:国知局
一种基于文件的异构数据库数据一致性校验方法与流程

1.本发明属于数据迁移校验领域,具体涉及一种基于文件的异构数据库数据一致性校验方法。


背景技术:

2.在大型的企业应用中,存在很多的业务场景,需要迁移某个数据库表中的数据到另外一个异构的数据库中,迁移的方式有很多,无论采用哪一种迁移方法,都会面临迁移后的数据一致性校验的问题,如果不做校验,数据可能是不一致的,那会影响数据的使用,影响业务系统。那该如何校验呢,通常的校验方法会基于内存,或者公共存储。
3.基于内存的校验方法利用数据结构,将校验过程产生的中间结果保存在内存中,后续的比对直接从内存中读取数据;这种方式效率高,但占用内存大,不适合数据量很大的场景;如若校验的表数据量很大,经常会导致内存溢出;基于公共存储的校验方法是将校验过程的中间结果保存在公共的存储中,比如redis等;这种方式可以支持超大表的校验,但引入其他公共存储,使得系统依赖变复杂,健壮性降低;
4.专利“一种异构数据库同步数据一致性校验方法及装置(申请号:201910510663.0)”提出根据同步的源库事务信息对比源端事务日志与目标端事务日志,校验同步数据的一致性。但本专利的校验方式依赖数据库的日志,对于开源数据库,日志格式是公开的,可以正常的解析;但对于非开源的数据库,日志格式非公开的,日志解析难度较大,后期的维护成本也高。
5.基于此,需要一种成本低、简单且高效准确的方法来校验迁移后的数据一致性。


技术实现要素:

6.为了校验异构数据库数据一致性问题,本发明提供了一种可以高效快速校验异构数据库数据一致性的方法。不管待校验数据库数据量有多大,数据源是何种数据库,都可以快速的准确的比对,提高系统的体验。
7.本发明的技术方案是,一种基于文件的异构数据库表迁移后的数据校验方法,具体流程包含:
8.步骤1:确定数据库表的数据总量;查询数据库的统计信息,从统计信息中获得待校验的数据库表中的校验数据的总量;所述校验数据的总量是指数据库表中数据记录的个数;
9.步骤2:编制临时文件的文件编号;所述临时文件是用于临时存放校验数据的文本文件;获取临时文件存放数据量的预设值;计算数据库表数据总量与所述预设值相除得到的商,按照商的数值生成等数量的临时文件;从数字1开始依次为临时文件编制文件编号;所述临时文件名包含数据库名称、表名称、文件编号的信息;
10.步骤3:获取待校验的表数据;启动数据查询程序,所述程序根据数据库名获取待校验的数据库,从待校验的数据库中,获取数据表名相同的数据库表,进而获取数据库表中
的表数据;
11.步骤4:将待校验的表数据存入临时文件中;
12.步骤5:待校验的表数据全部存入临时文件后,创建空文件,所述空文件的文件名中包含结束标识符;
13.步骤6:通过比对临时文件执行数据一致性校验;启动比较程序,所述比较程序用于获取待校验数据库表的数据库名、数据表名,筛选包含数据库名和数据表名的临时文件;按照文件编号的大小,从小至大依次比对相同文件编号的临时文件;从待比对的临时文件中获取数据,按照主键值逐一执行数据比对;待比较程序获取的文件名中包含结束标识,数据校验结束。
14.在所述步骤2中,若数据库表数据总量与所述预设值相除后存有余数,取商+1为临时文件的数量。
15.在所述步骤2中,所述临时文件存放数据量的预设值统一设置为10万。
16.所述步骤4具体包含;
17.步骤4-1:针对从数据库表中获取的表数据,将每条表数据的字段值转化为字符串,并将所述字段值的字符串依次拼接;利用第一哈希加密算法,对拼接后的字符串加密计算,生成校验码,记为checksum;
18.步骤4-2:获取表数据的主键字段值,利用第二哈希加密算法,对每条表数据的主键字段值加密计算,生成hash值;
19.步骤4-3:计算所述hash值与所述临时文件数量相除的余数,以所述余数确定的预存数据的临时文件的文件编号;将所述主键字段值和所述校验码存入所述临时文件中。
20.在所述步骤4中,所述第一哈希加密算法为crc32加密算法;所述第二哈希加密算法为crc16加密算法。
21.在所述步骤6的数据比对过程中,若比对的任一数据中缺失主键字段值,则判定为数据缺失,记录主键字段值及缺失主键字段值的临时文件名;若比对的任一数据中未缺失主键字段值,筛选主键字段值相同的数据,比对主键字段值对应的校验码,若校验值比对一致,则数据校验通过;若校验值比对不一致,记录主键值上报;所述步骤6中,待数据校验结束,删除所有临时文件。
22.本发明所达到的有益效果:
23.(1)本发明通过以数据记录为单位,利用加密算法将待校验的表数据逐条生成数据结构更为简单的校验码和主键哈希值,并利用校验值和主键哈希值进行数据一致性比对,本技术适用于任一类型数据库,以更便捷的校验码的校验方式,降低了异构数据库之间数据校验的难度和复杂度。
24.(2)本发明通过在数据校验过程,按照校验的数据量匹配自动生成临时文件,并利用临时文件存储待检验的数据,避免了内存占用和公共存储导致的系统依赖复杂,能支持超大数据表的校验,不会因数据量过大造成存储空间不够和校验效率降低。
附图说明
25.图1为本发明实施例中基于文件的异构数据库数据一致性校验方法的流程示意图;
26.图2为本发明实施例中校验数据存入临时文件的流程示意图
27.图3为本发明实施例中临时文件的比对示意图;
28.图4为本发明实施例中基于文件的异构数据库数据一致性校验方法的系统结构示意图。
具体实施方式
29.为了使本发明的目的、技术方案更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
30.图1为本发明实施例中基于文件的异构数据库表迁移后的数据校验方法的流程示意图,具体流程包含:
31.步骤1-1:确定数据库表的数据总量,查询数据库的统计信息,获得待校验的数据表的数据总量;所述数据总量是指数据库表中数据记录的个数;在本发明实施例中,对任一数据库,利用count函数,计算获取数据库表的数据总量;
32.步骤1-2:编制临时文件的文件编号;所述临时文件是用于临时存放校验数据的文本文件;获取临时文件存放数据量的预设值;在实践过程中发现,临时文件存放数据量的大小,将直接影响数据校验的计算性能和校验效率;若临时文件存放的数据量过小,当待校验数据的数据量非常大时,会导致生成过多的临时文件,不仅占用过多的空间导致空间浪费,而且校验时会频繁地执行获取及访问临时文件,降低校验速度;若临时文件存档的数据量过大,增加了数据读取复杂度,导致从临时文件中读取数据的性能下降,影响数据比对的处理效率;经多次对临时文件的数据存放量的数值调整,临时文件的数据存放量设置为10万时,不仅能避免校验数据量过大造成的校验速度降低,更不用担心数据读取性能降低导致的处理效率降低。
33.计算数据库表数据总量与临时文件数据量预设值相除得到的商,以商确定本次校验所需临时文件的数量;若所述相除后存有余数,取商+1为临时文件的数量;按照临时文件的数量,生成等数量的临时文件,从数字1开始依次为临时文件编制文件编号;所述临时文件名包含数据库名称、表名称、文件编号的信息;
34.每一个校验的数据表都会搭配一个临时文件集合;
35.步骤1-3:获取待校验的表数据;启动数据查询程序,所述程序获取待校验的数据库名,从待校验的数据库中,获取数据表名相同的数据库表,进而获取数据库表中的表数据;
36.步骤1-4:将待校验的表数据存入临时文件中;具体步骤如图2所示,包含:
37.步骤1-401:生成每条表数据的校验码;针对从数据库表中获取的表数据,将每条表数据的字段值转化为字符串,并将所述字段值的字符串依次拼接;利用crc32加密算法,对拼接后的字符串加密计算,生成校验码,记为checksum;经过对多个哈希算法的尝试和试验,crc32加密算法将数据计算为散列的数据结构,执行简单且执行效率高,而且数据防碰撞性能好;
38.步骤1-402:生成每条数据的主键hash值;获取表数据的主键字段值,利用crc16加密算法,对每条表数据的主键字段值加密计算,生成hash值;crc16和crc32是同类型的算法,相比crc32效率高一些,但准确率低一些,差距不大,在做数据散列的时候,选用crc16最
佳;
39.步骤1-403:将校验码和主键hash值存入临时文件;获取所述hash值与所述临时文件数量相除的余数,以所述余数确定的预存数据的临时文件的文件编号;将所述主键字段值和所述校验码存入所述临时文件中;
40.步骤1-5:按照步骤1-4的方法,完成所有表数据存入对应的临时文件中;待全部存入后,在临时文件后面,创建空文件;所述空文件的文件名中包含结束标识符;
41.步骤1-6:通过比对临时文件执行数据一致性校验;启动比较程序,所述比较程序获取待校验数据库表的数据库名、数据表名,筛选包含数据库名和数据表名的临时文件;按照文件编号的大小,从小至大依次比对相同文件编号的临时文件;
42.从待比对的临时文件中获取数据,按照主键值逐一执行数据比对,如图3所示,在本发明实施例中,获取临时文件“db1-t1-01”和临时文件“db2-t1-01”,取hash值为id1对应的校验码,比对两个临时文件中的校验码是否一致;
43.若比对的任一数据中缺失主键字段值,则判定为数据缺失,记录主键字段值及缺失主键字段值的临时文件名;
44.若比对的任一数据中未缺失主键字段值,筛选主键字段值相同的数据,比对主键字段值对应的校验码,若校验值比对一致,则数据校验通过;若校验值比对不一致,记录主键值上报;
45.待比较程度获取的文件名中包含结束标识,数据校验结束;待数据校验结束后,将所述临时文件删除;
46.图4为本发明实施例基于文件的异构数据库表迁移后的数据校验方法的系统结构示意图;
47.在所述图4中,所述结构包含数据库db1、数据库db2、临时文件存储区,所述数据库db1中包含数据库表t1,所述数据库db2中包含数据库表t2,所述数据库表t2的数据通过从数据库表t1中迁移获得;数据迁移后,执行数据库表t1和数据库表t2的数据校验。所述临时文件存储区是临时文件的集合;所述临时文件是临时存放待校验数据库中数据的文本文件,所述临时文件的名称包含数据库名、数据表名及文件编号的信息。
48.在本发明实施例中,通过启动多行程的查询程序,执行数据库表数据存储在临时文件中;在数据校验时,启动比较程序,通过获取对应于数据库的临时文件存储区,进而获取每一个临时文件,将文件编号相同的临时文件进行数据一致性比对。
49.以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1