一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据校验的方法、装置、计算设备和存储介质与流程

2021-11-09 20:48:00 来源:中国专利 TAG:


1.本技术涉及大数据技术领域,特别涉及一种数据校验的方法、装置、计算设备和存储介质。


背景技术:

2.在大数据时代,数据是企业的核心资产,所以要保证数据的准确性。但是数据在读取、传送和存储过程中可能会出现错误,为了减少和避免数据出现错误,一方面要提高计算机软件和硬件的可靠性,另一发面也要对数据进行数据校验,使得能够快速发现数据错误,甚至定位出错误位置,从而避免因数据错误带来的损失。
3.相关技术中,是开启源数据库和目标数据库的写入锁,将源数据库中的数据表分块,每个块包括多行数据,将每个块中每一行内所有列转换为字符串进行拼接,计算一个哈希值。然后将每个块内所有行的哈希值做异或得到每个块的哈希值。这个确定每个块的哈希值的过程被封装为一条结构化查询语言(structured query language,sql)语句,传递到目标数据库执行。在目标数据库按照该sql语句确定数据表中每个块的哈希值。比较源数据库和目标数据库相同块的哈希值,若相同块的哈希值一致,则确定数据不一致,若相同块的哈希值不一致,则确定数据不一致。在数据校验完成后,解除源数据库和目标数据库的写入锁。
4.由于在数据校验过程中需要开启源数据库和目标数据库的写入锁,所以会导致数据库在校验过程不能写入数据,进而会导致数据库的处理性能下降。


技术实现要素:

5.本技术提供了一种数据校验的方法、装置、计算设备和存储介质,用以在数据校验时,降低对数据库的处理性能的影响。
6.第一方面,本技术提供了一种数据校验的方法,该方法包括:接收校验通知,校验通知包括源数据库的标识和目标数据库的标识,获取源数据库在校验时间段的第一增量数据和目标数据库在校验时间段的第二增量数据,校验时间段为本次校验时间点至上次校验时间点组成的时间段,根据第一增量数据和第二增量数据,确定目标数据库中与源数据库不一致的数据。
7.本技术所示的方案,数据校验的方法可以由数据校验的装置执行,用户想要对源数据库和目标数据库进行校验,可以向数据校验的装置提交校验通知,校验通知包括源数据库的标识和目标数据库的标识。数据校验的装置接收校验通知,数据校验的装置可以使用源数据库的标识,获取源数据库在校验时间段的第一增量数据,并且使用目标数据库的标识,获取目标数据库在校验时间段的第二增量数据。然后数据校验的装置可以根据第一增量数据和第二增量数据,确定目标数据库中与源数据库不一致的数据。这样,由于直接可以获取到源数据库和目标数据库在校验时间段的增量数据,进行校验,也即实现了对异构数据库同步的增量数据进行一致性校验,所以可以不用锁定数据库就能进行校验,那么可
以在不降低数据库处理数据的性能的情况下实现数据校验。
8.在第一方面的一种可能的实现方式中,获取源数据库在校验时间段的第一增量数据和目标数据库在校验时间段的第二增量数据,包括:根据校验时间段的增量数据的信息,生成目标事务的执行指令,目标事务的执行指令用于指示源数据库根据增量数据的信息确定出第一增量数据,并将目标事务同步至目标数据库执行,使得目标数据库根据增量数据的信息确定出第二增量数据;向源数据库发送目标事务的执行指令;从源数据库获取第一增量数据,从目标数据库获取第二增量数据。
9.本技术所示的方案,数据校验的装置可以从源数据库中,获取本次校验时间点至上次校验时间点之间的事务日志,即获取到校验时间段的事务日志。然后数据校验的装置在该事务日志中,确定源数据库在校验时间段的增量数据的信息。数据校验的装置可以在使用增量数据的信息,生成目标事务的执行指令。数据校验的装置可以将目标事务的执行指令发送给源数据库,源数据库接收到目标事务的执行指令后,可以执行目标事务,即使用增量数据的信息,在源数据库中,确定出第一增量数据。源数据库将第一增量数据发送给数据校验的装置。源数据库执行完目标事务后,可以通过数据同步服务,将目标事务同步给目标数据库,目标数据库可以执行目标事务,即使用增量数据信息,确定出第二增量数据。目标数据库将第二增量数据发送给数据校验的装置。数据校验的装置可以接收源数据库提供的第一增量数据,并且接收目标数据库提供的第二增量数据,从而获取到第一增量数据和第二增量数据。这样,可以通过执行事务的方式,获取到增量数据。
10.在第一方面的一种可能的实现方式中,增量数据的信息包括增量数据的主键和所属的数据表。
11.在第一方面的一种可能的实现方式中,根据第一增量数据和第二增量数据,确定目标数据库中与源数据库不一致的数据,包括:获取第一增量数据所在的数据行中未修改的数据和第二增量数据所在的数据行中未修改的数据;根据第一增量数据、第一增量数据所在的数据行中未修改的数据、第二增量数据和第二增量数据所在的数据行中未修改的数据,确定目标数据库中与源数据库不一致的数据。
12.本技术所示的方案,在源数据库在向数据校验的装置提供第一增量数据时,还提供了第一增量数据所在的数据行中未修改的数据,数据校验的装置还可以获取到第一增量数据所在的数据行中未修改的数据。在源数据库在向数据校验的装置提供第二增量数据时,还提供了第二增量数据所在的数据行中未修改的数据,数据校验的装置还可以获取到第二增量数据所在的数据行中未修改的数据。数据校验的装置可以使用第一增量数据、第一增量数据所在的数据行中未修改的数据、第二增量数据和第二增量数据所在的数据行中未修改的数据,确定目标数据库中与源数据库不一致的数据。这样,可以通过增量数据所在的数据行,确定出目标数据库中与源数据库不一致的数据。
13.在第一方面的一种可能的实现方式中,根据第一增量数据、第一增量数据所在的数据行中未修改的数据、第二增量数据和第二增量数据所在的数据行中未修改的数据,确定目标数据库中与源数据库不一致的数据,包括:根据第一增量数据、第一增量数据所在的数据行中未修改的数据,对第一增量数据所属的数据表的默克尔树进行更新,获得第一默克尔树;根据第二增量数据、第二增量数据所在的数据行中未修改的数据,对第二增量数据所属的数据表的默克尔树进行更新,获得第二默克尔树;对第一默克尔树和第二默克尔树
进行比对,确定目标数据库中与源数据库不一致的数据。
14.本技术所示的方案,数据校验的装置可以将第一增量数据所在的数据行的增量数据和未修改的数据转换为字符串,然后将每一数据行的增量数据和未修改的数据的字符串分别进行拼接,然后对每一数据行拼接的字符串进行哈希计算,获得每一数据行对应的哈希值。每一数据行对应的哈希值即为第一增量数据所属的数据表的默克尔树的一个叶子节点的哈希值。然后数据校验的装置可以将每一数据行对应的哈希值,对该数据表的默克尔树的叶子接点的哈希值进行替换,计算该默克尔树的非叶子节点的哈希值,获得第一默克尔树。同样,数据校验的装置使用相同的方式,获取第二增量数据所属的数据表的第二默克尔树。然后数据校验的装置可以比较第一默克尔树的树根节点与第二默克尔树的树根节点的哈希值,若哈希值相同,则确定目标数据库中与源数据库不存在一致性数据。若哈希值不相同,则在第一默克尔树和第二默克尔树中,从树的顶端依次向下比较,确定出哈希值不相同的叶子节点,进而可以确定该叶子节点对应的数据即为目标数据库中与源数据库不一致的数据。这样,由于采用了默克尔树,在树根节点的哈希值一致的情况下,不需要继续比对,所以可以加快确定不一致的数据的速度。
15.在第一方面的一种可能的实现方式中,该方法还包括:将不一致的数据添加至候选队列;在将不一致的数据添加至候选队列后的目标时长时,重新对候选队列的不一致的数据进行一致性校验。
16.本技术所示的方案,数据校验的装置中建立有不一致的数据的候选队列,在确定出不一致的数据后,可以将不一致的数据添加至该候选队列。数据校验的装置可以在将不一致的数据添加至候选队列时开始计时,等到目标时长时,数据校验的装置重新对不一致的数据进行一致性校验,即重新执行校验处理,确定不一致的数据是否确实是不一致的数据。这样,可以提高确定出不一致的数据的准确性。这是由于有可能存在目标数据库的数据还未同步完成就进行校验的情况,导致出现不一致的数据,所以在等待目标时长后目标数据库的数据同步完成,再进行校验,校验结果比较准确。
17.在第一方面的一种可能的实现方式中,该方法还包括:将目标数据库中不一致的数据修改为与源数据库中的数据一致。
18.本技术所示的方案,数据校验的装置可以在源数据库中,找到目标数据库中不一致的数据对应的数据。然后数据校验的装置可以将该不一致的数据修改为其在源数据库中对应的数据。这样,可以使得源数据库和目标数据库的数据保持一致。
19.第二方面,提供了一种数据校验的装置,该装置包括一个或多个模块,以实现第一方面及其可能的实现方式的方法。
20.第三方面,提供了一种计算设备,计算设备包括处理器和存储器,其中:存储器中存储有计算机指令,处理器执行计算机指令,以实现第一方面及其可能的实现方式的方法。
21.第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算设备执行时,使得计算设备执行第一方面及其可能的实现方式的方法。
22.第五方面,提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面及其可能的实现方式的方法。
附图说明
23.图1是本技术一个示例性实施例提供的系统架构图;
24.图2是本技术一个示例性实施例提供的计算设备的结构示意图;
25.图3是本技术一个示例性实施例提供的数据校验的方法的流程示意图;
26.图4是本技术一个示例性实施例提供的数据校验的流程示意图;
27.图5是本技术一个示例性实施例提供的数据表与默克尔树的示意图;
28.图6是本技术一个示例性实施例提供的数据校验的方法的流程示意图;
29.图7是本技术一个示例性实施例提供的数据校验的方法的流程示意图;
30.图8是本技术一个示例性实施例提供的数据校验的方法的流程示意图;
31.图9是本技术一个示例性实施例提供的数据校验的装置的结构示意图。
具体实施方式
32.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
33.为了便于对本技术实施例的理解,下面首先介绍所涉及到的名词:
34.数据校验,是为保证数据的完整性而进行的一种验证操作。发送方向接收方发送数据,发送方通常用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算接收到的数据,获得校验值。如果两次计算得到的检验值相同,则说明数据是完整的。
35.数据复制过程中数据发生错误的原因主要为:1、数据存储时发生错误;2、数据传输过程数据损坏;3、数据处理过程中出现错误;4、数据冲突(指数据内容重复);5、配置错误(指复制的数据的源和目标未正确配对);6、静默数据错误(数据在存储系统传输中,经过了多个部件、多种传输通道和复杂的软件处理过程,其中任意一个环节发生错误都可能会导致数据错误,但是这种错误一般无法被立即检测出来,而是后续通过应用在访问数据过程中,才发现数据已经出错,这种错误称为是静默数据错误)。
36.为了完成数据校验,且不降低数据库的处理性能,本技术提供了一种数据校验的方法,该方法的执行主体可以是数据校验的装置。数据校验的装置可以是一个硬件装置,如服务器、终端等计算设备,也可以是一个软件装置,如可以为运行在硬件装置上的一套软件程序。示例性的,数据校验的装置可以运行在云计算设备系统(可以包括至少一个云计算设备,如服务器等),也可以运行在边缘计算设备系统(可以包括至少一个边缘计算设备,如服务器、台式电脑等),还可以运行在各种终端计算设备上(如笔记本电脑、个人台式电脑等)。
37.如图1所示,提供了本技术的应用场景示意图,数据校验的装置分别与源数据库和目标数据库建立有通信连接,该通信连接可以是有线或无线连接。源数据库和目标数据库可以是任何一种数据库,源数据库与目标数据库之间可以进行数据同步。源数据库通过数据同步服务将数据同步至目标数据库。源数据库包括一个或多个数据表。数据校验的装置用于校验目标数据库中与源数据库不一致的数据。此处“不一致”指数据从源数据库同步至目标数据库后发生变化。例如,源数据库中数据a,同步至目标数据库后,数据a由于传输错误等其他原因,变化为数据b,数据b即为目标数据库中与源数据库不一致的数据。
38.图2示例性的提供了本技术的计算设备的一种可能的架构图。计算设备可以包括
处理器201、存储器202、通信接口203和总线204。在计算设备中,处理器201的数量可以是一个或多个,图2仅示意了其中一个处理器201。可选的,处理器201可以是中央处理器(central processing unit,cpu)。若计算设备具有多个处理器201,多个处理器201的类型可以不同,或者可以相同。可选的,计算设备的多个处理器还可以集成为多核处理器。
39.存储器202存储计算机指令和数据,存储器202可以存储实现本技术提供的数据校验的方法所需的计算机指令和数据。存储器202可以是以下存储介质的任一种或任一种组合:非易失性存储器(如只读存储器(read-only memory,rom)、固态硬盘(solid state disk,ssd)、硬盘(hard disk drive,hdd)、光盘等)、易失性存储器。
40.通信接口203可以是以下器件的任一种或任一种组合:网络接口(如以太网接口)、无线网卡等具有网络接入功能的器件。
41.通信接口203用于计算设备与其他计算设备或者终端进行数据通信。
42.图2用一条粗线表示总线204。总线204可以将处理器201与存储器202、通信接口203连接。这样,通过总线204,处理器201可以访问存储器202,还可以利用通信接口203与其它节点或者终端进行数据交互。
43.在本技术中,计算设备执行存储器202中的计算机指令,使得计算设备实现本技术提供的数据校验的方法。
44.下面将结合图3对本技术实施例提供的数据校验的方法进行说明,该方法可以由数据校验的装置执行。如图3所示,该方法的处理流程如下:
45.步骤301,数据校验的装置接收校验通知,校验通知包括源数据库的标识和目标数据库的标识。
46.在本实施例中,用户想要对源数据库和目标数据库进行校验,用户可以通过sql语句将校验通知,发送给数据校验的装置,或者用户可以通过数据校验的装置为用户提供的界面,将校验通知,提交给数据校验的装置。这样,数据校验的装置可以接收到校验通知,校验通知包括源数据库的标识和目标数据库的标识。数据校验的装置可以从校验通知中,解析到源数据库的标识和目标数据库的标识。
47.步骤302,数据校验的装置获取源数据库在校验时间段的第一增量数据和目标数据库在校验时间段的第二增量数据,校验时间段为本次校验时间点至上次校验时间点组成的时间段。
48.在本实施例中,校验时间段为本次校验时间点至上次校验时间点组成的时间段。例如,上次校验时间点为8:30,本次校验时间点为12:30,则校验时间段为8:30至12:30。数据校验的装置可以使用源数据库的标识,获取源数据库在校验时间段的第一增量数据,并且使用目标数据库的标识,获取目标数据库在校验时间段的第二增量数据。
49.步骤303,数据校验的装置根据第一增量数据和第二增量数据,确定目标数据库中与源数据库不一致的数据。
50.在本实施例中,数据校验的装置在获取到第一增量数据和第二增量数据后,可以通过比对第一增量数据和第二增量数据,确定出目标数据库中与源数据库不一致的数据。
51.在一种可能的实现方式中,在步骤303之后,数据校验的装置在确定出不一致的数据之后,还会对目标数据库中不一致的数据进行修正,处理可以为:
52.数据校验的装置将目标数据库中不一致的数据修改为与源数据库中的数据一致。
53.在本实施例中,数据校验的装置可以在源数据库中,找到目标数据库中不一致的数据对应的数据。然后数据校验的装置可以将该不一致的数据修改为其在源数据库中对应的数据。这样,可以使得源数据库和目标数据库的数据保持一致。
54.在一种可能的实现方式中,在数据校验的装置获取到不一致的数据后,为了保证校验的准确性,可以进行如下处理:
55.数据校验的装置将不一致的数据添加至候选队列;在将不一致的数据添加至候选队列后的目标时长时,重新对候选队列的不一致的数据进行一致性校验。
56.其中,目标时长是基于多个数据同步时长,确定出的数据同步时长的经验值,目标时长可以存储在数据校验的装置中。
57.在本实施例中,数据校验的装置中建立有不一致的数据的候选队列,在步骤303中确定出不一致的数据后,可以将不一致的数据添加至该候选队列。数据校验的装置可以在将不一致的数据添加至候选队列时开始计时,等到目标时长时,数据校验的装置重新对不一致的数据进行一致性校验,即重新执行步骤302至步骤303的处理,确定不一致的数据是否确实是不一致的数据。这样,可以提高确定出不一致的数据的准确性。这是由于有可能存在目标数据库的数据还未同步完成就进行校验的情况,导致出现不一致的数据,所以在等待目标时长后目标数据库的数据同步完成,再进行校验,校验结果比较准确。
58.在一种可能的实现方式中,步骤302可以按照如下方式实现:
59.数据校验的装置根据校验时间段的增量数据的信息,生成目标事务的执行指令,目标事务的执行指令用于指示源数据库根据增量数据的信息确定出第一增量数据,并将目标事务同步至目标数据库执行,使得目标数据库根据增量数据的信息确定出第二增量数据,向源数据库发送目标事务的执行指令;从源数据库获取第一增量数据,从目标数据库获取第二增量数据。
60.在本实施例中,数据校验的装置可以从源数据库中,获取本次校验时间点至上次校验时间点之间的事务日志,即获取到校验时间段的事务日志。然后数据校验的装置在该事务日志中,确定源数据库在校验时间段的增量数据的信息。数据校验的装置可以在使用增量数据的信息,生成目标事务的执行指令,该目标事务的执行指令可以是sql语句的形式或其他形式。数据校验的装置可以将目标事务的执行指令发送给源数据库,源数据库接收到目标事务的执行指令后,可以执行目标事务,即使用增量数据的信息,在源数据库中,确定出第一增量数据。源数据库将第一增量数据发送给数据校验的装置。
61.源数据库执行完目标事务后,可以通过数据同步服务,将目标事务同步给目标数据库,目标数据库可以执行目标事务,即使用增量数据信息,确定出第二增量数据。目标数据库将第二增量数据发送给数据校验的装置。
62.数据校验的装置可以接收源数据库提供的第一增量数据,并且接收目标数据库提供的第二增量数据,从而获取到第一增量数据和第二增量数据。
63.在一种可能实现方式中,步骤302可以按照如下方式实现:
64.数据校验的装置可以向源数据库发送获取校验时间段的增量数据的请求。源数据库收到该请求后,可以生成获取该校验时间段的增量数据的目标事务,然后执行目标事务,获取到第一增量数据,发送给数据校验的装置。源数据库可以将目标事务,通过数据同步服务,同步给目标数据库,目标数据库执行目标事务,获取到第二增量数据,发送给数据校验
的装置。
65.在一种可能的实现方式中,增量数据的信息可以包括增量数据的主键和增量数据所属的数据表。这样,源数据库在执行目标事务时,可以使用增量数据的主键,在增量数据所属的数据表,确定该主键对应的数据行,将该数据行中有更新的数据,确定为第一增量数据,同样,目标数据库在执行目标事务时,可以使用增量数据的主键,在增量数据所属的数据表,确定该主键对应的数据行,将该数据行中有更新的数据,确定为第二增量数据。另外,在某些情况下,源数据库还向数据校验的装置提供第一增量数据所在的数据行中未修改的数据,同样,目标数据库还向数据校验的装置提供第而增量数据所在的数据行中未修改的数据(后文中有描述)。
66.在一种可能的实现方式中,源数据库可以将第一增量数据插入校验表中,目标数据库将第二增量数据插入校验表中。源数据库可以通过校验表,将第一增量数据提供给数据校验的装置,目标数据库可以通过校验表,将第二增量数据提供给数据校验的装置。源数据库的校验表和目标数据库的校验表有相同的指示标识,用于指示可以进行一致性校验。
67.另外,如果源数据库获取的是增量数据所在的数据行的所有数据,则可以将该数据行的所有数据插入校验表,提供给数据校验的装置。如果目标数据库获取的是增量数据所在的数据行的所有数据,则可以将该数据行的所有数据插入校验表,提供给数据校验的装置。
68.在一种可能的实现方式中,步骤304中,进行一致性校验的过程可以为:
69.数据校验的装置获取第一增量数据所在的数据行中未修改的数据和第二增量数据所在的数据行中未修改的数据,根据第一增量数据、第一增量数据所在的数据行中未修改的数据、第二增量数据和第二增量数据所在的数据行中未修改的数据,确定目标数据库中与源数据库不一致的数据。
70.在本实施例中,在源数据库在向数据校验的装置提供第一增量数据时,还提供了第一增量数据所在的数据行中未修改的数据,这样,数据校验的装置还可以获取到第一增量数据所在的数据行中未修改的数据。在源数据库在向数据校验的装置提供第二增量数据时,还提供了第二增量数据所在的数据行中未修改的数据,这样,数据校验的装置还可以获取到第二增量数据所在的数据行中未修改的数据。
71.数据校验的装置可以使用第一增量数据、第一增量数据所在的数据行中未修改的数据、第二增量数据和第二增量数据所在的数据行中未修改的数据,确定目标数据库中与源数据库不一致的数据。
72.在一种可能的实现方式中,为了加快确定不一致的数据的速度,可以采用如下方式:
73.数据校验的装置根据第一增量数据、第一增量数据所在的数据行中未修改的数据,对第一增量数据所属的数据表的默克尔树进行更新,获得第一默克尔树;根据第二增量数据、第二增量数据所在的数据行中未修改的数据,对第二增量数据所属的数据表的默克尔树进行更新,获得第二默克尔树;对第一默克尔树和第二默克尔树进行比对,确定目标数据库中与源数据库不一致的数据。
74.在本技术实施例中,假设第一增量数据属于一个数据表,那么第二增量数据也属于一个数据表,如图4所示,数据校验的装置可以将第一增量数据所在的每一数据行的增量
数据和未修改的数据转换为字符串(即将该数据行中每一列的数据转换为字符串),然后将每一数据行的增量数据和未修改的数据的字符串分别进行拼接,然后对每一数据行拼接的字符串进行哈希计算,获得每一数据行对应的哈希值。每一数据行对应的哈希值即为第一增量数据所属的数据表的默克尔树的一个叶子节点的哈希值,然后数据校验的装置可以将每一数据行对应的哈希值,对该数据表的默克尔树的叶子接点的哈希值进行替换,计算该默克尔树的非叶子节点的哈希值,获得第一默克尔树。同样,数据校验的装置可以将第二增量数据和第二增量数据所在的数据行中未修改的数据,将第二增量数据所在的每一数据行的增量数据和未修改的数据转换为字符串(即将该数据行中每一列的数据转换为字符串),然后将每一数据行的增量数据和未修改的数据的字符串分别进行拼接,然后对每一数据行拼接的字符串进行哈希计算,获得每一数据行对应的哈希值。每一数据行对应的哈希值即为第二增量数据所属的数据表的默克尔树的一个叶子节点的哈希值,然后数据校验的装置可以将每一数据行对应的哈希值,对该数据表的默克尔树的叶子接点的哈希值进行替换,计算该默克尔树的非叶子节点的哈希值,获得第二默克尔树。
75.然后数据校验的装置可以比较第一默克尔树的树根节点与第二默克尔树的树根节点的哈希值,若哈希值相同,则确定目标数据库中与源数据库不存在一致性数据。若哈希值不相同,则在第一默克尔树和第二默克尔树中,从树的顶端依次向下比较,确定出哈希值不相同的叶子节点,进而可以确定该叶子节点对应的数据即为目标数据库中与源数据库不一致的数据。这样,由于采用了默克尔树,在树根节点的哈希值一致的情况下,不需要继续比对,所以可以加快确定不一致的数据的速度。
76.此处需要说明的是,上述是假设第一增量数据属于一个数据表,当然第一增量数据也可以属于多个数据表,这时需要更新第一增量数据所属的各数据表的默克尔树,并且需要更新第二增量数据所属的各数据表的默克尔树,然后再进行分别比对。
77.例如,如图5所示,源数据库包括k张数据表,每张数据表对应一个默克尔树,每张数据表都是将单行的数据对应一个叶子节点,图5示出了数据表一的默克尔树。
78.在一种可能的实现方式中,数据校验的装置为了更快速的比较不一致的数据,还可以采用如下处理:
79.数据校验的装置在建立源数据库和目标数据库时,建立源数据库的每个数据表的默克尔树和目标数据库的每个数据表的默克尔树;基于源数据库的数据更新,维护源数据库的每个数据表的默尔树和目标数据库的每个数据表的默克尔树。
80.在本实施例中,数据校验的装置在建立源数据库和目标数据库时,可以建立源数据库的每个数据表的默克尔树,并且建立目标数据库的每个数据表的默克尔树,每个数据表的默克尔树的一个叶子节点对应一个数据行的数据。在源数据库的数据有更新时,数据校验的装置可以获取源数据库的事务日志,然后重演事务日志,动态的对源数据库的每个数据表的默克尔树进行更新,并且对目标数据库的每个数据表的默克尔树进行更新。这样,在使用默克尔树确定不一致的数据时,由于已经动态的维护有默克尔树,所以只需要基于增量数据所在的数据行的数据,更新默克尔树即可,而不需要建立默克尔树,所以可以加快校验的速度。如图6所示,建立源数据库和目标数据库时,可以建立源数据库的每个数据表的默克尔树,在数据校验时,可以更新默克尔树,然后比较源数据库各数据表的默克尔树和目标数据库的各数据表的默尔克树,获得目标数据库中与源数据库不一致的数据。
81.需要说明的是,本技术实施例中,由于是由数据校验的装置执行数据校验,数据校验独立于数据库,所以不依赖于数据本身,在所有数据库的数据校验中可以通用。而且在数据库中数据表的更新频率高于数据同步速度时,提供对异构数据库同步的增量数据进行一致性校验,而不会一直处于校验状态。而且由于是对异构数据库同步的增量数据进行一致性校验,所以可以不用锁定数据库,可以在不降低数据库处理数据的性能的情况下,实现数据校验。
82.另外,为了更好的理解本技术实施例,如图7所示,还提供了数据校验的信令流程图:
83.步骤701,数据校验的装置接收校验通知;
84.步骤702,数据校验的装置从源数据库的事务日志中,获取增量数据的主键和所属的数据表;
85.步骤703,数据校验的装置基于增量数据的主键和所属的数据表,生成目标事务的执行指令;
86.步骤704,数据校验的装置将目标事务的执行指令发送给源数据库;
87.步骤705,源数据库执行目标事务,获得第一增量数据,将第一增量数据发送给数据校验的装置;
88.步骤706,源数据库将目标事务通过数据同步服务,同步给目标数据库;
89.步骤707,目标数据库执行目标事务,获得第二增量数据,将第二增量数据发送给数据校验的装置;
90.步骤708,数据校验的装置基于第一增量数据和第二增量数据进行一致性校验处理,确定出目标数据库中与源数据库不一致的数据。
91.例如,如图8所示,源数据库包括的数据表为订单表,2019/11/6的11:59,订单表中主键为2,数量更新为11。在2019/11/6的12:01源数据库将订单表中,主键为2,数量更新为12。源数据库提交数量更新为12的事务日志。在2019/11/6的12:03源数据库将订单表中,主键为2,数量更新为13。源数据库提交数量更新为13的事务日志。每次源数据库提交事务日志后,会将事务同步给目标数据库,目标数据库执行事务,进行相同的更新操作。
92.数据校验的装置在2019/11/6的12:00获取源数据库的事务日志,确定订单表中,主键为2对应的数量有更新。数据校验的装置可以生成目标事务,目标事务用于查询主键为2的增量数据行,获得增量数据行的数据提交给数据校验的装置。数据校验的装置将目标事务的执行指令,发送给源数据库。源数据库执行目标事务,并将目标事务同步给目标数据库。目标数据库执行目标事务,获得增量数据行的数据提交给数据校验的装置。数据校验的装置对源数据库提交的增量数据和目标数据库提交的增量数据进行一致性校验。
93.图9是本技术实施例提供的数据校验的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本技术实施例提供的装置可以实现本技术实施例图3所述的流程,该装置包括:接收模块910、获取模块920和确定模块930,其中:
94.接收模块910,接收校验通知,所述校验通知包括源数据库的标识和目标数据库的标识,具体可以用于实现步骤301中的接收功能以及执行步骤301包含的隐含步骤;
95.获取模块920,用于获取所述源数据库在校验时间段的第一增量数据和所述目标数据库在所述校验时间段的第二增量数据,所述校验时间段为本次校验时间点至上次校验
时间点组成的时间段,具体可以用于实现步骤302中的获取功能以及执行步骤302包含的隐含步骤;
96.确定模块930,用于根据所述第一增量数据和所述第二增量数据,确定所述目标数据库中与所述源数据库不一致的数据,具体可以用于实现步骤303中的确定功能以及执行步骤303包含的隐含步骤。
97.在一种可能的实现方式中,所述获取模块920,用于:
98.根据所述校验时间段的增量数据的信息,生成目标事务的执行指令,所述目标事务的执行指令用于指示所述源数据库根据所述增量数据的信息确定出第一增量数据,并将所述目标事务同步至所述目标数据库执行,使得所述目标数据库根据所述增量数据的信息确定出第二增量数据;
99.向所述源数据库发送所述目标事务的执行指令;
100.从所述源数据库获取所述第一增量数据,从所述目标数据库获取所述第二增量数据。
101.在一种可能的实现方式中,所述增量数据的信息包括所述增量数据的主键和所属的数据表。
102.在一种可能的实现方式中,所述确定模块930,用于:
103.获取所述第一增量数据所在的数据行中未修改的数据和所述第二增量数据所在的数据行中未修改的数据;
104.根据所述第一增量数据、所述第一增量数据所在的数据行中未修改的数据、所述第二增量数据和所述第二增量数据所在的数据行中未修改的数据,确定所述目标数据库中与所述源数据库不一致的数据。
105.在一种可能的实现方式中,所述确定模块930,用于:
106.根据所述第一增量数据、所述第一增量数据所在的数据行中未修改的数据,对所述第一增量数据所属的数据表的默克尔树进行更新,获得第一默克尔树;
107.根据所述第二增量数据、所述第二增量数据所在的数据行中未修改的数据,对所述第二增量数据所属的数据表的默克尔树进行更新,获得第二默克尔树;
108.对所述第一默克尔树和所述第二默克尔树进行比对,确定所述目标数据库中与所述源数据库不一致的数据。
109.在一种可能的实现方式中,所述确定模块930,还用于:
110.将所述不一致的数据添加至候选队列;
111.在将所述不一致的数据添加至所述候选队列后的目标时长时,重新对所述候选队列的所述不一致的数据进行一致性校验。
112.在一种可能的实现方式中,所述确定模块930,还用于:
113.将所述目标数据库中所述不一致的数据修改为与所述源数据库中的数据一致。
114.本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
115.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实
现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital video disk,dvd)等),或者半导体介质(如固态硬盘等)。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献