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

一种数据一致性比对方法和装置与流程

2022-12-13 21:29:27 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,特别是涉及一种数据一致性比对方法和装置。


背景技术:

2.随着信息化建设的高速发展,业务越来越复杂,各个业务之间的耦合性也越来越强。常常会出现不同的业务需要访问同一份数据,在这种情况下,被各个业务访问的数据也就成了热点数据,数据访问的竞争会使得一些业务处于等待状态,导致业务性能的下降。为解决这个问题,通常的处理方法是将这份数据做成多个副本,每个业务访问不同的数据副本,并定期对数据副本进行数据同步,以确保各业务之间所使用数据的一致性。通常,在对大批量的数据进行数据同步时,由于直接进行数据同步通常需耗费大量的资源,故先对数据进行数据一致性判断,并只针对不一致的数据进行数据同步,在这种情况下,各个副本的数据一致性显得尤为重要。
3.数据比对是数据一致性检查的一项重要手段。现有技术中所采用的技术手段是,使用副本中的数据直接比对,如对副本a,副本b进行数据比对通常分为三个步骤:1.获取副本a中的数据,以行为单位,计算行数据的md5值;2.获取副本b的数据,以行为单位,计算数据的md5值;3.比较副本a与副本b中,md5的差异,如md5存在差异,则副本a及副本b中存在数据不一致。
4.上述数据比对方法,当表数据数据量大,且需要重复比较时,存在较多的无效比对。例如,当系统中,需要每天定时对副本a,副本b进行比对时,每次都是全量比对,如果副本中的数据量较大,则耗时较长。同时,在进行数据的大批量存储管理时,各业务并非需对每一条数据进行更改,更多情况下,随着时间的累积,会形成大量静态数据,这部分数据被修改的可能性非常小,可能占到总数据量的50%或更多。如在随时间累积的数据存储中,在经过一定的时间周期后,通常不会再对历史数据进行更改,如针对几月前或几年前的数据不再更改,在此情况下,在进行全量数据比对时,很大一部分时间是耗费在历史数据的比对中,其不仅降低了数据一致性比对的效率,还占用了大量资源。
5.鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。


技术实现要素:

