CN111737230B - 数据校验方法、装置、电子设备以及可读存储介质 - Google Patents
数据校验方法、装置、电子设备以及可读存储介质 Download PDFInfo
- Publication number
- CN111737230B CN111737230B CN202010581955.6A CN202010581955A CN111737230B CN 111737230 B CN111737230 B CN 111737230B CN 202010581955 A CN202010581955 A CN 202010581955A CN 111737230 B CN111737230 B CN 111737230B
- Authority
- CN
- China
- Prior art keywords
- data
- data line
- source
- target
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013524 data verification Methods 0.000 title claims abstract description 40
- 238000013508 migration Methods 0.000 claims abstract description 48
- 230000005012 migration Effects 0.000 claims abstract description 48
- 238000012795 verification Methods 0.000 claims description 31
- 238000004891 communication Methods 0.000 claims description 18
- 238000012163 sequencing technique Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 description 28
- 238000012545 processing Methods 0.000 description 19
- 238000012217 deletion Methods 0.000 description 16
- 230000037430 deletion Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明实施例提供一种数据校验方法、装置、电子设备以及可读存储介质,旨在不暂停数据迁移或数据同步操作的条件下,实现数据校验。其中,所述数据校验方法包括:在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,从所述源端数据库中获取对应的源端数据行,并从所述目标端数据库中获取对应的目标端数据行;对所述源端数据行和所述目标端数据行进行比较,以确定所述待校验数据行是否通过一致性校验;在未通过一致性校验的情况下,等待指定时长后,重新获取对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
Description
技术领域
本发明涉及信息技术领域,特别是涉及一种数据校验方法、装置、电子设备以及可读存储介质。
背景技术
随着信息技术的发展,越来越多的企业开始借助数据库系统存储和管理数据。以互联网企业为例,其服务端通常需要借助数据库集群存储大量数据,例如商品信息、音视频数据、用户画像、用户历史浏览记录、用户订单数据等等。并且随着用户数量的增加和服务时间的累积,数据量也进一步积累。
在利用数据库系统存储和管理数据期间,出于业务的需要,或者由于数据库容量即将耗尽,通常会在不同数据库之间执行数据迁移或数据同步任务。由于数据迁移或数据同步任务需要跨数据库传输数据,为了确保数据在迁移前后保持一致,或者为了确保数据在同步至目标端数据库后与源端数据库中的原始数据保持一致,通常需要对被迁移或被同步的数据进行一致性校验。
相关技术中,为了实现对被迁移或被同步的数据的一致性校验,通常是在暂停数据迁移或数据同步操作之后,即在源端数据库和目标端数据库中的数据不动态变化的条件下,对在源端数据库和目标端数据库之间被迁移或被同步的数据进行一致性校验。由于相关技术中的这种数据校验方法需要暂停数据迁移或数据同步操作,因此会影响数据迁移或数据同步效率。
发明内容
本发明实施例的目的在于提供一种数据校验方法、装置、电子设备以及可读存储介质,旨在不暂停数据迁移或数据同步操作的条件下,实现数据校验。
具体技术方案如下:
在本发明实施例的第一方面,提供了一种数据校验方法,所述方法包括:
在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,从所述源端数据库中获取所述索引信息对应的源端数据行,并从所述目标端数据库中获取所述索引信息对应的目标端数据行;
在获取到所述源端数据行和所述目标端数据行的情况下,对所述源端数据行和所述目标端数据行进行比较,以判断所述待校验数据行是否通过一致性校验;
在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
在本发明实施例的第二方面,提供了一种数据校验装置,所述装置包括:
数据行获取模块,用于在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,从所述源端数据库中获取所述索引信息对应的源端数据行,并从所述目标端数据库中获取所述索引信息对应的目标端数据行;
数据行比较模块,用于在获取到所述源端数据行和所述目标端数据行的情况下,对所述源端数据行和所述目标端数据行进行比较,以判断所述待校验数据行是否通过一致性校验;
循环模块,用于在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
在本发明实施例的第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本发明实施例的第一方面所述的方法步骤。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的数据校验方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据校验方法。
通过执行本发明提供的数据校验方法,在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,针对待校验数据行,根据其索引信息,从源端数据库中获取该索引信息对应的源端数据行,并从目标端数据库中获取该索引信息对应的目标端数据行。其中,源端数据行是源端数据库中需要被迁移或被同步的数据行,目标端数据行是已经迁移或同步至目标端数据行的数据行。然后比较源端数据行和目标端数据行,以判断待校验数据行是否通过一致性校验。
由于该数据检验方法是在不暂停数据迁移操作或数据同步操作的情况下执行的,源端数据库和目标端数据库内的数据是动态变化的,因此在一些情况下,例如源端数据库中的源端数据行的数据已经被更新,而目标端数据库还没有及时同步对应的目标端数据行。在上述这些情况下,由于同步时间的延迟,导致获取到的源端数据行的数据和目标端数据行的数据存在差异,使得待校验数据行暂时被误判为:未通过一致性校验。
为此,本发明等待指定时长,使得源端数据库和目标端数据库具有充分的时间,对暂时未完成迁移或未完成同步的待检验数据行(即源端数据行)继续进行迁移或同步,然后重新查询所述索引信息对应的源端数据行和目标端数据行,并根据重新查询的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验,从而可以尽量规避误判。可见,本发明在不暂停数据迁移或数据同步操作的情况下,实现了对待校验数据行的校验,有利于提高数据迁移或数据同步效率,且校验结果的准确性可靠。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明一实施例提出的数据校验方法的流程图;
图2是本发明一实施例提出的数据校验方法的示意图;
图3(a)是本发明一实施例提出的数据校验装置的示意图;
图3(b)是本发明另一实施例提出的数据校验装置的示意图;
图4是本发明一实施例提出的电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
在企业利用数据库系统存储和管理数据期间,出于业务的需要,或者由于数据库容量即将耗尽,通常会在不同数据库之间执行数据迁移或数据同步任务。由于数据迁移或数据同步任务需要跨数据库传输数据,为了确保数据在迁移前后保持一致,或者为了确保数据在同步至目标端数据库后与源端数据库中的原始数据保持一致,通常需要对被迁移或被同步的数据进行一致性校验。
相关技术中,为了实现对被迁移或被同步的数据的一致性校验,通常是在暂停数据迁移或数据同步操作之后,即在源端数据库和目标端数据库中的数据不动态变化的条件下,对在源端数据库和目标端数据库之间被迁移或被同步的数据进行一致性校验。由于相关技术中的这种数据校验方法需要暂停数据迁移或数据同步操作,因此会影响数据迁移或数据同步效率。
为此,本发明通过以下多个实施例提出多种数据校验方法、装置、电子设备以及可读存储介质,旨在不暂停数据迁移或数据同步操作的条件下,实现数据校验。
参考图1,图1是本发明一实施例提出的数据校验方法的流程图。如图1所示,该方法包括以下步骤:
步骤S11:在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,从所述源端数据库中获取所述索引信息对应的源端数据行,并从所述目标端数据库中获取所述索引信息对应的目标端数据行。
上述步骤S11中,源端数据库是指:记录有待迁移数据行或待同步数据行的数据库,目标数据库是指:用于接收待迁移数据行或待同步数据行的数据库。
例如数据库A1的数据表a中记录有数据行r0001至数据行r2400,当前需要将数据库A1的数据表a中的数据行r0001至数据行r1200迁移至数据库A2,则在数据迁移期间,数据库A1作为源端数据库,数据库A2作为目标端数据库。又例如数据库B1的数据表b中记录有数据行r0001至数据行r1800,当前需要将数据库B1的数据表b中的数据行r0001至数据行r1800全部同步至数据库B2,则在数据同步期间,数据库B1作为源端数据库,数据库B2作为目标端数据库。
上述步骤S11中,待检验数据行可以是源端数据库和目标端数据库之间被迁移或被同步的数据行。具体地,源端数据库和目标端数据库之间被迁移或被同步的所有数据行中,每个数据行均可能作为一个待校验数据行从而被校验,或者所有数据行中的部分数据行可能被作为待校验数据行从而被校验。对于被迁移或被同步的数据行中哪些数据行可以作为待校验数据行而被校验,可以由管理员预先指定。
沿用上述示例,数据库A1的数据表a中记录有数据行r0001至数据行r2400,当前需要将数据库A1的数据表a1中的数据行r0001至数据行r1200迁移至数据库A2。在一些实施例中,数据行r0001至数据行r1200(共1200个数据行)均需要被校验,因此数据行r0001至数据行r1200中的每个数据行,分别作为一个待校验数据行。
在另一些实施例中,每个数据行对应一个索引信息(例如索引信息具体可以是数据行的主键PrimaryKey),其中数据行r0001至数据行r1100均用于记录学生信息,数据行r0001至数据行r1100各自对应的索引信息分别是“student0001”、“student0002”…“student1100”。数据行r1101至数据行r1200均用于记录老师信息,数据行r1101至数据行r1200各自对应的索引信息分别是“teacher001”、“teacher002”…“teacher100”。如果仅要求确保学生信息在迁移前后的准确性,则可以指定对数据行r0001至数据行r1100执行校验,因此数据行r0001至数据行r1100中的每个数据行,分别作为一个待校验数据行。
上述步骤S11中,待检验数据行的索引信息可以解释成:如果利用待校验数据行的某种信息,可以从数据库中查询到该待校验数据行,则可以将该种信息作为该待校验数据行的索引信息。示例地,例如可以将待检验数据行的主键PrimaryKey作为待检验数据行的索引信息。或者又例如可以将待检验数据行所在数据表的数据表名称和待校验数据行的主键整体作为待检验数据行的索引信息。
上述步骤S11中,在根据待校验数据行的索引信息,从源端数据库中获取该索引信息对应的源端数据行,以及从目标端数据库中获取该索引信息对应的目标端数据行时,具体地,从源端数据库中获取具有该索引信息的数据行,并将获取到的数据行确定为源端数据行。以及从目标端数据库中获取具有该索引信息的数据行,并将获取到的数据行确定为目标端数据行。
沿用上述示例,以索引信息是数据行的主键为例,数据库A1的数据表a中的数据行r1的主键为“student0001”,数据行r1是一个待校验数据行,用于执行数据校验任务的执行设备在执行上述步骤S11时,从源端数据库A1中获取主键为“student0001”的数据行,并将获取到的数据行确定为源端数据行。此外,该执行设备还从目标端数据库A2中获取主键为“student0001”的数据行,并将获取到的数据行确定为目标端数据行。其中,源端数据行即是源端数据库A1的数据表a中的数据行r1,目标端数据行是数据行r1迁移至或同步至目标数据库A2后的数据行。
在本发明的一些实施例中,用于执行校验任务的执行设备可以同时向源端数据库和目标端数据库发出校验指定,该校验指令中携带多个待检验数据行的索引信息排序。源端数据库和目标端数据库在接收到校验指令之后,根据该校验指令中的索引信息排序,依次将每个索引信息对应的源端数据行和目标端数据行发送给所述执行设备。
具体实现时,用于执行校验任务的执行设备将索引信息排序信息同时发送给源端数据库和目标端数据库。源端数据库接收到索引信息排序后,开始按照该索引信息排序,依次查询每个索引信息对应的源端数据行,并将查询到的源端数据行返回给所述执行设备。同样地,目标端数据库接收到索引信息排序后,开始按照该索引信息排序,依次查询每个索引信息对应的目标端数据行,并将查询到的目标端数据行返回给所述执行设备。如此,所述执行设备不断地接收源端数据行和目标端数据行,并且在同一时间接收到的一个源端数据行和一个目标端数据行通常对应同一个索引信息。执行设备可以针对同一时间接收到的源端数据行和目标端数据行进行比较(即执行下述步骤S12)。
步骤S12:在获取到所述源端数据行和所述目标端数据行的情况下,对所述源端数据行和所述目标端数据行进行比较,以判断所述待校验数据行是否通过一致性校验。
本发明在具体实现时,如果源端数据行的数据和目标端数据行的数据一致,则确定该源端数据行和目标端数据行对应的待校验数据行通过一致性校验。如此,可以结束对该待校验数据行的校验,并开始针对下一个待校验数据行执行上述步骤S11。
如果源端数据行的数据和目标端数据行的数据不一致,则可以暂时确定待检验数据行未通过一致性校验。如此,可以针对该待校验数据行执行下述步骤S13。
在本发明的一些实施例中,为了更高效地对源端数据行和目标端数据行进行比较,可以首先计算源端数据行的摘要值和目标端数据行的摘要值,然后比较两个摘要值是否相等。
相关技术中,一个数据行的摘要值是利用摘要算法对该数据行进行计算后得到的计算结果,并且只有针对同样的两个数据行,利用相同的摘要算法分别进行计算,才能得到两个相等的摘要值。上述实施例中,如图2所示,通过对源端数据行的多列数据计算出一个摘要值,以及对目标端数据行的多列数据计算出一个摘要值,然后通过比较这两个摘要值是否相等,以确定待校验数据行是否通过一致性校验。由于比较时仅对两个摘要值进行比较,而不需要将源端数据行的各列数据与目标端数据行的各列数据一对一地组合对比,因此可以显著提高比较效率。
在本发明的一些实施例中,执行数据校验任务的执行设备可以根据预先配置的目标列信息,仅将源端数据行中的目标列数据和目标端数据行中的目标列数据进行比较,例如对源端数据行的目标列数据计算出一个摘要值,以及对目标端数据行的目标列数据计算出一个摘要值,然后通过比较这两个摘要值是否相等,以确定待校验数据行是否通过一致性校验。其中,目标列数据是数据行中的多列数据中指定的一例或几列数据。
步骤S13:在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
具体实现时,在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新从源端数据库中查询所述索引信息对应的源端数据行,以及重新从目标端数据库中查询所述索引信息对应的目标端数据行。并针对重新查询的源端数据行计算摘要值,以及针对重新查询的目标端数据行计算摘要值。最后比较这两个摘要值是否相等,以确定待校验数据行是否通过一致性校验。
需要补充说明的是,在成功获取到源端数据行和目标端数据行的情况下,源端数据行的数据和目标端数据行的数据不一致,其原因可能是:源端数据行已经被更新,而目标端数据行还没有及时得到同步。
通过执行上述包括步骤S11至步骤S13的数据校验方法,由于该数据检验方法是在不暂停数据迁移操作或数据同步操作的情况下执行的,源端数据库和目标端数据库内的数据是动态变化的,因此在一些情况下,例如源端数据库中的源端数据行的数据已经被更新,而目标端数据库还没有及时同步对应的目标端数据行。在上述这些情况下,由于同步时间的延迟,导致获取到的源端数据行的数据和目标端数据行的数据存在差异,使得待校验数据行暂时被误判为:未通过一致性校验。
为此,本发明等待指定时长,使得源端数据库和目标端数据库具有充分的时间,对暂时未完成迁移或未完成同步的待检验数据行(即源端数据行)继续进行迁移或同步,然后重新查询所述索引信息对应的源端数据行和目标端数据行,并根据重新查询的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验,从而可以尽量规避误判。可见,本发明在不暂停数据迁移或数据同步操作的情况下,实现了对待校验数据行的校验,且校验结果的准确性可靠。
参考图2,图2是本发明一实施例提出的数据校验方法的示意图。如图2所示,在本发明的一些实施例中,待检验数据行的数量为多个。为了对多个待校验数据行有序地校验,多个待检验数据行各自的索引信息被排列成索引信息排序。
为便于理解,沿用上述示例,数据库A1的数据表a中记录有数据行r0001至数据行r2400,当前需要将数据库A1的数据表a1中的数据行r0001至数据行r1200迁移至数据库A2。其中数据行r0001至数据行r1100各自对应的索引信息分别是“student0001”、“student0002”…“student1100”,数据行r1101至数据行r1200各自对应的索引信息分别是“teacher001”、“teacher002”…“teacher100”。由于仅要求确保学生信息在迁移前后的准确性,因此可以仅对数据行r0001至数据行r1100执行校验,数据行r0001至数据行r1100中的每个数据行,分别作为一个待校验数据行。各个待校验数据行的索引信息被排列成索引信息排序,该索引信息序列为:student0001、student0002、student3…student1100。
在本发明的一些实施例中,用于执行校验任务的执行设备可以同时向源端数据库和目标端数据库发出校验指定,该校验指令中携带多个待检验数据行的索引信息排序。源端数据库和目标端数据库在接收到校验指令之后,根据该校验指令中的索引信息排序,依次将每个索引信息对应的源端数据行和目标端数据行发送给所述执行设备。
具体实现时,用于执行校验任务的执行设备将索引信息排序信息同时发送给源端数据库和目标端数据库。源端数据库接收到索引信息排序后,开始按照该索引信息排序,依次查询每个索引信息对应的源端数据行,并将查询到的源端数据行返回给所述执行设备。同样地,目标端数据库接收到索引信息排序后,开始按照该索引信息排序,依次查询每个索引信息对应的目标端数据行,并将查询到的目标端数据行返回给所述执行设备。如此,所述执行设备不断地接收源端数据行和目标端数据行,并且在同一时间接收到的一个源端数据行和一个目标端数据行通常对应同一个索引信息。执行设备可以针对同一时间接收到的源端数据行和目标端数据行进行比较(即执行上述步骤S12)。
如图2所示,在本发明的另一些实施例中,在对多个待检验数据行进行校验时,依次针对索引信息排序中的每个索引信息所对应的待校验数据行,执行数据校验操作,并记录一致性校验未通过的数据行,从而实现对多个待检验数据行依次进行校验。具体地,如图2所示,在每校验完一个待校验数据行之后,判断是否还存在未校验的待校验数据行,如果还存在未校验的待校验数据行,则继续针对下一个未校验的待校验数据行执行校验操作。如果不存在未校验的待校验数据行,也即在针对全部待校验数据行执行完校验操作之后,可以获得一份清单,该清单中记录着所有未通过一致性校验的数据行。
如图2所示,在针对一个待校验数据行执行数据校验期间,通过执行上述步骤S11以获取该待校验数据的索引信息对应的源端数据行和目标端数据行之后,可以计算源端数据行的对应的摘要值和目标端数据行的摘要值。如果两个摘要值均不为空,则说明成功获取到该索引信息对应的源端数据行和目标端数据行,进而执行上述步骤S12。
如果两个摘要值中的一者为空,则说明仅获取到索引信息对应的源端数据行,而未获取到索引信息对应的目标端数据行,或者说明仅获取到索引信息对应的目标端数据行,而未获取到索引信息对应的源端数据行,进而在等待指定时长之后,重新获取该索引信息对应的目标端数据行。具体实施方式,请参见本发明的后述内容,此处暂不赘述。
如果两个摘要值均为空,则说明源端数据库中不存在该索引信息对应的源端数据行,目标端数据库中也不存在该索引信息对应的目标端数据行,可以认为该待校验数据行通过一致性校验。如此,可以结束对该待校验数据行的校验,并开始针对下一个待校验数据行执行上述步骤S11。
此外,考虑到数据迁移或数据同步的速率并不是均匀的,例如在源端数据库或目标端数据库的查询业务量较大的时段,硬件资源的占用率较高,数据迁移或数据同步的速率较低,在源端数据库或目标端数据库的查询业务量较小的时段,硬件资源的占用率较低,数据迁移或数据同步的速率较高。
而如前所述,如果在执行上述步骤S12之后,确定待校验数据行暂时未通过一致性校验,则在等待指定时长之后,执行上述步骤S13。但是基于上述考虑,如果此时源端数据库和目标端数据库之间的迁移或同步效率偏低,导致没能在指定时长内,对暂时未完成迁移或未完成同步的待检验数据行完成彻底迁移或同步,则将导致在执行步骤S13之后,仍然将待校验数据行判定为未通过一致性校验。
为了进一步减少误判的可能,在本发明的一些实施例中,如图2所示,如果在执行上述步骤S12之后,确定待校验数据行未通过一致性校验,则可以对所述等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验的步骤(即上述步骤S13)重复执行多次,直至一致性校验通过或者直至重复次数达到次数阈值为止。
换言之,如果在执行上述步骤S12之后,确定待校验数据行未通过一致性校验,则可以对步骤S13重复执行多次,直至一致性校验通过或者直至重复次数达到次数阈值为止。
其中,次数阈值可以是人为预先设置的,以次数阈值预先设置成3为例。在经过上述步骤S12确定待校验数据行暂时未通过一致性校验的情况下,在等待第一个指定时长后,根据待校验数据行的索引信息,第一次重新查询该索引信息对应的源端数据行和目标端数据行,并根据重新查询的源端数据行和目标端数据行,再次判定待校验数据行是否通过一致性校验(即第一次重复执行步骤S13)。如果通过一致性校验,则停止对步骤S13的重复执行,并结束针对该待校验数据行的校验操作。
如果未通过一致性校验,则在等待第二个指定时长后,根据待校验数据行的索引信息,第二次重新查询该索引信息对应的源端数据行和目标端数据行,并根据重新查询的源端数据行和目标端数据行,再次判定待校验数据行是否通过一致性校验(即第二次重复执行步骤S13)。如果通过一致性校验,则停止对步骤S13的重复执行,并结束针对该待校验数据行的校验操作。
如果未通过一致性校验,则在等待第三个指定时长后,根据待校验数据行的索引信息,第三次重新查询该索引信息对应的源端数据行和目标端数据行,并根据重新查询的源端数据行和目标端数据行,再次判定待校验数据行是否通过一致性校验(即第三次重复执行步骤S13)。如果通过一致性校验,则停止对步骤S13的重复执行,并结束针对该待校验数据行的校验操作。
如果未通过一致性校验,由于重复次数已经达到次数阈值(3次),也随即停止对步骤S13的重复执行,并认定该待校验数据行未通过一致性校验。
通过对上述步骤S13的重复执行,可以进一步使得源端数据库和目标端数据库之间具有更充分的时间,对暂时未完成迁移或未完成同步的待检验数据行继续进行迁移或同步,从而进一步降低误判的可能性。并且,由于每等待一个指定时长之后,都会尝试查询索引信息对应的源端数据行和目标端数据行,因此可以在暂时未完成迁移或未完成同步的待检验数据行彻底完成迁移或同步之后,第一时间查询到相应的源端数据行和目标端数据行,从而确保校验操作的高效性。
此外,考虑到如果每次重复步骤S13时,获取到的源端数据行和目标端数据行的数据均不一致,则源端数据行或目标端数据行很可能发生了连续更新,每次更新后得到新版本的数据行,而每次重复步骤S13时所获取到的源端数据行和目标端数据行恰好是版本相错开的数据行。
为此,在本发明的一些实施例中,在步骤S13的重复次数达到次数阈值之后,如图2所示,还可以按照获取的先后顺序,对先后获取到的多个源端数据行进行排序,获得第一源端数据行序列;以及按照获取的先后顺序,对先后获取到的多个目标端数据行进行排序,获得第一目标端数据行序列;再将所述第一源端数据行序列与所述第一目标端数据行序列进行比较,以再次判断所述待校验数据行是否通过一致性校验。为便于讲述,下文中,将第一源端数据行序列简称为源端数据行序列,将第一目标端数据行序列简称目标端数据行序列。
其中,源端数据行序列中包括先后获取到的多个源端数据行。以前述次数阈值是3为例,源端数据行序列中包括4个源端数据行,依次是:执行步骤S11时获取到的源端数据行、第一次重复步骤S13时获取到的源端数据行、第二次重复步骤S13时获取到的源端数据行、第三次重复步骤S13时获取到的源端数据行。具体实现时,可以将多个源端数据行各自对应的摘要值构建成源端摘要值序列。
其中,目标端数据行序列中包括先后获取到的多个目标端数据行。以前述次数阈值是3为例,目标端数据行序列中包括4个目标端数据行,依次是:执行步骤S11时获取到的目标端数据行、第一次重复步骤S13时获取到的目标端数据行、第二次重复步骤S13时获取到的目标端数据行、第三次重复步骤S13时获取到的目标端数据行。具体实现时,可以将多个目标端数据行各自对应的摘要值构建成目标端摘要值序列。
上述实施例中,通过构造源端数据行序列和目标端数据行序列,并对两个序列进行比较,相当于对连续更新的多个版本的源端数据行和连续更新的多个版本的目标端数据行,从整体上进行比较。从而可以有效避免将版本相错开的源端数据行和目标端数据行两两单独比较,进而可以避免将连续更新且正常同步的数据行误判为一致性校验未通过。
此外,上述实施例在构建源端数据行序列和目标端数据行序列时所利用的源端数据行和目标端数据行,是在执行步骤S11和重复执行步骤S13时已经获取到的多个源端数据行和目标端数据行,因此不需要再专门去获取用于构建序列的数据行,从而节省校验时间,可以有效确保校验操作的高效性。
上述实施例中,在对源端数据行序列和目标端数据行序列进行比较时,可采用的比较方式有多种。
例如第一种比较源端数据行序列和目标端数据行序列方式可以是:首先将源端数据行序列中的靠后一小部分删除,并将目标端数据行序列的靠前一部分删除,最后将删除处理后的源端数据行与删除处理后的目标端数据行序列相比较。
为便于理解,示例地,如表1所示,表1是源端数据行序列和目标端数据行序列的序列示意表。
表1源端数据行序列和目标端数据行序列的序列示意表
为便于理解,引入版本号的概念,源端数据库中的源端数据行如果发生了连续更新,则每次更新后形成新版本的数据行。其中,版本越新,版本号越大。本发明在实施期间,如果每次重复步骤S13时所获取到的源端数据行和目标端数据行恰好是版本相错开的数据行,则示例地,源端数据行Ry-1至Ry-4的版本号可能分别是:3、4、5、6,而目标端数据行Rm-1至Rm-4的版本号可能分别是:2、3、4、5,或者目标端数据行Rm-1至Rm-4的版本号可能分别是:1、2、3、4。
可见Ry-1与Rm-1、Ry-2与Rm-2、Ry-3与Rm-3、Ry-4与Rm-4这四对数据行中,每一对数据行中的源端数据行版本与目标端数据行版本均是错开的,因此在执行步骤S12和步骤S13时,总会得出待校验数据行未通过一致性校验的结论。
其中,每一对数据行中源端数据行版本与目标端数据行版本均错开的原因可能是:由于源端数据库和目标端数据库之间的数据迁移或同步需要时间,在更新后的源端数据行还没有及时迁移或同步至目标端数据库的情况下,执行校验任务的执行设备就执行了步骤S11或步骤S13。例如当源端数据行刚好更新至版本3,执行数据迁移或数据同步的节点设备还没有来得及将版本3的源端数据行迁移或同步至目标端数据库的情况下,执行数据行校验任务的执行设备恰好在此时从源端数据库中查询到版本号为3的源端数据行,并同时从目标端数据库中查询到版本号为2(也可能是1)的目标端数据行。
为了进一步降低误判的可能性,本示例可以将源端数据行序列中的Ry-4删除,得到删除处理后的源端数据行序列:Ry-1、Ry-2、Ry-3,该序列中各个源端数据行的版本号依次为3、4、5。此外,可以将目标端数据行序列中的Rm-1删除,得到删除处理后的目标端数据行序列:Rm-2、Rm-3、Rm-4,该序列中各个源端数据行的版本号依次为3、4、5,或者也可能依次为2、3、4。如此,Ry-1和Rm-2的版本号可能相同、Ry-2和Rm-3的版本号可能相同、Ry-3和Rm-4的版本号可能相同。接着,将删除处理后的源端数据行序列和目标端数据行序列进行比较。具体实现时,可以计算为删除处理后的源端数据行序列计算一个摘要值,并为删除处理后的目标端数据行序列也计算一个摘要值,比较两个摘要值是否相等。如果相等,则确定待校验数据行通过一致性校验,并结束针对该待校验数据行的校验操作。
如果不相等,则说明目标端数据行序列中各个目标端数据行的版本号不是2、3、4、5,而可能依次为:1、2、3、4,于是可以将源端数据行序列中的Ry-4和Ry-3删除,得到删除处理后的源端数据行序列:Ry-1、Ry-2,该序列中各个源端数据行的版本号依次为:3、4。此外,可以将目标端数据行序列中的Rm-1和Rm-2删除,得到删除处理后的目标端数据行序列:Rm-3、Rm-4,该序列中各个目标端数据行的版本号可能依次为:3、4。其中,Ry-1和Rm-3的版本号可能相同、Ry-2和Rm-4的版本号可能相同。接着,将删除处理后的源端数据行序列和目标端数据行序列进行比较。具体实现时,可以计算为删除处理后的源端数据行序列计算一个摘要值,并为删除处理后的目标端数据行序列也计算一个摘要值,比较两个摘要值是否相等。如果相等,则确定待校验数据行通过一致性校验,并结束针对该待校验数据行的校验操作。
如果不相等,还可以再将源端数据行序列中的Ry-4、Ry-3以及Ry-2删除,得到删除处理后的源端数据行序列:Ry-1。此外,可以将目标端数据行序列中的Rm-1、Rm-2以及Rm-3删除,得到删除处理后的目标端数据行序列:Rm-4。其中,Ry-1和Rm-4的版本号可能相同。接着,将删除处理后的源端数据行序列和目标端数据行序列进行比较。具体实现时,可以计算为删除处理后的源端数据行序列计算一个摘要值,并为删除处理后的目标端数据行序列也计算一个摘要值,比较两个摘要值是否相等。如果相等,则确定待校验数据行通过一致性校验,并结束针对该待校验数据行的校验操作。
如果还不相等,则得到该待校验数据行未通过一致性校验的结论,并结束针对该待校验数据行的校验操作。或者在后述一些实施例中,还可以通过获得数据库的日志记录,以做进一步判断。为避免重复,本发明在此暂不赘述。
例如第二种比较源端数据行序列和目标端数据行序列方式可以是:将所述第一源端数据行序列与所述第一目标端数据行序列进行错位配对,获得一对或多对数据行,其中,每对数据行中包括一个源端数据行和一个目标端数据行;对每对数据行中的源端数据行和目标端数据行进行比较,获得每对数据行各自对应的比较结果;根据所获得的比较结果,再次判断所述待校验数据行是否通过一致性校验。
为便于理解,示例地,如上述表1所示,源端数据行序列包括源端数据行Ry-1至Ry-4,目标端数据行序列包括目标端数据行Rm-1至Rm-4。其中,源端数据行Ry-1至Ry-4的版本号可能分别是:3、4、5、6,而目标端数据行Rm-1至Rm-4的版本号可能分别是:2、3、4、5,或者目标端数据行Rm-1至Rm-4的版本号可能分别是:1、2、3、4。
可见Ry-1与Rm-1、Ry-2与Rm-2、Ry-3与Rm-3、Ry-4与Rm-4这四对数据行中,每一对数据行中的源端数据行版本与目标端数据行版本均是错开的,因此在执行步骤S12和步骤S13时,总会得出待校验数据行未通过一致性校验的结论。
为此,本示例可以将源端数据行序列与目标端数据行序列错位配对,使Ry-1与Rm-2组成一对数据行,使Ry-2与Rm-3组成一对数据行,使Ry-3与Rm-4组成一对数据行。然后将Ry-1与Rm-2进行比较,将Ry-2与Rm-3进行比较,以及将Ry-3与Rm-4进行比较,得到三个比较结果。其中,源端数据行与目标端数据行的具体比较方式,可参考前述实施例,本发明在此不赘述。
在获得三个比较结果之后,如果三个比较结果均是:源端数据行的数据与目标端数据行的数据一致,则确定待校验数据行通过一致性校验,可以结束针对该待校验数据行的校验操作。否则,可以重新将源端数据行序列与目标端数据行序列错位配对,使Ry-1与Rm-3组成一对数据行,使Ry-2与Rm-4组成一对数据行。然后将Ry-1与Rm-3进行比较,将Ry-2与Rm-4进行比较,得到两个比较结果。其中,源端数据行与目标端数据行的具体比较方式,可参考前述实施例,本发明在此不赘述。
在获得两个比较结果之后,如果两个比较结果均是:源端数据行的数据与目标端数据行的数据一致,则确定待校验数据行通过一致性校验,可以结束针对该待校验数据行的校验操作。否则,可以再重新将源端数据行序列与目标端数据行序列错位配对,使Ry-1与Rm-4组成一对数据行。然后将Ry-1与Rm-4进行比较,得到一个比较结果。其中,源端数据行与目标端数据行的具体比较方式,可参考前述实施例,本发明在此不赘述。
在获得一个比较结果之后,如果该比较结果是:源端数据行的数据与目标端数据行的数据一致,则确定待校验数据行通过一致性校验,可以结束针对该待校验数据行的校验操作。否则,得到该待校验数据行未通过一致性校验的结论,并结束针对该待校验数据行的校验操作。或者在后述一些实施例中,还可以通过获得数据库的日志记录,以做进一步判断。为避免重复,本发明在此暂不赘述。
本发明通过上述实施例,介绍了两种比较源端数据行序列和目标端数据行序列的具体方式。需要说明的是,本发明对源端数据行序列和目标端数据行序列的具体比较方式不做限定。
如前所述,数据迁移或数据同步的速率并不是均匀的,例如在源端数据库或目标端数据库的查询业务量较大的时段,数据迁移或数据同步的速率较低,在源端数据库或目标端数据库的查询业务量较小的时段,数据迁移或数据同步的速率较高。因此,即使源端数据行发生了连续更新,先后多次获取到的源端数据行也不一定是连续版本的多个源端数据行。例如在先后两次获取源端数据行期间,源端数据行发生了不止一次更新,导致连续两次获取的源端数据行的版本不连续。同样地,先后多次获取到的目标端数据行也不一定是连续版本的多个目标端数据行。
为便于理解,示例地,如表2所示,表2是源端数据行序列和目标端数据行序列的序列示意表。
表2源端数据行序列和目标端数据行序列的序列示意表
表2中,源端数据行Ry-1至Ry-4的版本号分别是:3、4、5、6,而目标端数据行Rm-1至Rm-4的版本号分别是:1、2、4、5。可见Ry-1与Rm-1、Ry-2与Rm-2、Ry-3与Rm-3、Ry-4与Rm-4这四对数据行中,每一对数据行中的源端数据行版本与目标端数据行版本均不一致,因此在执行步骤S12和步骤S13时,总会得出待校验数据行未通过一致性校验的结论。
表2中,目标端数据行序列中各个目标端数据行的版本号并不连续,其原因在于:在第一次执行步骤S13获得目标端数据行Rm-2之后,且在第二次执行步骤S13获得目标端数据行Rm-3之前,源端数据库和目标端数据库之间的数据迁移或数据同步的速率突然提升,使得在此期间连续发生了两个版本的数据迁移或数据同步。如此,第二次执行步骤S13获得目标端数据行Rm-3的版本号实际为4,而不是3。
在目标端数据行序列中各个目标端数据行的版本号并不连续,和/或,源端数据行序列中各个源端数据行的版本号并不连续的情况下,通过上述实施例提出的比较源端数据行序列和目标端数据行序列,也可能会得到待校验数据行未通过一致性校验的结论,然而该结论存在一定的误判可能性。
为此,在本发明的一些实施例中,在经过所述源端数据行序列与所述目标端数据行序列的比较,确定所述待校验数据行未通过一致性校验的情况下,还可以从所述源端数据库的日志记录中,获取针对所述索引信息对应的源端数据行的第一近期操作记录;并从所述目标端数据库的日志记录中,获取针对所述索引信息对应的目标端数据行的第二近期操作记录;再根据所述第一近期此致敬礼和所述第二近期操作记录,再次判断所述待校验数据行是否通过一致性校验。
其中,源端数据库的日志记录具体可以是源端数据库的binlog(二进制日志),同样地,目标端数据库的日志记录具体可以是目标端数据库的binlog(二进制日志)。
无论是源端数据库的日志记录还是目标端数据库的日志记录,均记载有针对各个数据表中的各个数据行的操作记录,例如数据行的增、删、改等操作。本发明的上述实施例需要从源端数据库的日志记录中,获取针对所述索引信息对应的源端数据行的第一近期操作记录。换言之,从该日志记录记载的大量操作记录中,获取针对所述索引信息对应的源端数据行的近期历史操作记录。
同样地,本发明的上述实施例需要从目标端数据库的日志记录中,获取针对所述索引信息对应的目标端数据行的第二近期操作记录。换言之,从该日志记录记载的大量操作记录中,获取针对所述索引信息对应的目标端数据行的近期历史操作记录。
其中,近期可以理解为:最近指定时长以内。相应地,近期历史操作记录可理解为在最近的指定时长内的操作记录。例如指定时长为60秒,则近期历史操作记录是指:最近60秒内的操作记录。
或者,近期可以理解为:最近预设次数。近期历史操作记录也可理解为最近预设次数的操作记录。例如预设次数为5次,则近期历史操作记录是指:最近的5次操作记录。
最后,根据获取的第一近期操作记录,可以确定针对源端数据行近期的一系列历史操作,以确定源端数据行近期连续更新的一系列版本,同样地,根据获取的第二近期操作记录,可以确定针对目标端数据行近期的一系列历史操作,以确定源端数据行近期连续更新的一系列版本。基于此,可以再次确定待校验数据行是否通过一致性校验。本发明中,根据日志记录所确定出的多个源端数据行是版本连续的多个源端数据行,根据日志记录所确定出的多个目标端数据行是版本连续的多个目标端数据行,不存在版本不连续的情况。因此确定出的结论更加可靠,可以有效规避误判的发生。
上述实施例在根据所述近期源端日志和所述近期目标端日志,再次确定所述待校验数据行是否通过一致性校验时,具体地,可以通过以下步骤实现:
根据所述第一近期操作记录,确定针对源端数据行的多次历史操作,并获得每次历史操作后更新的源端数据行;按照更新的先后顺序,对获得的多个源端数据行进行排序,获得第二源端数据行序列;同样地,根据所述第二近期操作记录,确定针对目标端数据行的多次历史操作,并获得每次历史操作后更新的目标端数据行;按照更新的先后顺序,对获得的多个目标端数据行进行排序,获得第二目标端数据行序列;最后,将所述第二源端数据行序列与所述第二目标端数据行序列进行错位比较,以判断确定所述待校验数据行是否通过一致性校验。
如前所述,由于源端数据库的日志记录中记载有针对各个数据表中的各个数据行的操作记录,例如数据行的增、删、改等操作。每次操作,即是对源端数据行的一次更新。由于近期源端日志中记载了近期针对源端数据行的连续多次历史操作,因此可以根据记载的连续多次历史操作,确定出多个连续版本的源端数据行。
为便于理解,示例地,最后一次执行步骤S13所查询到的数据行的数据为{\"location\":\"33.535643,115.833308,0.0,1,1,201703051349,0.0\",\"mac\":\"c8:3a:35:4b:ac:b0\",\"wif-ifrequency\":\"2521\"}。查询到针对该源端数据行近期的历史操作从后往前依次包括:
1、删除关键字wif-ifrequency对应的数据由5745修改为2521;
2、将关键字mac对应的数据由b0:95:8e:6f:73:29修改为c8:3a:35:4b:ac:b0。
如此,多个连续版本的源端数据行从后往前依次是:
{\"location\":\"33.535643,115.833308,0.0,1,1,201703051349,0.0\",\"mac\":\"c8:3a:35:4b:ac:b0\",\"wif-ifrequency\":\"2521\"};
{\"location\":\"33.535643,115.833308,0.0,1,1,201703051349,0.0\",\"mac\":\"c8:3a:35:4b:ac:b0\",\"wif-ifrequency\":\"5745\"};
{\"location\":\"33.535643,115.833308,0.0,1,1,201703051349,0.0\",\"mac\":\"b0:95:8e:6f:73:29\",\"wif-ifrequency\":\"5745\"}。
上述依次排列的多个连续版本的源端数据行即可以作为第二源端数据行序列。或者,可以将上述依次排列的多个连续版本的源端数据行颠倒排列顺序,并将颠倒排列顺序后的多个连续版本的源端数据行作为第二源端数据行序列。
同样地,可采用与上述示例相同的方式,得到第二目标端数据行序列。为避免重复,本发明对第二目标端数据行序列的获得方式不做赘述。
最后,在将第二源端数据行序列与第二目标端数据行序列进行错位比较,以再次确定所述待校验数据行是否通过一致性校验时,对于具体的比较方式,可采用上述一些示例中第一源端数据行序列和第一目标端数据行序列的比较方式。为避免重复,本发明对第二源端数据行序列与第二目标端数据行序列之间的比较方式不做赘述。此外,如图2所示,如果通过比较第二源端数据行序列和第二目标端数据行序列,确定待检验数据行未通过一致性校验,则结束针对该待校验数据行的校验操作。
以上,本发明重点介绍了在执行步骤S11之后,在成功读取到索引信息对应的源端数据行和目标端数据行的情况下,对获取到的源端数据行和目标端数据行进行比较的实施例。
此外,在执行上述步骤S11之后,也可能仅获取到索引信息对应的源端数据行,而未获取到索引信息对应的目标端数据行。其中,“成功获取到源端数据行,而未获取到目标端数据行”这一情况的发生,可能是因为:源端数据行是近期新增的数据行,而目标端数据库中还没有及时同步新增对应的目标端数据行。因此在仅获取到索引信息对应的源端数据行,而未获取到索引信息对应的目标端数据行的情况下,可以等待指定时长后,重新获取该索引信息对应的目标端数据行。
在重新获取到所述索引信息对应的目标端数据行的情况下,则说明暂时未完成迁移或未完成同步的新增数据行(即源端数据行,也即待校验数据行)已经彻底迁移或同步至目标端数据库,形成目标端数据行。将所述重新获取到的目标端数据行与已经获取到的源端数据行(即上述步骤S11中获取的源端数据行)进行比较,以判断所述待校验数据行是否通过一致性校验。具体地,在所述重新获取到的目标端数据行与已经获取到的源端数据行相一致的情况下,确定所述待校验数据行通过一致性校验。
具体实现时,如果通过步骤S11查询到的源端数据行的数据和重新查询到的目标端数据行的数据相一致,则说明源端数据行在从源端数据库迁移或同步至目标数据库期间,未发生错误。因此,可以确定待校验数据行通过一致性校验。需要说明的是,为简化附图,图2中未示出该段所述的情况。
此外,如图2所示,如果未能重新获取到所述索引信息对应的目标端数据行,则确定待校验数据暂时仍未通过一致性校验。并在经过指定时长之后,再次重新获取所述索引信息对应的目标端数据行。如果重新获取目标端数据行的步骤已经重复多次,重复次数达到次数阈值,也没有成功获取到目标端数据行,则可以终止对该待校验数据行的校验操作,并得到该待校验数据行未通过一致性校验的最终结论。
此外,在执行上述步骤S11之后,也可能仅获取到索引信息对应的目标端数据行,而未获取到索引信息对应的源端数据行。其中,“成功获取到目标端数据行,而未获取到源端数据行”这一情况的发生,可能是因为:源端数据行被删除,而目标端数据行还没有及时被同步删除。因此在仅获取到索引信息对应的目标端数据行,而未获取到索引信息对应的目标端数据行的情况下,可以等待指定时长后,重新获取该索引信息对应的目标端数据行。
在未重新获取到所述索引信息对应的目标端数据行的情况下,则说明目标端数据库中暂时未完成同步删除的目标数据行已经彻底同步删除。因此,可以确定待校验数据行通过一致性校验。需要说明的是,为简化附图,图2中未示出该段所述的情况。
此外,如图2所示,如果仍然能获取到所述索引信息对应的目标端数据行,则确定待校验数据暂时仍未通过一致性校验。并在经过指定时长之后,再次重新获取所述索引信息对应的目标端数据行。如果重新获取目标端数据行的步骤已经重复多次,重复次数达到次数阈值,每次都能成功获取到目标端数据行,则可以终止对该待校验数据行的校验操作,并得到该待校验数据行未通过一致性校验的最终结论。
基于同一发明构思,本发明一实施例提供一种数据校验装置。参考图3(a),图3(a)是本发明一实施例提出的数据校验装置的示意图。如图3(a)所示,该装置包括:
数据行获取模块31,用于在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,从所述源端数据库中获取所述索引信息对应的源端数据行,并从所述目标端数据库中获取所述索引信息对应的目标端数据行;
数据行比较模块32,用于在获取到所述源端数据行和所述目标端数据行的情况下,对所述源端数据行和所述目标端数据行进行比较,以判断所述待校验数据行是否通过一致性校验;
循环模块33,用于在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
可选地,所述循环模块33具体用于:对所述等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验的步骤重复执行多次,直至一致性校验通过或者直至重复次数达到次数阈值为止。
参考图3(b),图3(b)是本发明另一实施例提出的数据校验装置的示意图。如图3(b)所示,该装置不仅包括数据行获取模块31、数据行比较模块32以及循环模块33,还可以包括排序模块34和序列比较模块35:
所述排序模块34,用于按照获取的先后顺序,对先后获取到的多个源端数据行进行排序,获得第一源端数据行序列;
所述排序模块34,还用于按照获取的先后顺序,对先后获取到的多个目标端数据行进行排序,获得第一目标端数据行序列;
所述序列比较模块35,用于将所述第一源端数据行序列与所述第一目标端数据行序列进行比较,以再次判断所述待校验数据行是否通过一致性校验。
可选地,所述序列比较模块35在将所述第一源端数据行序列与所述第一目标端数据行序列进行比较,以再次判断所述待校验数据行是否通过一致性校验时,具体用于,将所述第一源端数据行序列与所述第一目标端数据行序列进行错位配对,获得一对或多对数据行,其中,每对数据行中包括一个源端数据行和一个目标端数据行;对每对数据行中的源端数据行和目标端数据行进行比较,获得每对数据行各自对应的比较结果;根据所获得的比较结果,再次判断所述待校验数据行是否通过一致性校验。
如图3(b)所示,所述装置还包括:日志获取模块36和判断模块37;
所述日志获取模块36,用于在经过所述第一源端数据行序列与所述第一目标端数据行序列的比较,确定所述待校验数据行未通过一致性校验的情况下,从所述源端数据库的日志记录中,获取针对所述索引信息对应的源端数据行的第一近期操作记录;
所述日志获取模块36,还用于从所述目标端数据库的日志记录中,获取针对所述索引信息对应的目标端数据行的第二近期操作记录;
所述判断模块37,用于根据所述第一近期操作记录和所述第二近期操作记录,再次判断所述待校验数据行是否通过一致性校验。
可选地,所述判断模块37在根据所述第一近期操作记录和所述第二近期操作记录,再次判断所述待校验数据行是否通过一致性校验时,具体用于,根据所述第一近期操作记录,确定针对源端数据行的多次历史操作,并获得每次历史操作后更新的源端数据行;按照更新的先后顺序,对获得的多个源端数据行进行排序,获得第二源端数据行序列;根据所述第二近期操作记录,确定针对目标端数据行的多次历史操作,并获得每次历史操作后更新的目标端数据行;按照更新的先后顺序,对获得的多个目标端数据行进行排序,获得第二目标端数据行序列;将所述第二源端数据行序列与所述第二目标端数据行序列进行错位比较,以再次判断所述待校验数据行是否通过一致性校验。
可选地,所述循环模块33,还用于在获取到所述源端数据行,但未获取到所述目标端数据行的情况下,等待指定时长后,重新获取所述索引信息对应的目标端数据行;在重新获取到所述索引信息对应的目标端数据行的情况下,将所述重新获取到的目标端数据行与已经获取到的源端数据行进行比较;在所述重新获取到的目标端数据行与已经获取到的源端数据行相一致的情况下,确定所述待校验数据行通过一致性校验。
可选地,所述循环模块33,还用于在获取到所述目标端数据行,但未获取到所述源端数据行的情况下,等待指定时长后,重新获取所述索引信息对应的目标端数据行;在未重新获取到所述索引信息对应的目标端数据行的情况下,确定所述待校验数据行通过一致性校验。
可选地,所述数据行比较模块32在对所述源端数据行和所述目标端数据行进行比较时,具体用于,计算所述源端数据行的摘要值和所述目标端数据行的摘要值,比较两个摘要值是否相等。
可选地,所述待检验数据行的数量为多个,多个待检验数据行各自的索引信息被排列成索引信息排序;所述数据校验装置在对多个待检验数据行进行校验时,根据所述索引信息排序,依次对各个待检验数据行分别进行校验,并记录一致性校验未通过的数据行。
本发明实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,从所述源端数据库中获取所述索引信息对应的源端数据行,并从所述目标端数据库中获取所述索引信息对应的目标端数据行;
在获取到所述源端数据行和所述目标端数据行的情况下,对所述源端数据行和所述目标端数据行进行比较,以判断所述待校验数据行是否通过一致性校验;
在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
此外,处理器401在执行存储器403上所存放的程序时,还可以实现上述其他方法实施例中的步骤。为避免重复,本发明在此不做赘述。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据校验方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据校验方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (13)
1.一种数据校验方法,其特征在于,所述方法包括:
在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,用于执行校验任务的执行设备同时向所述源端数据库和所述目标端数据库发出校验指令,所述校验指令中携带待检验数据行的索引信息排序;所述源端数据库和所述目标端数据库根据所述校验指令中的索引信息排序,依次将每个索引信息对应的所述源端数据行和所述目标端数据行发送给所述执行设备;
所述执行设备在同一时间接收到一个索引信息对应的一个源端数据行和一个目标端数据行;所述执行设备针对同一时间接收到的所述源端数据行和所述目标端数据行进行比较,以判断所述待校验数据行是否通过一致性校验;
在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
2.根据权利要求1所述的方法,其特征在于,对所述等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验的步骤重复执行多次,直至一致性校验通过或者直至重复次数达到次数阈值为止。
3.根据权利要求2所述的方法,其特征在于,在所述重复次数达到所述次数阈值之后,所述方法还包括:
按照获取的先后顺序,对先后获取到的多个源端数据行进行排序,获得第一源端数据行序列;
按照获取的先后顺序,对先后获取到的多个目标端数据行进行排序,获得第一目标端数据行序列;
将所述第一源端数据行序列与所述第一目标端数据行序列进行比较,以再次判断所述待校验数据行是否通过一致性校验。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一源端数据行序列与所述第一目标端数据行序列进行比较,以再次判断所述待校验数据行是否通过一致性校验的步骤,包括:
将所述第一源端数据行序列与所述第一目标端数据行序列进行错位配对,获得一对或多对数据行,其中,每对数据行中包括一个源端数据行和一个目标端数据行;
对每对数据行中的源端数据行和目标端数据行进行比较,获得每对数据行各自对应的比较结果;
根据所获得的比较结果,再次判断所述待校验数据行是否通过一致性校验。
5.根据权利要求3所述的方法,其特征在于,在经过所述第一源端数据行序列与所述第一目标端数据行序列的比较,确定所述待校验数据行未通过一致性校验的情况下,所述方法还包括:
从所述源端数据库的日志记录中,获取针对所述索引信息对应的源端数据行的第一近期操作记录;
从所述目标端数据库的日志记录中,获取针对所述索引信息对应的目标端数据行的第二近期操作记录;
根据所述第一近期操作记录和所述第二近期操作记录,再次判断所述待校验数据行是否通过一致性校验。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一近期操作记录和所述第二近期操作记录,再次判断所述待校验数据行是否通过一致性校验的步骤,包括:
根据所述第一近期操作记录,确定针对源端数据行的多次历史操作,并获得每次历史操作后更新的源端数据行;
按照更新的先后顺序,对获得的多个源端数据行进行排序,获得第二源端数据行序列;
根据所述第二近期操作记录,确定针对目标端数据行的多次历史操作,并获得每次历史操作后更新的目标端数据行;
按照更新的先后顺序,对获得的多个目标端数据行进行排序,获得第二目标端数据行序列;
将所述第二源端数据行序列与所述第二目标端数据行序列进行错位比较,以再次判断所述待校验数据行是否通过一致性校验。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在获取到所述源端数据行,但未获取到所述目标端数据行的情况下,等待指定时长后,重新获取所述索引信息对应的目标端数据行;
在重新获取到所述索引信息对应的目标端数据行的情况下,将所述重新获取到的目标端数据行与已经获取到的源端数据行进行比较;
在所述重新获取到的目标端数据行与已经获取到的源端数据行相一致的情况下,确定所述待校验数据行通过一致性校验。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在获取到所述目标端数据行,但未获取到所述源端数据行的情况下,等待指定时长后,重新获取所述索引信息对应的目标端数据行;
在未重新获取到所述索引信息对应的目标端数据行的情况下,确定所述待校验数据行通过一致性校验。
9.根据权利要求1-8任一所述的方法,其特征在于,对所述源端数据行和所述目标端数据行进行比较的步骤,包括:
计算所述源端数据行的摘要值和所述目标端数据行的摘要值,比较两个摘要值是否相等。
10.根据权利要求1-8任一所述的方法,其特征在于,所述待检验数据行的数量为多个,多个待检验数据行各自的索引信息被排列成索引信息排序;
在对多个待检验数据行进行校验时,根据所述索引信息排序,依次对各个待检验数据行分别进行校验,并记录一致性校验未通过的数据行。
11.一种数据校验装置,其特征在于,所述装置包括:
数据行获取模块,用于在源端数据库和目标端数据库之间进行数据迁移或数据同步期间,根据待校验数据行的索引信息,用于执行校验任务的执行设备同时向所述源端数据库和所述目标端数据库发出校验指令,所述校验指令中携带待检验数据行的索引信息排序;所述源端数据库和所述目标端数据库根据所述校验指令中的索引信息排序,依次将每个索引信息对应的所述源端数据行和所述目标端数据行发送给所述执行设备;
数据行比较模块,用于所述执行设备在同一时间接收到一个索引信息对应的一个源端数据行和一个目标端数据行;所述执行设备针对同一时间接收到的所述源端数据行和所述目标端数据行进行比较,以判断所述待校验数据行是否通过一致性校验;
循环模块,用于在所述待校验数据行未通过一致性校验的情况下,等待指定时长后,重新获取所述索引信息对应的源端数据行和目标端数据行,并根据重新获取的源端数据行和目标端数据行,再次判断所述待校验数据行是否通过一致性校验。
12.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-10任一所述的方法步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010581955.6A CN111737230B (zh) | 2020-06-23 | 2020-06-23 | 数据校验方法、装置、电子设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010581955.6A CN111737230B (zh) | 2020-06-23 | 2020-06-23 | 数据校验方法、装置、电子设备以及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111737230A CN111737230A (zh) | 2020-10-02 |
CN111737230B true CN111737230B (zh) | 2024-04-12 |
Family
ID=72650724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010581955.6A Active CN111737230B (zh) | 2020-06-23 | 2020-06-23 | 数据校验方法、装置、电子设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111737230B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306999A (zh) * | 2020-10-19 | 2021-02-02 | 亚信科技(中国)有限公司 | 数据稽核方法、装置、电子设备及计算机可读存储介质 |
CN112860669A (zh) * | 2021-02-24 | 2021-05-28 | 中国联合网络通信集团有限公司 | 数据迁移的校验方法和装置 |
CN112948430B (zh) * | 2021-03-30 | 2022-12-13 | 中国建设银行股份有限公司 | 一种日期数据查询方法和装置 |
CN113297325B (zh) * | 2021-05-04 | 2022-03-29 | 西安博达软件股份有限公司 | 一种主页平台数据同步中的非授权数据预校正方法及系统 |
CN113282393A (zh) * | 2021-06-04 | 2021-08-20 | 银盛支付服务股份有限公司 | 一种解决面向多个画像标签作业调度任务的方法 |
CN113254424B (zh) * | 2021-06-11 | 2023-02-28 | 腾讯科技(深圳)有限公司 | 数据服务迁移方法、装置及设备 |
CN114422531B (zh) * | 2022-03-11 | 2022-07-05 | 深圳市金政软件技术有限公司 | 数据同步方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335443A (zh) * | 2014-08-13 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种用于数据同步中的异常检测的方法与设备 |
CN107122355A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN107315814A (zh) * | 2017-06-29 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种kdb数据库数据迁移后数据一致性验证方法及系统 |
CN110347746A (zh) * | 2019-06-13 | 2019-10-18 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10824644B2 (en) * | 2017-03-07 | 2020-11-03 | Mcafee, Llc | Aggregate, index based, synchronization of node contents |
US10565070B2 (en) * | 2017-11-29 | 2020-02-18 | Bmc Software, Inc. | Systems and methods for recovery of consistent database indexes |
US10884998B2 (en) * | 2018-09-14 | 2021-01-05 | International Business Machines Corporation | Method for migrating data records from a source database to a target database |
-
2020
- 2020-06-23 CN CN202010581955.6A patent/CN111737230B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335443A (zh) * | 2014-08-13 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种用于数据同步中的异常检测的方法与设备 |
CN107122355A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN107315814A (zh) * | 2017-06-29 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种kdb数据库数据迁移后数据一致性验证方法及系统 |
CN110347746A (zh) * | 2019-06-13 | 2019-10-18 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111737230A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111737230B (zh) | 数据校验方法、装置、电子设备以及可读存储介质 | |
US20220335034A1 (en) | Multi-master architectures for distributed databases | |
US11816063B2 (en) | Automatic archiving of data store log data | |
CN107391628B (zh) | 数据同步方法及装置 | |
US9965539B2 (en) | Computer implemented method for dynamic sharding | |
WO2015188501A1 (zh) | 配置文件更新方法、装置及系统和计算机存储介质 | |
US20170031948A1 (en) | File synchronization method, server, and terminal | |
US20220004334A1 (en) | Data Storage Method, Apparatus and System, and Server, Control Node and Medium | |
CN111708755A (zh) | 数据迁移方法、装置、系统、电子设备以及可读存储介质 | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
WO2016169237A1 (zh) | 数据处理方法及装置 | |
CN109634989B (zh) | 一种hive任务执行引擎选择方法和系统 | |
WO2022134797A1 (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
US11455117B2 (en) | Data reading method, apparatus, and system, avoiding version rollback issues in distributed system | |
WO2016116013A1 (zh) | 软件升级方法和系统 | |
US10853892B2 (en) | Social networking relationships processing method, system, and storage medium | |
CN113553373A (zh) | 数据同步方法及装置、存储介质及电子设备 | |
CN110795495A (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN110955460A (zh) | 一种服务进程启动方法、装置、电子设备和存储介质 | |
CN108121514B (zh) | 元信息更新方法、装置、计算设备及计算机存储介质 | |
CN113542398B (zh) | 分布式集群系统的管控方法、装置、介质和设备 | |
CN111147226A (zh) | 数据存储方法、装置及存储介质 | |
CN106354830B (zh) | 一种数据库集群节点间数据同步的方法及装置 | |
US20140156714A1 (en) | Distributed file system processing apparatus and method, and storage media storing the same | |
CN111881110B (zh) | 数据迁移方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |