一种面向异构数据源的数据一致性校验方法及装置与流程

文档序号:34229842发布日期:2023-05-24 12:18阅读:71来源:国知局
本发明实施例涉及数据库,尤其涉及一种面向异构数据源的数据一致性校验方法及装置。
背景技术
::1、数据一致性校验是任何涉及到数据同步或者迁移工具的必备功能。数据一致性校验可分为同构数据源的一致性校验和异构数据源的一致性校验。同构数据源由于上下游表结构和sql的语法规则基本相同,因此可使用业界的开源工具来进行数据一致性校验,如mysql->mysql校验工具pt-table-checksums,mysql->tidb校验工具sync_diff_inspector。异构数据源由于上下游表结构和sql语法规则等不同,如:在对tidb->clickhouse数据同步做一致性校验时,无法使用上述的校验工具。例如:若使用pingcap的sync-diff-inspector进行异构数据源的一致性校验,会直接因表结构不一致而退出,无法进行数据层面的校验。2、因此,在对异构数据源进行数据一致性校验时,现有技术中还缺乏可独立使用的校验工具。如何对异构数据源进行数据层面的校验,成为亟待解决的技术问题。技术实现思路1、本发明实施例提供一种面向异构数据源的数据一致性校验方法及装置,以解决相关技术中,sync_diff_inspector等校验工具无法对异构数据源进行数据层面的校验的问题。2、第一方面,本发明实施例提供了一种面向异构数据源的数据一致性校验方法,所述方法包括:3、从源端数据库获取源数据库表中待校验的第一数据,从目标端数据库获取目标数据库表中待校验的第二数据,其中,所述第一数据和所述第二数据具备对应关系;4、分别计算所第一数据的第一行数和第一校验和,以及所述第二数据的第二行数和第二校验和;5、将所述第一行数与所述第二行数进行比对,并将所述第一校验和与所述第二校验和进行比对,以得到比对结果;6、根据所述比对结果,确定所述第一数据和所述第二数据是否通过一致性校验。7、优选地,根据所述比对结果,确定所述第一数据和所述第二数据是否通过一致性校验包括:8、若所述比对结果为:所述第一行数与所述第二行数一致,且所述第一校验和与所述第二校验和一致,则确定所述第一数据和所述第二数据通过一致性校验;9、若所述第一行数与所述第二行数不一致,且所述第一校验和与所述第二校验和不一致,则确定所述第一数据和所述第二数据未通过一致性校验;10、若所述第一行数与所述第二行数不一致,且所述第一校验和与所述第二校验和一致,则确定所述第一数据和所述第二数据未通过一致性校验;11、若所述第一行数与所述第二行数一致,且所述第一校验和与所述第二校验和不一致,则确定所述第一数据和所述第二数据未通过一致性校验。12、优选地,在将所述第一行数与所述第二行数进行比对,并将所述第一校验和与所述第二校验和进行比对,以得到比对结果之后,所述方法还包括:13、根据所述比对结果,生成校验报告;其中,所述校验报告包括以下至少一项:所述比对结果、所述源数据库表的参数、所述目标数据库表的参数、所述第一行数、所述第二行数。14、优选地,从源端数据库获取源数据库表中待校验的第一数据,从目标端数据库获取目标数据库表中待校验的第二数据之前,所述方法还包括:15、确定校验模式,其中,所述校验模式包括以下至少一项:全量校验模式、全量数据抽样校验模式、最新数据抽样校验模式;16、根据所述校验模式,确定所述第一数据和所述第二数据。17、优选地,根据所述校验模式,确定所述第一数据和所述第二数据包括:18、在所述校验模式为全量校验模式时,确定所述第一数据为所述源数据库表的全量数据,确定所述第二数据为所述目标数据库表的全量数据;19、在所述校验模式为全量数据抽样校验模式时,确定所述第一数据为针对于所述源数据库表的全量数据的随机抽样数据,确定所述第二数据为针对于所述目标数据库表的全量数据的随机抽样数据;20、在所述校验模式为最新数据抽样校验模式时,确定所述第一数据为针对于所述源数据库表的最新数据的随机抽样数据,确定所述第二数据为针对于所述目标数据库表的最新数据的随机抽样数据。21、优选地,从源端数据库获取源数据库表中待校验的第一数据,从目标端数据库获取目标数据库表中待校验的第二数据包括:22、利用select语句分别查询所述源数据库表的全量数据和所述目标数据库表的全量数据的主键的最大值和最小值;23、以所述源数据库表的全量数据的主键的最大值和最小值为端点,构造第一主键区间,并以所述目标数据库表的全量数据的主键的最大值和最小值为端点,构造第二主键区间;24、对所述第一主键区间和所述第二主键区间分别进行分段处理,基于分段后的第一主键区间,获取所述第一数据;基于分段后的第二主键区间,获取所述第二数据。25、优选地,在所述校验模式为全量校验模式时,对所述第一主键区间和所述第二主键区间分别进行分段处理,基于分段后的第一主键区间,获取所述第一数据;基于分段后的第二主键区间,获取所述第二数据包括:26、以预设分段长度值,从所述第一主键区间和所述第二主键区间中,分别确定第一预设数量的区间段,其中,每一区间段的长度均相等;27、将从所述第一主键区间中确定的第一预设数量的区间段作为第一数据;28、将从所述第二主键区间中确定的第一预设数量的区间段作为第二数据;29、分别计算所述第一数据的第一行数和第一校验和,以及所述第二数据的第二行数和第二校验和包括:30、分别计算所述第一主键区间中,每一区间段的数据的第一行数和第一校验和;以及所述第二主键区间中,每一区间段的数据的第二行数和第二校验和。31、优选地,在所述校验模式为全量数据抽样校验模式时,对所述第一主键区间和所述第二主键区间分别进行分段处理,基于分段后的第一主键区间,获取所述第一数据;基于分段后的第二主键区间,获取所述第二数据包括:32、以预设分段长度值和预设抽样率,从所述第一主键区间和所述第二主键区间中,分别抽样选取第二预设数量的区间段;33、将从所述第一主键区间中抽样选取的第二预设数量的区间段作为第一数据;34、将从所述第二主键区间中抽样选取的第二预设数量的区间段作为第二数据;35、分别计算所述源数据库表中的数据的第一行数和第一校验和,以及所述目标数据库表中的数据第二行数和第二校验和包括:36、分别计算所述第一主键区间中,每一区间段的数据的第一行数和第一校验和;以及所述第二主键区间中,每一区间段的数据的第二行数和第二校验和。37、优选地,在所述校验模式为最新数据抽样校验模式时,对所述第一主键区间和所述第二主键区间分别进行分段处理,基于分段后的第一主键区间,获取所述第一数据;基于分段后的第二主键区间,获取所述第二数据包括:38、以预设分段长度值和预设抽样率,从所述源数据库表的最新数据和所述目标数据库表的最新数据中,分别抽样选取第三预设数量的区间段;39、将从所述源数据库表的最新数据中抽样选取的第三预设数量的区间段作为第一数据;40、将从所述目标数据库表的最新数据中抽样选取的第三预设数量的区间段作为第二数据;41、分别计算所述源数据库表中的数据的第一行数和第一校验和,以及所述目标数据库表中的数据第二行数和第二校验和包括:42、分别计算所述源数据库表中,每一区间段的数据的第一行数和第一校验和;以及所述目标数据库表中,每一区间段的数据的第二行数和第二校验和。43、优选地,将所述第一行数与所述第二行数进行比对,并将所述第一校验和与所述第二校验和进行比对,以得到比对结果包括:44、将所述源数据库表中,当前第一待比对区间段的数据的第一行数,与所述当前第一待比对区间段的数据在所述目标数据库表中,所对应的第二待比对区间段的数据的第二行数进行比对,得到第一比对结果;并且,将所述当前第一待比对区间段的数据的第一校验和与所述第二待比对区间段的数据的第二校验和进行比对,得到第二比对结果。45、优选地,在将所述源数据库表中,当前第一待比对区间段的数据的第一行数,与所述当前第一待比对区间段的数据在所述目标数据库表中,所对应的第二待比对区间段的数据的第二行数进行比对,得到第一比对结果;并且,将所述当前第一待比对区间段的数据的第一校验和与所述第二待比对区间段的数据的第二校验和进行比对,得到第二比对结果之后,所述方法还包括:46、若所述第一比对结果和所述第二比对结果中,至少一个的结果为比对不一致;47、则对所述第一待比对区间段的数据和所述第二待比对区间段的数据,进行逐行比对,直至确定出校验和不一致的行主键id,并记录校验和不一致的行主键id;48、若所述第一比对结果和所述第二比对结果均为比对一致;则进行下一第一待比对区间段的数据和所述下一第一待比对区间段的数据在所述目标数据库表中,所对应的第二待比对区间段的数据的行数与校验和的比对,直至完成所有第一待比对区间段的数据和所对应的第二待比对区间段的数据的比对。49、第二方面,本发明实施例提供一种面向异构数据源的数据一致性校验装置,所述装置包括:50、获取模块,用于从源端数据库获取源数据库表中待校验的第一数据,从目标端数据库获取目标数据库表中待校验的第二数据,其中,所述第一数据和所述第二数据具备对应关系;51、计算模块,用于分别计算所第一数据的第一行数和第一校验和,以及所述第二数据的第二行数和第二校验和;52、比对模块,用于将所述第一行数与所述第二行数进行比对,并将所述第一校验和与所述第二校验和进行比对,以得到比对结果;53、确定模块,用于根据所述比对结果,确定所述第一数据和所述第二数据是否通过一致性校验。54、优选地,所述确定模块,还用于若所述比对结果为:所述第一行数与所述第二行数一致,且所述第一校验和与所述第二校验和一致,则确定所述第一数据和所述第二数据通过一致性校验;55、若所述第一行数与所述第二行数不一致,且所述第一校验和与所述第二校验和不一致,则确定所述第一数据和所述第二数据未通过一致性校验;56、若所述第一行数与所述第二行数不一致,且所述第一校验和与所述第二校验和一致,则确定所述第一数据和所述第二数据未通过一致性校验;57、若所述第一行数与所述第二行数一致,且所述第一校验和与所述第二校验和不一致,则确定所述第一数据和所述第二数据未通过一致性校验。58、所述装置还包括:59、生成模块,用于在将所述第一行数与所述第二行数进行比对,并将所述第一校验和与所述第二校验和进行比对,以得到比对结果之后,根据所述比对结果,生成校验报告;其中,所述校验报告包括以下至少一项:所述比对结果、所述源数据库表的参数、所述目标数据库表的参数、所述第一行数、所述第二行数。60、优选地,所述确定模块,还用于从源端数据库获取源数据库表中待校验的第一数据,从目标端数据库获取目标数据库表中待校验的第二数据之前,确定校验模式,其中,所述校验模式包括以下至少一项:全量校验模式、全量数据抽样校验模式、最新数据抽样校验模式;根据所述校验模式,确定所述第一数据和所述第二数据。61、优选地,所述确定模块,还用于在所述校验模式为全量校验模式时,确定所述第一数据为所述源数据库表的全量数据,确定所述第二数据为所述目标数据库表的全量数据;62、在所述校验模式为全量数据抽样校验模式时,确定所述第一数据为针对于所述源数据库表的全量数据的随机抽样数据,确定所述第二数据为针对于所述目标数据库表的全量数据的随机抽样数据;63、在所述校验模式为最新数据抽样校验模式时,确定所述第一数据为针对于所述源数据库表的最新数据的随机抽样数据,确定所述第二数据为针对于所述目标数据库表的最新数据的随机抽样数据。64、优选地,所述获取模块,还用于利用select语句分别查询所述源数据库表的全量数据和所述目标数据库表的全量数据的主键的最大值和最小值;65、以所述源数据库表的全量数据的主键的最大值和最小值为端点,构造第一主键区间,并以所述目标数据库表的全量数据的主键的最大值和最小值为端点,构造第二主键区间;66、对所述第一主键区间和所述第二主键区间分别进行分段处理,基于分段后的第一主键区间,获取所述第一数据;基于分段后的第二主键区间,获取所述第二数据。67、优选地,所述获取模块,还用于在所述校验模式为全量校验模式时,以预设分段长度值,从所述第一主键区间和所述第二主键区间中,分别确定第一预设数量的区间段,其中,每一区间段的长度均相等;68、将从所述第一主键区间中确定的第一预设数量的区间段作为第一数据;69、将从所述第二主键区间中确定的第一预设数量的区间段作为第二数据;70、分别计算所述第一数据的第一行数和第一校验和,以及所述第二数据的第二行数和第二校验和包括:71、分别计算所述第一主键区间中,每一区间段的数据的第一行数和第一校验和;以及所述第二主键区间中,每一区间段的数据的第二行数和第二校验和。72、优选地,所述获取模块,还用于在所述校验模式为全量数据抽样校验模式时,以预设分段长度值和预设抽样率,从所述第一主键区间和所述第二主键区间中,分别抽样选取第二预设数量的区间段;73、将从所述第一主键区间中抽样选取的第二预设数量的区间段作为第一数据;74、将从所述第二主键区间中抽样选取的第二预设数量的区间段作为第二数据;75、分别计算所述源数据库表中的数据的第一行数和第一校验和,以及所述目标数据库表中的数据第二行数和第二校验和包括:76、分别计算所述第一主键区间中,每一区间段的数据的第一行数和第一校验和;以及所述第二主键区间中,每一区间段的数据的第二行数和第二校验和。77、优选地,所述获取模块,还用于在所述校验模式为最新数据抽样校验模式时,以预设分段长度值和预设抽样率,从所述源数据库表的最新数据和所述目标数据库表的最新数据中,分别抽样选取第三预设数量的区间段;78、将从所述源数据库表的最新数据中抽样选取的第三预设数量的区间段作为第一数据;79、将从所述目标数据库表的最新数据中抽样选取的第三预设数量的区间段作为第二数据;80、分别计算所述源数据库表中的数据的第一行数和第一校验和,以及所述目标数据库表中的数据第二行数和第二校验和包括:81、分别计算所述源数据库表中,每一区间段的数据的第一行数和第一校验和;以及所述目标数据库表中,每一区间段的数据的第二行数和第二校验和。82、优选地,所述比对模块,还用于将所述源数据库表中,当前第一待比对区间段的数据的第一行数,与所述当前第一待比对区间段的数据在所述目标数据库表中,所对应的第二待比对区间段的数据的第二行数进行比对,得到第一比对结果;并且,将所述当前第一待比对区间段的数据的第一校验和与所述第二待比对区间段的数据的第二校验和进行比对,得到第二比对结果。83、优选地,所述比对模块,还用于在将所述源数据库表中,当前第一待比对区间段的数据的第一行数,与所述当前第一待比对区间段的数据在所述目标数据库表中,所对应的第二待比对区间段的数据的第二行数进行比对,得到第一比对结果;并且,将所述当前第一待比对区间段的数据的第一校验和与所述第二待比对区间段的数据的第二校验和进行比对,得到第二比对结果之后,84、若所述第一比对结果和所述第二比对结果中,至少一个的结果为比对不一致;85、则对所述第一待比对区间段的数据和所述第二待比对区间段的数据,进行逐行比对,直至确定出校验和不一致的行主键id,并记录校验和不一致的行主键id;86、若所述第一比对结果和所述第二比对结果均为比对一致;则进行下一第一待比对区间段的数据和所述下一第一待比对区间段的数据在所述目标数据库表中,所对应的第二待比对区间段的数据的行数与校验和的比对,直至完成所有第一待比对区间段的数据和所对应的第二待比对区间段的数据的比对。87、第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如第一方面所述的一种面向异构数据源的数据一致性校验方法的步骤。88、第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的一种面向异构数据源的数据一致性校验方法的步骤。89、由此,本发明实施例提供了一种面向异构数据源的数据一致性校验方法,在异构数据源同步后,可对其进行数据层面的一致性校验,且通过对源数据库表和目标数据库表中的第一数据和第二数据的行数及校验和两个参数分别进行比对,可进一步提高数据一致性校验的准确性,从而保障在数据迁徙或数据同步后,源端和目标端的数据的一致性。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1