6.本发明要解决的技术问题是现有的数据一致性比对方法耗费大量资源在不进行修改的历史数据比对上,占用资源大,效率低。
7.第一方面,本发明提供了一种数据一致性比对方法,包括:
8.将第一数据副本与对应的第一历史数据副本进行比对,得到第一修改记录集;
9.将第二数据副本与对应的第二历史数据副本进行比对,得到第二修改记录集;
10.根据历史比对结果、第一修改记录集和第二修改记录集,得到第一数据副本与第二数据副本之间的数据比对结果;
11.其中,以上一次进行比对时所使用的数据副本作为下一次比对时的历史数据副
本,以上一次进行比对得到的数据比对结果作为下一次比对时的历史比对结果,在第一次进行比对时,将第一数据副本与第二数据副本进行比对,得到数据比对结果。
12.优选的,所述将第一数据副本与第二数据副本进行比对,得到数据比对结果,得到数据比对结果,具体包括:
13.将第一数据副本中的第一分组与第二数据副本中的第二分组进行比对;
14.若比对得到第一分组与第二分组不一致,则将第一分组中的第一数据与第二分组中的第二数据进行逐一比对,确定相互之间不一致的第一数据和第二数据;其中,将数据副本中的数据划分为多个分组,每个分组包含多条数据,在进行分组划分时,根据各数据副本之间的数据对应关系,使不同数据副本划分得到的分组之间相互对应;
15.根据相互之间不一致的第一数据和第二数据,生成对应的比对差异记录,将所述比对差异记录存储在所述数据比对结果中。
16.优选的,所述将第一数据副本中的第一分组与第二数据副本中的第二分组进行比对,具体包括:
17.比对第一分组的组校验码与第二分组的组校验码是否一致;其中,在为相应分组中的每条数据生成数据校验码的基础上,根据分组中所有数据的数据校验码生成所述分组的组校验码。
18.优选的,所述将第一数据副本与对应的第一历史数据副本进行比对,得到第一修改记录集,具体包括:
19.将第一数据副本中的第三分组与第一历史数据副本中的第四分组进行比对;
20.若比对得到第三分组与第四分组不一致,则将第三分组中的第三数据与第四分组中的第四数据进行逐一比对,若比对得到第三数据与第四数据不一致,则根据所述第三数据和所述第四数据生成对应的修改记录,存储在所述第一修改记录集中。
21.优选的,所述根据所述第三数据和所述第四数据生成对应的修改记录,具体包括:
22.以所述第四数据作为修改前数据,以所述第三数据作为修改后数据,将所述修改前数据的数据校验码和修改后数据的数据校验码作为一条修改记录。
23.优选的,所述将第一数据副本中的第三分组与第一历史数据副本中的第四分组进行比对,具体包括:
24.比对所述第三分组的组校验码与所述第四分组的组校验码是否一致;其中,延用第一次进行比对时为第一数据副本划分的第三分组,并将上一次进行比对时所生成的第三分组的组校验码作为下一次进行对比时历史数据副本中第四分组的组校验码使用。
25.优选的,所述根据历史比对结果、第一修改记录集和第二修改记录集,得到第一数据副本与第二数据副本之间的数据比对结果,具体包括:
26.对第一修改记录集和第二修改记录集进行去重处理,以去除第一修改记录集和第二修改记录集中相同的修改记录;
27.将去重处理后的第一修改记录集和第二修改记录集中的修改记录作为目标修改记录,将目标修改记录与历史比对结果进行比对,判断所述历史比对结果中是否存在与目标修改记录匹配的比对差异记录;
28.若存在,则将所述比对差异记录从所述历史比对结果中删除;若不存在,则根据所述目标修改记录,生成对应的比对差异记录,将所述比对差异记录添加至所述历史比对结
果中,以最终得到的历史比对结果作为第一数据副本与第二数据副本之间的数据比对结果。
29.优选的,所述判断所述历史比对结果中是否存在与目标修改记录匹配的比对差异记录,具体包括:
30.当所述目标修改记录属于第一修改记录集时,判断比对差异记录中的第一数据与所述目标修改记录的修改前数据是否一致,且比对差异记录中的第二数据与所述目标修改记录的修改后数据是否一致,若两者均一致,则所述历史比对结果中存在与目标修改记录匹配的比对差异记录;
31.当所述目标修改记录属于第二修改记录集时,判断比对差异记录中的第二数据与所述目标修改记录的修改前数据是否一致,且比对差异记录中的第一数据与所述目标修改记录的修改后数据是否一致,若两者均一致,则所述历史比对结果中存在与目标修改记录匹配的比对差异记录。
32.优选的,所述则根据所述目标修改记录,生成对应的比对差异记录,具体包括:
33.当所述目标修改记录属于第一修改记录集时,以所述目标修改记录的修改后数据作为第一数据,查找对应的第二数据,生成比对差异记录;
34.当所述目标修改记录属于第二修改记录集时,以所述目标修改记录的修改后数据作为第二数据,查找对应的第一数据,生成比对差异记录。
35.第二方面,本发明还提供了一种数据一致性比对装置,用于实现第一方面所述的数据一致性比对方法,所述装置包括:
36.至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的数据一致性比对方法。
37.第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的数据一致性比对方法。
38.本发明通过将数据副本与自身的历史数据副本进行比对,得到修改记录,再通过与历史比对结果的结合,得到最终的比对结果,使在存在大量无修改数据的情况下,在将数据副本与自身的历史数据副本进行比对时能够将其直接过滤,使其在后续的比对过程中不占用资源,从而降低数据一致性比对的资源占用,提高比对效率。
附图说明
39.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1是本发明实施例提供的一种数据一致性比对方法的流程示意图;
41.图2是本发明实施例提供的一种数据一致性比对方法的流程示意图;
42.图3是本发明实施例提供的一种数据一致性比对方法的流程示意图;
43.图4是本发明实施例提供的一种数据一致性比对方法的流程示意图;
44.图5是本发明实施例提供的一种数据一致性比对方法的应用场景示意图;
45.图6是本发明实施例提供的一种数据一致性比对方法的流程示意图;
46.图7是本发明实施例提供的一种数据一致性比对方法的流程示意图;
47.图8是本发明实施例提供的一种数据一致性比对方法的示意图;
48.图9是本发明实施例提供的一种数据一致性比对方法的示意图;
49.图10是本发明实施例提供的一种数据一致性比对方法的示意图;
50.图11是本发明实施例提供的一种数据一致性比对方法的示意图;
51.图12是本发明实施例提供的一种数据一致性比对方法的示意图;
52.图13是本发明实施例提供的一种数据一致性比对方法的示意图;
53.图14是本发明实施例提供的一种数据一致性比对方法的流程示意图;
54.图15是本发明实施例提供的一种数据一致性比对方法的示意图;
55.图16是本发明实施例提供的一种数据一致性比对方法的示意图;
56.图17是本发明实施例提供的一种数据一致性比对方法的示意图;
57.图18是本发明实施例提供的一种数据一致性比对装置的架构示意图。
具体实施方式
58.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
59.为使本发明的应用场景和技术优点更为清楚明白,下面将对本发明的应用场景进行详尽说明,本发明适用于存在大量无需修改的历史数据的数据一致性比对场景,在此场景下,本发明能够展现出与现有技术迥异的性能优势。对于其他场景,本发明虽同样能够适用,但仅当采用本发明的优选的实现方式时才能够展现其性能优势。下面将举例的形式具体说明本发明所适用的几个场景。
60.本发明所适用的场景一为多系统使用同一套数据的情况,由于数据库的性能限制,当其数据量大,多系统对数据的修改频度高时,若多系统直接使用数据库,可能导致系统性能下降,故通常会通过对数据库衍生出多个数据副本,一个副本供一个系统使用,并定期对数据副本进行同步,在此情况下,随时间累积,通常会产生无需修改的历史数据,在此场景下,使用本发明能够极大提升其数据比对同步效率,并降低其资源占用。
61.本发明所适用的另一种应用场景为数据备份场景,如为了防止相应数据库停止工作时,对系统造成影响,故通过设置一个或多个备用数据库的方式,在主数据库和被数据库之间进行数据同步,同样的,在随时间累积产生无需修改的历史数据的场景下,本发明能够较大发挥其优势。
62.此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
63.实施例1:
64.本发明实施例1提供了一种数据一致性比对方法,如图1所示,包括:
65.在步骤201中,将第一数据副本与对应的第一历史数据副本进行比对,得到第一修改记录集。
66.在步骤202中,将第二数据副本与对应的第二历史数据副本进行比对,得到第二修改记录集。
67.在步骤203中,根据历史比对结果、第一修改记录集和第二修改记录集,得到第一数据副本与第二数据副本之间的数据比对结果。
68.其中,以上一次进行比对时所使用的数据副本作为下一次比对时的历史数据副本,以上一次进行比对得到的数据比对结果作为下一次比对时的历史比对结果,在第一次进行比对时,将第一数据副本与第二数据副本进行比对,得到数据比对结果。
69.所述第一数据副本、第二数据副本可以是由同一源数据文件得到的,可能包含源数据文件中的部分或完整数据,或所述第二数据副本是由第一数据副本得到的,所述第二数据副本包含第一数据副本中的完整或部分数据。且在后续运行过程中,第一数据副本和第二数据副本可能被不同的业务访问修改,导致对第一数据副本和第二数据副本的更改不同步,即第一数据副本中的数据的值与第二数据副本中的数据的值不一致,故通过本实施例所述的数据一致性比对方法进行判断,再进行第一数据副本和第二数据副本的数据同步。
70.其中所述比对可以是对第一数据副本和第二数据副本中的数据直接进行比对,也可以是通过校验码的方式进行比对。
71.所述第一修改记录集是下一次比对距离上一次比对期间,所述第一数据副本所产生的数据修改记录的集合,所述第一历史数据副本即为在上一次比对时的第一数据副本。所述第二修改记录集是下一次比对距离上一次比对期间,所述第二数据副本所产生的数据修改记录的集合,所述第二历史数据副本即为在上一次比对时的第一数据副本。
72.在此需要说明的是,本实施例所述的“上一次比对”和“下一次比对”相对两次相邻的比对过程而言的,例如,截止某个时间为止已经进行了三次比对,在此为描述方便,将这三次比对按照时间顺序称为:第一次比对、第二次比对和第三次比对,则第一次比对为第二次比对的“上一次比对”,第二次比对为第一次比对的“下一次比对”,第二次比对为第三次比对的“上一次比对”,第三次比对为第二次比对的“下一次比对”。
73.本实施例通过将数据副本与自身的历史数据副本进行比对,得到修改记录,再通过与历史比对结果的结合,得到最终的比对结果,使在存在大量无修改数据的情况下,在将数据副本与自身的历史数据副本进行比对时能够将其直接过滤,使其在后续的比对过程中不占用资源,从而降低数据一致性比对的资源占用,提高比对效率。
74.在实际使用情况中,所述第一数据副本和所述第二数据副本可能并不完全相同,需要首先确认所述第一数据副本和所述第二数据副本之间的数据差异,然后以该数据差异作为基准,在结合第一修改记录集和第二修改记录集,可以不断迭代更新所述第一数据副本和所述第二数据副本之间的差异,下面首先介绍对第一数据副本与第二数据副本进行第一次比对的过程。
75.由于所述第一数据副本和第二数据副本的数据量可能十分庞大,为了进一步提高数据一致性比对的效率,结合上述实施例,存在以下优选的实施例,即所述将第一数据副本与第二数据副本进行比对,得到数据比对结果,如图2所示,具体包括:
76.在步骤301中,将第一数据副本中的第一分组与第二数据副本中的第二分组进行比对。
77.在步骤302中,若比对得到第一分组与第二分组不一致,则将第一分组中的第一数据与第二分组中的第二数据进行逐一比对,确定相互之间不一致的第一数据和第二数据;其中,将数据副本中的数据划分为多个分组,每个分组包含多条数据,在进行分组划分时,根据各数据副本之间的数据对应关系,使不同数据副本划分得到的分组之间相互对应。
78.在步骤303中,根据相互之间不一致的第一数据和第二数据,生成对应的比对差异记录,将所述比对差异记录存储在所述数据比对结果中。
79.在本实施例中,采用相同的分组方式分别对第一数据副本和第二数据副本进行分组,具体地,对第一数据副本进行分组得到至少一个第一分组,其中,每个第一分组包含多条第一数据,对第二数据副本进行分组得到至少一个第二分组,每个第二分组包含多条第二数据,然后在对第一分组以及与其相对应的第二分组进行比对,如果第一分组与第二分组不一致,则在对第一分组中的第一数据和第二分组中的第二数据进行比对。
80.其中,所述将第一数据副本中的第一分组与第二数据副本中的第二分组进行比对是分组之间的整体比对,仅能够确定第一分组与第二分组是否存在差异,无法特定具体的差异数据,所述进行逐一比对是对分组中的数据进行比对,能够确定差异数据。
81.其中,所划分的分组的数量,每个分组中包含的数据条数是由本领域技术人员根据第一数据副本和第二数据副本的数据量大小、数据一致性比对的效率需求共同分析得到的。
82.所述数据对应关系是指需进行同步的,值需保持一致的多个数据之间的对应关系。所述分组之间相互对应是指第一分组中的第一数据与第二分组中的第二数据存在数据对应关系。
83.在此需要说明的是,前述的第一分组并不指代某一具体的分组,主要指对第一数据副本进行分组操作后形成的各个组,第一数据副本被分成了几个组,第一数据副本就包含几个第一分组;前述的第二分组并不指代某一具体的分组,主要指对第二数据副本进行分组操作后形成的各个组,第二数据副本被分成了几个组,第二数据副本就包含几个第二分组。
84.前述的第一数据并不指代某一条具体的数据,主要是指来源于第一数据副本的数据,第二数据并不指代某一条具体的数据,主要是指来源于第二数据副本的数据。
85.在上述优选实施例的基础上,本实施例还提供了一种分组比对的具体方式,即所述将第一数据副本中的第一分组与第二数据副本中的第二分组进行比对,具体包括:
86.比对第一分组的组校验码与第二分组的组校验码是否一致;其中,在为相应分组中的每条数据生成数据校验码的基础上,根据分组中所有数据的数据校验码生成所述分组的组校验码。
87.其中,所述根据分组中所有数据的数据校验码生成所述分组的组校验码具体为:将分组中数据的数据校验码按照顺序排列为字符串,根据所述字符串生成组校验码,即在对数据本身执行相应校验码生成算法生成数据校验码的基础上,再对数据校验码执行相应校验码生成算法生成组校验码。
88.所述数据校验码或组校验码是通过和校验、异或校验、crc校验、md4、md5、sha-1、sha-256、sha-384和sha-512算法中的一种或多种生成的。
89.上述优选实施例通过对第一次比对过程进行优化,以提高初次比对时的效率,在
此基础上,本实施例还对后续的比对过程进行优化,以进一步提高比对的效率,即所述将第一数据副本与对应的第一历史数据副本进行比对,得到第一修改记录集,如图3所示,具体包括:
90.在步骤401中,将第一数据副本中的第三分组与第一历史数据副本中的第四分组进行比对。
91.在此说明的是,所述的第三分组与前述的第一分组的含义相同,只是此处的比较对象相较于步骤301中有所区别,为了便于理解方案,此处重新定义了第三分组。
92.前述的第四分组并不指代某一具体的分组,主要指对第一历史数据副本进行分组操作后形成的各个组,第一历史数据副本被分成了几个组,第一历史数据副本就包含几个第四分组。
93.在步骤402中,若比对得到第三分组与第四分组不一致,则将第三分组中的第三数据与第四分组中的第四数据进行逐一比对。
94.在步骤403中,若比对得到第三数据与第四数据不一致,则根据所述第三数据和所述第四数据生成对应的修改记录,存储在所述第一修改记录集中。
95.前述的第三数据并不指代某一条具体的数据,主要是指来源于第一数据副本的数据,第四数据并不指代某一条具体的数据,主要是指来源于第一历史数据副本的数据。
96.所述第三数据和第四数据为同一数据在不同时间的数据表现,其中,第三数据为在下一次比对时的数据值,第四数据为在上一次比对时的数据值,在此期间,可能由于业务的调用使数据值发生改变,即第三数据与第四数据不一致时,认为数据在此期间被修改。
97.其中,所述根据所述第三数据和所述第四数据生成对应的修改记录,具体包括:
98.以所述第四数据作为修改前数据,以所述第三数据作为修改后数据,将所述修改前数据的数据校验码和修改后数据的数据校验码作为一条修改记录。
99.所述将第一数据副本中的第三分组与第一历史数据副本中的第四分组进行比对,具体包括:
100.比对所述第三分组的组校验码与所述第四分组的组校验码是否一致;其中,延用第一次进行比对时为第一数据副本划分的第三分组,并将上一次进行比对时所生成的第三分组的组校验码作为下一次进行对比时历史数据副本中第四分组的组校验码使用。
101.同时,将上一次进行比对时所生成的第三数据的数据校验码作为下一次进行对比时第四数据的数据校验码使用。
102.还存在一种优选的实现方式,具体包括:若在之前预设次数的数据一致性比对中,每一次均比对得到存在多个第三分组与对应的第四分组一致,将多个第三分组进行分组合并,在后续的数据一致性比对过程中,使用合并后的分组进行比对。所述进行分组合并可以是将多个分组直接合并为一个分组,使用该分组的组校验码进行比对,也可以是根据多个分组的组校验码生成总校验码,根据总校验码进行比对。所述预设次数和合并分组的数量以及具体合并的分组由本领域技术人员根据数据比对的效率需求、数据被修改的可能性大小等多因素分析得到。如当位于相应数据表中的同一页的多个分组在过去连续8次进行数据比对时,均检测到分组未被修改,则将该页的多个分组进行合并,使用组校验码生成页校验码,使用页校验码进行页的比对,页比对存在修改时,下沉至组比对,最终下沉至数据比对,确定被修改的数据。
103.在可选的实施例中,可以按照下述方式对数据副本进行分组:
104.以表为单位进行数据比对时,设置数据分割的大小n,获取数据副本中表t的数据页信息p,其中,数据页信息p包括表id(tid)、数据页id(pid)和文件id(fid);然后以n为单位,对表t进行分割,以每n个数据页作为一个分组,分组内包含n个数据页中的所有数据,从而得到多个分组。每个分组的组校验码由分组中的所有数据的数据校验码为基础,再计算校验码得到。
105.当第一数据副本与第二数据副本的数据完全按照顺序一一对应时,即第一数据副本中的第k条数据与第二数据副本中的第k条数据存在数据对应关系时,对所述第一数据副本和所述第二数据副本可使用相同的n值进行分组划分,当第一数据副本与第二数据副本的数据的数据并不完全一一对应,或对应顺序错位时,在分组时需将数据对应关系纳入考量。
106.在上述实施例的基础上,本实施例还提供了一种得到数据比对结果的优选方法,即所述根据历史比对结果、第一修改记录集和第二修改记录集,得到第一数据副本与第二数据副本之间的数据比对结果,如图4所示,具体包括:
107.在步骤501中,对第一修改记录集和第二修改记录集进行去重处理,以去除第一修改记录集和第二修改记录集中相同的修改记录。
108.在步骤502中,将去重处理后的第一修改记录集和第二修改记录集中的修改记录作为目标修改记录,将目标修改记录与历史比对结果进行比对,判断所述历史比对结果中是否存在与目标修改记录匹配的比对差异记录。
109.在本实施例中,可以将去重处理后的第一修改记录集和第二修改记录集整合为目标修改记录集,该目标修改记录集中包含至少一条目标修改记录,该目标修改记录属于第一修改记录集或者属于第二修改记录集,如果该目标修改记录属于第一修改记录集,则说明第一数据副本进行了修改,而第二数据副本未进行相应的修改;如果该目标修改记录属于第二修改记录集,则说明第二数据副本进行了修改,而第一数据副本未进行相应的修改。
110.在步骤503中,若存在,则将所述比对差异记录从历史比对结果中删除;若不存在,则根据所述目标修改记录,生成对应的比对差异记录,将所述比对差异记录添加至所述历史比对结果中,以最终得到的历史比对结果作为第一数据副本与第二数据副本之间的数据比对结果。
111.如果历史比对结果中存在与所述目标修改记录匹配的比对差异记录,则说明第一数据副本和第二数据副本先后进行了相同的修改操作,虽然在前次的比较中,二者存在差异,但在本次的比较中,二者均进行了相同的修改操作,需要将所述比对差异记录从历史比对结果中删除。
112.所述相同的修改记录具体为:所述第一数据副本和第二数据副本对具有数据对应关系的第一数据和第二数据均进行了修改,且所述第一数据修改前的值与第二数据修改前的值一致,所述第一数据修改后的值与第二数据修改前的后一致,此时,第一数据的修改与第二数据的修改是同步的,认为其一致性不存在差异。
113.其中,所述判断所述历史比对结果中是否存在与目标修改记录匹配的比对差异记录,具体包括:
114.当所述目标修改记录属于第一修改记录集时,判断比对差异记录中的第一数据与
所述目标修改记录的修改前数据是否一致,且比对差异记录中的第二数据与所述目标修改记录的修改后数据是否一致,若两者均一致,则所述历史比对结果中存在与目标修改记录匹配的比对差异记录。
115.在此情况下,代表所述第一数据被修改为与第二数据保持同步。其中,仅判断与第一数据、第二数据存在对应关系的比对差异记录是否匹配。
116.当所述目标修改记录属于第二修改记录集时,判断比对差异记录中的第二数据与所述目标修改记录的修改前数据是否一致,且比对差异记录中的第一数据与所述目标修改记录的修改后数据是否一致,若两者均一致,则所述历史比对结果中存在与目标修改记录匹配的比对差异记录。
117.在此情况下,代表所述第二数据被修改为与第一数据保持同步。其中,仅判断与第一数据、第二数据存在对应关系的比对差异记录是否匹配。
118.所述则根据所述目标修改记录,生成对应的比对差异记录,具体包括:
119.当所述目标修改记录属于第一修改记录集时,以所述目标修改记录的修改后数据作为第一数据,查找对应的第二数据,生成比对差异记录。
120.当所述目标修改记录属于第二修改记录集时,以所述目标修改记录的修改后数据作为第二数据,查找对应的第一数据,生成比对差异记录。
121.其中,所述比对差异记录中可直接存储第一数据和第二数据,也可存储第一数据的数据校验码以及第二数据的数据校验码。
122.其中,所述查找对应的第二数据具体包括:
123.在所述历史比对结果中,查找是否存在与所述第一数据对应的历史比对差异记录,若存在,则以第一数据和所述历史比对差异记录中的第二数据生成比对差异记录;若不存在,以所述目标修改记录的修改前数据作为第二数据生成比对差异记录。
124.在不存在历史比对差异时,说明第一数据在修改前与第二数据处于同步状态,二者值一致,故在生成比对差异记录时,直接替代使用,而不另外查找。
125.基于同一构思,所述查找对应的第一数据具体包括:
126.在所述历史比对结果中,查找是否存在与所述第二数据对应的历史比对差异记录,若存在,则以第二数据和所述历史比对差异记录中的第一数据生成比对差异记录;若不存在,以所述目标修改记录的修改前数据作为第二数据生成比对差异记录。
127.本实施例中的“第一”、“第二”和“第三”等没有特殊的限定的含义,之所以用其做描述仅仅是为了方便在一类对象中差异出不同的个体进行表述,不应当将其作为顺序或者其他方面带有特殊限定含义解释。
128.实施例2:
129.本发明基于实施例1所描述的方法基础上,结合具体的应用场景,并借由相关场景下的技术表述来阐述本发明特性场景下的实现过程。
130.如图5所示为本发明的一种应用场景,其中,副本b是副本a中数据的完整复制,在复制结束后,副本a由业务a进行访问修改,副本b由业务b进行访问修改,且两业务互不关联,可能在任意时刻对对应副本中的数据进行修改。其中,副本a可以理解为实施例1的第一数据副本,副本b可以理解为实施例1的第二数据副本。
131.在此场景下,一种数据一致性比对方法如图6所示,具体包括:
132.在步骤601中,在第一次比对时,对副本a和副本b进行比对,得到副本a的md5值存储文件file、副本b的md5值存储文件file以及数据差异报告rep;rep中包含副本a中存在但副本b中不存在的md5(dmd5a),包含副本b中存在但副本a中不存在的md5(dmd5b),当dmd5a与dmd5b均为空时,表明副本a与副本b数据一致,否则表示数据存在差异。分别将dmd5a及dmd5b数据保存到本地磁盘。其中,副本a的md5值存储文件file和副本b的md5值存储文件file可共同理解为实施例1的用于存储数据校验码和组校验码的存储文件,以便于后续比对。
133.在步骤602中,在后续比对时,读取上次比对产生的副本a的file文件和副本b的file文件,将当前副本a、副本b分别与对应的file文件进行比对,获取相应的修改数据(可以理解为第一修改记录集、第二修改记录集),根据修改数据和上次的数据差异报告rep(可以理解为历史比对结果),生成最终的比对差异报告。
134.其中,上述步骤601如图7所示,具体包括:
135.在步骤701中,以表为单位进行数据比对,进行数据比对前,需设置数据分割的大小n,首先获取副本中表t的数据页信息p,p中包括表id(tid),数据页id(pid),文件id(fid);然后以n为单位,对p进行分割,得到数据页分组集合g{g0

gm},其中,g0为集合{p0

pn},g1为集合{pn 1

p2n}。数据页分组集合g中的每个元素均包含唯一的编号,g0表示元素编号为0,g1表示元素标号为1,gm表示元素编号为m,分组集合g中的元素可理解为实施例1中的分组,一个分组包含对应多个数据页中的所有数据,如图8所示。
136.在步骤702中,在数据库中,每一行数据,都存在一个全局唯一的rowid,行的rowid信息能准确定位数据行所在的位置。rowid为18字节长度的字符串,字符串内容包含数据行所在的文件id(fid) 表id(tid) 页id(pid) 页内行id(rid)。使用rowid生成函数fun_rowid根据信息(fid,tid,pid,rid)生成数据记录对应的rowid,如图9所示。
137.在步骤703中,对数据页分组集合g中的每一个元素计算rowid的范围。由于数据库特性,一个数据页中最多存储65535行数据,所以数据页页内id取值范围为[0,65535]。元素gi{pni,pni 1

,p(n 1)i-1}中rowid的范围为[gi第一个数据页第0行数据的rowid,gi 1第一个数据页第0行数据的rowid),如图10所示。
[0138]
在步骤704中,对每个元素gi,生成对应的sql语句。由于每个gi只包含表中的部分数据,所以sql中需要添加过滤条件进行数据筛选。在读取数据的过程中,表的数据可能发送过变化,导致步骤1中获取的数据页信息p发生变化,所以在读取数据时,需要使用开区间的方式,读取表中的所有数据,如图11所示。由此,第一个元素g0[rowidmin0,rowidmax0]生成的sql如下:
[0139]
select*from t where rowid《=rowidmax0;
[0140]
最后一个元素gm[rowidminm,rowidmaxm]生成的sql如下:
[0141]
select*from t where rowid》=rowidminm;
[0142]
其它元素gi[rowidmini,rowidmaxi]生成的sql如下:select*from t where rowid》=rowidmini and rowid《rowidmin(i 1)。
[0143]
在步骤705中,创建数据读取线程,分别对元素gi中包含的数据进行读取,对每一行数据计算md5值,得到行数据md5值集合imd5{imd50,imd51

imd5n}(可理解为实施例1中数据校验码的集合),对gmd5中所有md5值计算md5值,得到元素gi的gmd5(gmd5i)(可理解为
实施例1中的组校验码),将元素gi及gi 1的第一个数据页信息,imd5及gmd5值保存到本地文件filei,最后一个元素的gi 1信息设置为空。文件名中包含gi的元素编号信息,以确保文件的唯一性,如图12所示。
[0144]
在步骤706中,将副本a的filei与副本b的filei文件进行比对,得到数据差异报告rep(可理解为数据比对结果),rep中包含副本a中存在但副本b中不存在的md5(dmd5a)(可理解为第一数据的数据校验码),包含副本b中存在但副本a中不存在的md5(dmd5b)(可理解为第二数据的数据校验码),当dmd5a与dmd5b均为空时,表明副本a与副本b数据一致,否则表示数据存在差异。分别将dmd5a及dmd5b数据保存到本地磁盘,如图13所示。
[0145]
上述步骤602如图14所示,具体包括:
[0146]
在步骤801中,读取上次比对产生的filei文件,获取上次比对的gi信息及gmd5(gmd5_oldi),根据filei文件中的gi页信息,生成sql语句,如图15所示。
[0147]
在步骤802中,分别创建md5比对线程cmp_dec_md5_thr及cmp_inc_md5_thr。创建数据读取线程,分别对元素gi中包含的数据进行读取,对每一行数据计算md5值,得到行数据md5值集合imd5_new{imd50,imd51

imd5n},对gmd5中所有md5值计算md5值,得到元素gi的gmd5(gmd5_newi),比对gmd5_newi(可理解为实施例1中相应数据副本的组校验码)与gmd5_oldi(可理解为实施例1中相应历史数据副本的组校验码)是否相同,如果相同,则表示元素gi中的数据没有变化,不需要发送到比对线程进行比对;如果gmd5_newi与gmd5_oldi不同,则表示gi中存在数据变化;进入步骤803中。
[0148]
在步骤803中,获取filei中imd5信息(imd5_old),比对imd5_old(可理解为实施例1中相应历史数据副本的数据校验码)与imd5_new(可理解为实施例1中相应数据副本的数据校验码)的差异,获取imd5_old中存在但imd5_new中不存在的数据dif_dec;获取imd5_new中存在但imd5_old中不存在的数据dif_inc;将dif_dec发送到比对线程cmp_dec_md5_thr,将dif_inc发送到cmp_inc_md5_thr;更新gi的filei文件。其中,所述dif_dec与dif_inc可共同理解为实施例1中的第一修改记录或第二修改记录,dif_dec代表修改前数据,dif_inc代表修改后数据。
[0149]
在步骤804中,cmp_dec_md5_thr比对线程收集dif_dec数据,比对副本a与副本b的dif_dec是否相同,如果相同,则表明副本a及副本b中的数据,较上次比对,减少了相同的数据;如果不同,则表示则表明副本a及副本b中的数据,较上次比对,减少的数据不同,此时,将副本a多的dif_dec数据添加到ddmd5a,将副本b多的dif_dec数据添加到ddmd5b。
[0150]
在步骤805中,cmp_inc_md5_thr比对线程收集dif_inc数据,比对副本a与副本b的dif_inc是否相同,如果相同,则表明副本a及副本b中的数据,较上次比对,增加了相同的数据;如果不同,则表示副本a及副本b中的数据,较上次比对,增加的数据不同,此时,将副本a多的dif_inc数据添加到dimd5a,将副本b多的dif_inc数据添加到dimd5b,所述ddmd5a、ddmd5b、dimd5a和dimd5b可共同理解为实施例1中目标修改记录的集合,或整理得到的目标修改记录集,ddmd5a代表第一数据副本对应的修改前数据的集合,ddmd5b代表第一数据副本对应的修改后数据的集合,dimd5a代表第一数据副本对应的修改后数据的集合,dimd5b代表第二数据副本对应的修改后数据的集合。
[0151]
在步骤806中,获取上次数据比对结果差异报告dmd5a及dmd5b(所述dmd5a与dmd5b可共同理解为实施例1中的历史比对结果),查看ddmd5a的数据是否存在dmd5a中,如果存
在,则表明上次不一致的数据,在本次对比时,副本a中该数据已经被删除;如果ddmd5a的数据不在dmd5a中,表明本次比对时,副本a多删除了数据,则将该部分数据需要添加到dmd5b中,如图16所示;同理,查看ddmd5b的数据是否存在dmd5b中,如果不存在,则将数据添加到dmdba中。
[0152]
在步骤807中,查看dimd5a的数据是否存在dmd5b中,如果存在,则表明本次副本a新产生的差异数据,在上次比对时,数据已存在与副本b中,则删除dimd5a及dmd5b中相同的dm5值;如果dimd5a中的数据,不存在与dmd5b中,则表明该数据为新增的差异数据,则添加到dmd5a中,如图17所示;同理,删除dimd5b与dmd5a中的相同md5,将dimd5b中多余的md5值添加到dmd5b中;更新dmd5a及dmd5b本地磁盘文件(可理解为实施例1中的最终的数据比对结果)。
[0153]
实施例3:
[0154]
在实施例1和实施例2中所述方法的应用场景主要在于两个动态修改的数据副本之间的数据一致性比对。本发明基于与实施例1和实施例2的同一构思,提出一种基于动态修改的数据副本与静态的数据副本之间的数据一致性比对方法,适用于由一个源数据副本衍生多个业务数据副本,且源数据副本不因业务而修改,而仅通过衍生出的各业务数据副本与其同步而发生修改的应用场景。
[0155]
所述方法具体包括:
[0156]
将业务数据副本与对应的历史业务数据副本进行比对,得到业务修改记录集。
[0157]
根据业务修改记录集与历史比对结果。得到业务数据副本与源数据副本之间的数据比对结果。
[0158]
其中,以上一次进行比对时所使用的业务数据副本作为下一次比对时的历史业务数据副本;在第一次进行比对时,将业务数据副本与源数据副本进行比对,得到数据比对结果;且在对源数据副本进行同步时,更新对应的数据比对结果,使与同步后的源数据副本保持一致。
[0159]
上述方法的具体实现均基于与实施例1同一构思,在此不再赘述。
[0160]
实施例4:
[0161]
实施例1-实施例3中所述方法的应用场景主要在于两个数据副本之间的数据一致性比对。本发明基于实施例1-实施例3中所述方法的同一构思,提出一种多数据副本之间进行数据一致性比对的方法,所述方法具体包括:
[0162]
将业务数据副本与对应的历史业务数据副本进行比对,得到对应的历史业务修改记录。
[0163]
根据多个业务数据副本的历史业务修改记录和历史比对结果,得到数据比对结果。
[0164]
其中,以上一次进行比对时所使用的业务数据副本作为下一次比对时的历史业务数据副本,以上一次进行比对得到的数据比对结果作为下一次比对时的历史比对结果;在进行第一次比对时,根据多个业务数据副本中的数据对应关系,将存在数据对应关系的所有业务数据副本中的数据进行比对,若存在至少一个副本中的数据的值不同,则认为数据的一致性存在差异,将所有存在数据对应关系的数据值存储至所述数据比对结果中。
[0165]
其比对过程的具体实现均基于与实施例1同一构思,与实施例1的不同点在于:
[0166]
仅当所有业务数据副本的修改记录集中均存在相同的修改记录时,将修改记录去除,使不参与后续的数据比对结果的生成过程。
[0167]
在判断历史比对结果中是否存在与相应修改记录匹配的比对差异记录时,对比对差异记录中各数据副本的对应数据值进行比对,确认各数据副本的修改记录集中修改后的值与差异记录中记录的且未被修改的其他数据副本的值是否均一致,当所有数据副本的数据值一致时,判断为匹配。
[0168]
实施例5:
[0169]
如图18所示,是本发明实施例的数据一致性比对装置的架构示意图。本实施例的数据一致性比对装置包括一个或多个处理器21以及存储器22。其中,图18中以一个处理器21为例。
[0170]
处理器21和存储器22可以通过总线或者其他方式连接,图18中以通过总线连接为例。
[0171]
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的数据一致性比对方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行数据一致性比对方法。
[0172]
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0173]
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的数据一致性比对方法,例如,执行以上描述的图1-图4、图6、图7和图14所示的各个步骤。
[0174]
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0175]
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁盘或光盘等。
[0176]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献