CN115421965A - 一致性校验方法、装置、电子设备及存储介质 - Google Patents
一致性校验方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115421965A CN115421965A CN202211117294.7A CN202211117294A CN115421965A CN 115421965 A CN115421965 A CN 115421965A CN 202211117294 A CN202211117294 A CN 202211117294A CN 115421965 A CN115421965 A CN 115421965A
- Authority
- CN
- China
- Prior art keywords
- data block
- line
- candidate
- target data
- database
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种一致性校验方法、装置、电子设备及计算机可读存储介质,涉及数据库领域。该方法包括:对目标数据块进行检验处理,目标数据块在上、下游数据库均包括至少一行数据,检验处理包括确定相应数据块在上、下游数据库的校验和以及行数;若确定目标数据块的检验结果为异常,则确定目标数据块的一致性校验结果为不一致,其中,检验结果为异常用于表征相应的数据块在上、下游数据库的校验和以及行数中的至少一种存在不同。本申请实施例效率具有明显的提升,并且可更准确地确定目标数据块的一致性校验结果。
Description
技术领域
本申请涉及数据库技术领域,具体而言,本申请涉及一种一致性校验方法、装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
在关系型数据库的数据同步的场景下,上下游数据的一致性校验是非常重要的一个环节,缺少数据校验,可能会对商业决策产生非常负面的影响。现今常见的对比方式是分块做检验和对比,这种方法既能缩小定位不同行的查找范围,又可以拥有较高的并发来提高速度。
如果某个数据块在上、下游数据库的校验和不同,那么需要通过逐行对比来进行定位,但逐行对比存在一些问题:
1、逐行对比需要读取块内每一行数据来进行对比,期间会产生大量的数据传输,并且为了加快校验速度,往往会选择将数据表划分出行数比较多的若干块,这样会加重数据传输负担;
2、在校验软件端进行逐行对比,是一种单机操作,难以利用分布式的优点。
发明内容
本申请实施例提供了一种一致性校验方法、装置、电子设备、计算机可读存储介质及计算机程序产品,可以解决现有技术的上述问题。技术方案如下:
根据本申请实施例的一个方面,提供了一种一致性校验方法,该方法包括:
获得目标数据块,对目标数据块进行检验处理,目标数据块在上、下游数据库均包括至少一行数据,检验处理包括确定相应数据块在上、下游数据库的校验和以及行数;
若确定目标数据块的检验结果为异常,则确定目标数据块的一致性校验结果为不一致,其中,检验结果为异常用于表征相应的数据块在上、下游数据库的校验和以及行数中的至少一种存在不同。
根据本申请实施例的另一个方面,提供了一种一致性校验装置,该装置包括:
检验处理模块,用于获得目标数据块,对目标数据块进行检验处理,目标数据块在上、下游数据库均包括至少一行数据,检验处理包括确定相应数据块在上、下游数据库的校验和以及行数;
校验结果模块,用于若确定目标数据块的检验结果为异常,则确定目标数据块的一致性校验结果为不一致,其中,检验结果为异常用于表征相应的数据块在上、下游数据库的校验和以及行数中的至少一种存在不同。
根据本申请实施例的另一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现上述一致性校验方法的步骤。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的一致性校验方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
通过确定目标数据块在上、下游数据库的校验和,相比相应技术中对目标数据块逐行进行校验,本申请的方案的效率具有明显的提升,同时在确定校验和时还可以获得数据块在数据库的行数,这样在确定检验结果时,就存在两个参数:校验和和行数,可更准确地确定目标数据块的一致性校验结果
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一致性校验方法的发明构思的示意图;
图2为本申请实施例提供的一种一致性校验方法的流程示意图;
图3为本申请实施例提供的一种数据库中的数据分区和索引分区的关系;
图4为本申请实施例提供的一种一致性校验方法的流程示意图;
图5为本申请另一个实施例提供的一种一致性校验方法的流程示意图;
图6为本申请实施例提供的一种一致性校验装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请提供的一致性校验方法、装置、电子设备、计算机可读存储介质以及计算机程序产品,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
图1为本申请实施例提供的一致性校验方法的发明构思的示意图,如图所示,上游数据库在将数据同步至下游数据库后,对于数据块n,本申请实施例分别获取该数据块在上、下游数据库的校验和以及行数,通过比较该数据块在上、下游数据库的校验和以及行数,来确定数据块在上、下游数据库的一致性校验结果,其中,当数据块在上、下游数据库的校验和以及行数中的至少一种不同时,则一致性校验结果为不一致。
本申请实施例中提供了一种一致性校验方法,如图2所示,该方法包括:
S101、获得目标数据块,对目标数据块进行检验处理,目标数据块在上、下游数据库均包括至少一行数据,检验处理包括确定相应数据块在上、下游数据库的校验和以及行数。
本申请实施例可以在目标数据块由上游数据库同步至下游数据库后,对目标数据块进行校验处理。目标数据块在上、下游数据库均包括至少一行数据。
在一个实施例中,获得目标数据块,包括:
分别获得上、下游数据库的索引分区,根据索引分区从相应的数据库中获得目标数据块;索引分区中包括相应数据库中多个数据的索引标识,各索引分区中的索引标识,是对相应数据库中的各数据对应的索引标识的排列顺序确定的。
请参见图3,其示例性地示出了本申请实施例的数据库中的数据分区和索引分区的关系,如图所示,数据是以数据所在行的顺序进行分区的(非以数据索引的顺序),每4行数据构成一个数据分区,而在索引分区中,索引标识是以索引标识的顺序进行分区的,每3个索引标识构成一个索引分区,这样可以很容易地得到目标数据块。通过预设的搜索线程就可以获得每个索引分区对应的数据块,例如针对索引分区1,对应的搜索线程设置搜索范围:索引标识id>=1and索引标识id<5;针对索引分区2,对应的搜索线程设置搜索范围:索引标识id>=4and索引标识id<7。
本申请实施例的检验处理的方法包括两个方面,一是确定数据块在上、下游数据块的校验和,二是确定数据块在上、下游数据库中的行数。本申请实施例可以计算每行数据的CRC32值,再将每行数据的CRC32值按位异或,并且,在按位异或时或者求和的过程中同时记录该数据块的行数。
S102、若确定目标数据块的检验结果为异常,则确定目标数据块的一致性校验结果为不一致。
本申请实施例的检验结果为异常,是指相应的数据块在上、下游数据库的校验和以及行数中的至少一种存在不同,相应的,检验结果为正常,即相应的数据块在上、下游数据库的校验和以及行数均相同。当检验结果为异常,则确定目标数据块的一致性校验结果为不一致,也即目标数据块在上、下游数据库不一致。
本申请实施例通过确定目标数据块在上、下游数据库的校验和,相比相应技术中对目标数据块逐行进行校验,本申请的方案的效率具有明显的提升,同时在确定校验和时还可以获得数据块在数据库的行数,这样在确定检验结果时,就存在两个参数:校验和和行数,可更准确地确定目标数据块的一致性校验结果。
在上述各实施例的基础上,作为一种可选实施例,确定目标数据块的一致性校验结果为不一致,之后还包括:对目标数据块进行迭代校验;
其中,每一次迭代校验包括:
S201、确定当前迭代校验的参考数据块的行数,首次迭代校验的参考数据块为目标数据块;
S202、若参考数据块的行数不大于行数阈值,则对参考数据块在上、下游数据库的数据进行逐行对比;
S203、将不一致作为目标数据块的异常行数据。
本申请实施例若确定目标数据块的一致性校验结果为不一致,还需要进一步定位出目标数据块中不一致的行数据,具体地,本申请实施例采用迭代校验的方法,对于每一次迭代校验的数据块(也即参考数据块),通过确定该参考数据块的行数,只有当参考数据块的行数不大于行数阈值,才会对参考数据块进行逐行比对,可提高校验效率,最终将不一致的行数据作为目标数据块的异常行数据,后续可对异常行数据进行处理,直至目标数据块在上、下游数据库具备一致性。
在上述各实施例的基础上,作为一种可选实施例,确定当前迭代校验的参考数据块的行数,之后还包括:
S301、若参考数据块的行数大于行数阈值,则将参考数据块拆分为多个候选数据块,对候选数据块进行检验处理;
S302、若检验结果为异常的候选数据块的个数小于个数阈值,则将检验结果为异常的候选数据块作为下一次迭代校验的参考数据块。
需要说明的是,若当前迭代校验的参考数据块的行数大于行数阈值,本申请实施例则将参考数据块拆分为多个候选数据块,应当理解的是,同一数据库中不同的候选数据块不存在重复的行数据。
本申请实施例可以对数据表的索引(代表块的范围)进行Limit语法定位,将参考数据块拆分为多个候选数据块,相应的SQL语句可以表示为:
SQL=SELECT[index]FROM[table]WHERE[range]ORDER BY[index]LIMIT[off],1。
这条SQL中的index表示表示参考数据块的表索引列;table表示参考数据块所在的数据表;range表示通过索引确定的该参考数据块的范围。
当存在多个索引列表示该参考数据块时,参考数据块的范围按列顺序定义,例如用列a和列b作为联合索引来表示参考数据块的范围,那么一个参考数据块的范围可以是(a1_b1,a2_b2],即range值为((index>a1)OR(index=a1 AND index>b1))AND((index<a2)OR(index=a2 AND index<=b2));off表示对参考数据块的行数N除以2,即off=N/2,那么将对参考数据块拆分为两个候选数据块。
若检验结果为异常的候选数据块的个数小于个数阈值,说明仅有个别的候选数据块不一致,因此后续仅将异常的候选数据块作为下一次迭代校验的参考数据块,也即后续不再处理检验结果为正常的候选数据块。本申请实施例对于个数阈值的大小不作具体限定,例如可以为2。
在上述各实施例的基础上,作为一种可选实施例,对候选数据块进行检验处理,之后还包括:
S401、若检验结果为异常的候选数据块的个数不小于个数阈值,则对候选数据块在上、下游数据库的数据进行逐行对比;
S402、将不一致的行数据作为目标数据块的异常行数据。
若检验结果为异常的候选数据块的个数不小于个数阈值,说明上下游数据库存在较多的不一致,所以需要逐行进行比对。
请参见图4,其示例性地示出了本申请实施例的一致性校验方法的流程示意图,如图所示,包括:
S501、对目标数据块进行检验处理,若检验结果为正常,则执行步骤S508,若检验结果为异常,则执行步骤S502;
S502、确定目标数据块的一致性校验结果为不一致,进行迭代校验;
S503、确定当前迭代校验的参考数据块的行数,首次迭代校验的参考数据块为目标数据块;
S504、判断参考数据块的行数是否大于行数阈值,若行数大于行数阈值,则执行步骤S505,若行数不大于行数阈值,则执行步骤S507;
S505、将参考数据块拆分为多个候选数据块,对候选数据块进行检验处理;
S506、判断检验结果为异常的候选数据块的个数是否小于个数阈值,若个数小于个数阈值,则将检验结果为异常的候选数据块作为下一次迭代校验的参考数据块,返回步骤S504,若个数不小于个数阈值,则执行步骤S507;
S507、对参考数据块在上、下游数据库的数据进行逐行对比,将不一致的行数据作为目标数据块的异常行数据;
S508、确定下一个目标数据块,返回步骤S501。
本申请实施例的方法适用于数据表中仅存在少数不一致的行数据,且这些不一致的行数据分布比较集中的场景。
在上述各个实施例的基础上,作为一种可选实施例,本申请实施例还提供一种适用于存在较多不一致的行数据,或者不一致的行数据的分布比较离散的应用场景的方法。
具体地,在每次迭代校验过程中,确定当前迭代校验的参考数据块的行数,之后还包括:
若参考数据块的行数大于行数阈值,则将参考数据块拆分为多个候选数据块,对候选数据块进行检验处理;
若检验结果为异常的候选数据块的行数小于行数阈值,则对参考数据块在上、下游数据库的数据进行逐行对比;
将不一致的行数据作为候选数据块的异常行数据。
在本申请实施例,若参考数据块的行数大于行数阈值,本申请同样需要将参考数据块,拆分为多个候选数据块,对候选数据块进行检验处理,之后对于检验结果为异常的候选数据块,如果该候选数据块的行数小于行数阈值,则对该候选数据块的每一行数据比对是否一致,需要注意的是,此时并不能认为获得了目标数据块中的所有异常行数据,仅能作为候选数据块中的异常行数据。
在上述各实施例的基础上,作为一种可选实施例,对候选数据块进行检验处理,之后还包括:
若检验结果为异常的候选数据块的行数不小于行数阈值,则将检验结果为异常的候选数据块作为下一次迭代校验的参考数据块。
需要说明的是,当本申请中检验结果为异常的候选数据块的行数不小于行数阈值,则将每个检验结果为异常的候选数据块均作为下一次迭代校验的参考数据块。
请参见图5,其示例性地示出了本申请另一个实施例的一致性校验方法的流程示意图,如图所示,包括:
S601、对目标数据块进行检验处理,若检验结果为正常,则执行步骤S610,若检验结果为异常,则执行步骤S602;
S602、确定目标数据块的一致性校验结果为不一致,进行迭代校验;
S603、确定当前迭代校验的参考数据块的行数,首次迭代校验的参考数据块为目标数据块;
S604、判断参考数据块的行数是否大于行数阈值,若行数大于行数阈值,则执行步骤S605,若行数不大于行数阈值,则执行步骤S609;
S605、将参考数据块拆分为多个候选数据块,对候选数据块进行检验处理;
S606、对于每个检验结果为异常的候选数据块,判断该候选数据块的行数是否小于行数阈值,若小于行数阈值,则执行S607,若不小于行数阈值,则执行S608;
S607、对候选数据块在上、下游数据库的数据进行逐行对比,将不一致的行数据作为候选数据块的异常行数据;
S608、将候选数据块作为下一次迭代校验的参考数据块,返回步骤S603;
S609、对参考数据块在上、下游数据库的数据进行逐行对比,将不一致的行数据作为目标数据块的异常行数据。
S610、确定下一个目标数据块,返回步骤S601。
在上述各实施例的基础上,作为一种可选实施例,一般来说,索引结构都普遍支持顺序查找。因此在SQL优化器的支持下,上述可以优化为多分查询。本申请实施例中,在已知数据块的行数count,做二分校验和需要两步SQL:
1.首先需要按顺序偏移count/2行来定位到数据块的中间行的索引;
2.将定位到的索引作为划分点,将原数据块划分为两个子数据块,分别做校验和。
checksum操作是一个需要逐行遍历读取计算的操作,但在这个过程中,需要先扫描索引,才能定位到具体的行,本申请进一步发现,在第2步中对前半段范围的子数据块做校验和时需要的遍历索引过程与第1步的遍历索引过程是重复的。
本申请实施例的每一个目标数据块都来自分布式存储系统的一个索引分区。因此,同一个数据块中对索引的遍历是一个单机操作,而对索引指向的行数据做校验和才是一个分布式操作,因此引入“同时记录该半段最后一行的索引”,并不会打破原来的分布式操作,本申请实施例以改进二分checksum为下面两步:
1.对原数据块的前半段chunk(0,count/2]做校验和,同时记录该半段最后一行的索引;
2.根据第1步记录的索引,可以对原数据块的后半段chunk(count/2,count]进行checksum。
在上述各实施例的基础上,作为一种可选实施例,对候选数据块进行检验处理,包括:
根据参考数据块的行数,确定参考数据块的前半部分行数对应的第一候选数据块的校验和,记录第一候选数据块的最后一行数据的索引信息;
根据索引信息,确定参考数据块的后半部分行数对应的第二候选数据块的校验和。
在上述各实施例的基础上,作为一种可选实施例,将参考数据块拆分为多个候选数据块,包括:
根据参考数据块的行数,将参考数据块拆分为两个候选数据块,候选数据块的行数为参考数据块的行数的一半。
需要说明的是,在进行二分查找时,最坏的情况下仅多一倍目标数据块量的校验。
对于二分校验和来说,每次划分数据块的行数下降是对数级别的,因此校验和的额外行数不会超过1倍。但是,如果根据采用本申请图5所示的方案,对数据块进行多分,即数据块被划分为多个子数据块。这样可以减少当出现不一致时需要再次划分的行数。
不过这样在单个数据块会产生更多的只能串联执行的SQL,从而增加单个数据块的延迟。但这种延迟的增加并不是因为需要消耗更多的资源而增加的,而是将原来的一步拆分为串联的多步(任意步骤的开始依赖于其上一步的结果),因此可以通过并发处理数据块来增加系统的吞吐量,从而填满系统的资源,进而解决延迟的问题,减少比对任务的总消耗时间。
因此,在上述各实施例的基础上,作为一种可选实施例,对目标数据块进行检验处理,包括:
根据目标数据块的个数创建至少一个线程,线程用于对一个目标数据块进行检验处理;
并行执行至少一个线程。
本申请的各个实施例,通过连续校验逐步缩小需要逐行对比的范围来减少所需要的数据传输量,从而减少由数据传输带宽带来的性能瓶颈。同时,对数据块计算校验和,能充分利用分布式系统的特点,相比于单机的逐行对比,可以更快处理,并且单数据块的二分查找的延迟高的问题可以被分布式系统中多数据块的并发处理的高吞吐解决。
本申请实施例提供了一种一致性校验装置,如图6所示,该一致性校验装置,装置可以包括:检验处理模块601以及校验结果模块602,其中,
检验处理模块601,用于获得目标数据块,对目标数据块进行检验处理,目标数据块在上、下游数据库均包括至少一行数据,检验处理包括确定相应数据块在上、下游数据库的校验和以及行数;
校验结果模块602,用于若确定目标数据块的检验结果为异常,则确定目标数据块的一致性校验结果为不一致,其中,检验结果为异常用于表征相应的数据块在上、下游数据库的校验和以及行数中的至少一种存在不同。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现一致性校验的步骤,与相关技术相比可实现:通过确定目标数据块在上、下游数据库的校验和,相比相应技术中对目标数据块逐行进行校验,本申请的方案的效率具有明显的提升,同时在确定校验和时还可以获得数据块在数据库的行数,这样在确定检验结果时,就存在两个参数:校验和和行数,可更准确地确定目标数据块的一致性校验结果。
在一个可选实施例中提供了一种电子设备,如图7所示,图7所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (12)
1.一种一致性校验方法,其特征在于,包括:
获得目标数据块,对所述目标数据块进行检验处理,所述目标数据块在上、下游数据库均包括至少一行数据,所述检验处理包括确定相应数据块在上、下游数据库的校验和以及行数;
若确定所述目标数据块的检验结果为异常,则确定所述目标数据块的一致性校验结果为不一致,其中,所述检验结果为异常用于表征相应的数据块在所述上、下游数据库的校验和以及行数中的至少一种存在不同。
2.根据权利要求1所述的方法,其特征在于,所述确定所述目标数据块的一致性校验结果为不一致,之后还包括:对所述目标数据块进行迭代校验;
其中,每一次迭代校验包括:
确定当前迭代校验的参考数据块的行数,首次迭代校验的参考数据块为所述目标数据块;
若所述参考数据块的行数不大于行数阈值,则对所述参考数据块在上、下游数据库的数据进行逐行对比;
将不一致的行数据作为所述目标数据块的异常行数据。
3.根据权利要求2所述的方法,其特征在于,所述确定当前迭代校验的参考数据块的行数,之后还包括:
若所述参考数据块的行数大于所述行数阈值,则将所述参考数据块拆分为多个候选数据块,对所述候选数据块进行所述检验处理;
若检验结果为异常的候选数据块的个数小于个数阈值,则将检验结果为异常的候选数据块作为下一次迭代校验的参考数据块。
4.根据权利要求3所述的方法,其特征在于,所述对所述候选数据块进行所述检验处理,之后还包括:
若检验结果为异常的候选数据块的个数不小于所述个数阈值,则对所述候选数据块在上、下游数据库的数据进行逐行对比;
将不一致的行数据作为所述目标数据块的异常行数据。
5.根据权利要求2所述的方法,其特征在于,所述确定当前迭代校验的参考数据块的行数,之后还包括:
若所述参考数据块的行数大于行数阈值,则将所述参考数据块拆分为多个候选数据块,对所述候选数据块进行所述检验处理;
若检验结果为异常的候选数据块的行数小于所述行数阈值,则对所述参考数据块在上、下游数据库的数据进行逐行对比;
将不一致的行数据作为所述候选数据块的异常行数据。
6.根据权利要求5所述的方法,其特征在于,所述对所述候选数据块进行所述检验处理,之后还包括:
若检验结果为异常的候选数据块的行数不小于行数阈值,则将所述检验结果为异常的候选数据块作为下一次迭代校验的参考数据块。
7.根据权利要求3-6任意一项所述的方法,其特征在于,所述对所述候选数据块进行所述检验处理,包括:
根据所述参考数据块的行数,确定所述参考数据块的前半部分行数对应的第一候选数据块的校验和,记录所述第一候选数据块的最后一行数据的索引信息;
根据所述索引信息,确定所述参考数据块的后半部分行数对应的第二候选数据块的校验和。
8.根据权利要求7所述的方法,其特征在于,所述将所述参考数据块拆分为多个候选数据块,包括:
根据所述参考数据块的行数,将所述参考数据块拆分为两个候选数据块,所述候选数据块的行数为所述参考数据块的行数的一半。
9.根据权利要求1所述的方法,其特征在于,所述对所述目标数据块进行所述检验处理,包括:
根据所述目标数据块的个数创建至少一个线程,所述线程用于对一个目标数据块进行所述检验处理;
并行执行所述至少一个线程。
10.一种一致性校验装置,其特征在于,包括:
检验处理模块,用于获得目标数据块,对所述目标数据块进行检验处理,所述目标数据块在上、下游数据库均包括至少一行数据,所述检验处理包括确定相应数据块在上、下游数据库的校验和以及行数;
校验结果模块,用于若确定所述目标数据块的检验结果为异常,则确定所述目标数据块的一致性校验结果为不一致,其中,所述检验结果为异常用于表征相应的数据块在所述上、下游数据库的校验和以及行数中的至少一种存在不同。
11.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-9任一项所述一致性校验方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-9任一项所述的一致性校验方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211117294.7A CN115421965A (zh) | 2022-09-14 | 2022-09-14 | 一致性校验方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211117294.7A CN115421965A (zh) | 2022-09-14 | 2022-09-14 | 一致性校验方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115421965A true CN115421965A (zh) | 2022-12-02 |
Family
ID=84202096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211117294.7A Pending CN115421965A (zh) | 2022-09-14 | 2022-09-14 | 一致性校验方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115421965A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150175A (zh) * | 2023-04-18 | 2023-05-23 | 云账户技术(天津)有限公司 | 一种面向异构数据源的数据一致性校验方法及装置 |
-
2022
- 2022-09-14 CN CN202211117294.7A patent/CN115421965A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150175A (zh) * | 2023-04-18 | 2023-05-23 | 云账户技术(天津)有限公司 | 一种面向异构数据源的数据一致性校验方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107807982B (zh) | 一种异构数据库的一致性校验方法及装置 | |
US20150032759A1 (en) | System and method for analyzing result of clustering massive data | |
CN110781231A (zh) | 基于数据库的批量导入方法、装置、设备及存储介质 | |
CN111190551B (zh) | 一种redis数据的迁移系统、迁移方法、装置及终端 | |
CN107679104B (zh) | 大表流式并行高速数据比对方法 | |
CN111061758A (zh) | 数据存储方法、装置及存储介质 | |
CN112181430B (zh) | 代码变更统计方法、装置、电子设备及存储介质 | |
CN115421965A (zh) | 一致性校验方法、装置、电子设备及存储介质 | |
US20150032774A1 (en) | Method and system for processing data in a parallel database environment | |
CN108920601B (zh) | 一种数据匹配方法及装置 | |
CN113918648A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN105389394A (zh) | 基于多个数据库集群的数据请求处理方法及装置 | |
CN117492670A (zh) | 日志打印序列的确定方法、装置及电子设备 | |
WO2023071566A1 (zh) | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN112929400A (zh) | 一种分布式缓存库数据重均衡方法和系统 | |
CN115422293A (zh) | 一种分布式数据库及其数据检索方法 | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN115794806A (zh) | 金融数据的网格化处理系统及方法、装置、计算设备 | |
CN109992687B (zh) | 人脸数据的搜索方法、装置、电子设备及可读存储介质 | |
CN113468124A (zh) | 一种快速全量解析stdf文件的方法和设备 | |
CN111158994A (zh) | 一种压测性能测试方法及装置 | |
CN111143456B (zh) | 基于Spark的Cassandra数据导入方法、装置、设备及介质 | |
CN114595486B (zh) | 零数据识别方法、装置、可读存储介质及电子设备 | |
US10037262B2 (en) | Accelerated test automation framework | |
CN113297321B (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 |