CN115952177A - 一种数据库一致性校验方法及装置 - Google Patents
一种数据库一致性校验方法及装置 Download PDFInfo
- Publication number
- CN115952177A CN115952177A CN202211439548.7A CN202211439548A CN115952177A CN 115952177 A CN115952177 A CN 115952177A CN 202211439548 A CN202211439548 A CN 202211439548A CN 115952177 A CN115952177 A CN 115952177A
- Authority
- CN
- China
- Prior art keywords
- data
- user data
- database
- current
- page
- 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
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000004891 communication Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 15
- 238000012795 verification Methods 0.000 abstract description 6
- 238000013524 data verification Methods 0.000 abstract description 2
- 230000015654 memory Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库一致性校验方法及装置,涉及数据校验领域,能够有效提高确定第一数据库和第二数据库的一致性的速率。该方法包括:根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;并根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;最后根据第一校验值和第二校验值,确定第一数据库和第二数据库的一致性。本申请实施例用于对数据库的一致性继续校验的过程中。
Description
技术领域
本申请涉及数据校验领域,尤其涉及一种数据库一致性校验方法及装置。
背景技术
对于可靠性要求高的数据库***而言,为了保证***的正常运行,数据库***采用建立主、备两套数据库的方式。在数据库***运行过程中,主数据库和备数据库需要进行周期或者实时的数据同步。但是,由于网络不稳定或者延时等原因,难以保证主数据库和备数据库的一致性。因此,需要对主数据库和备数据库的一致性进行校验。
目前,在对主数据库和备数据库中存储的堆表文件的数据进行一致性校验时,需要先根据查询语句从主数据库(或备数据库)的堆表文件中,提取出目标行数据,再根据提取出的各个行数据的校验值,确定出主数据库(或备数据库)的堆表文件的数据校验值,最后根据确定的主数据库的堆表文件的数据校验值,和备数据库的堆表文件的数据校验值,对主数据库和备数据库中存储的堆表文件的数据进行一致性校验,该方法在实现上需要花费大量的时间。
发明内容
针对现有技术中在对主数据库和备数据库中存储的堆表文件的数据进行一致性校验时,需要花费大量的时间。本申请提供一种数据库一致性校验方法及装置,能够加快对主备数据库的一致性进行校验的速度。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种数据库一致性校验方法,该方法包括:
根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;第一数据库中包含多个页面。
根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;第二数据库中包含多个页面。
根据第一校验值和第二校验值,确定第一数据库和第二数据库的一致性。
基于上述技术方案,本申请实施例提供的一种数据库一致性校验方法,可以根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;并根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;最后根据第一校验值和第二校验值,确定第一数据库和第二数据库的一致性。其中,第一数据库和第二数据库中均包含多个页面。通过上述方法,可以直接根据各个用户数据的数据长度,和各个用户数据在对应页面中的位置信息,分别确定出第一数据库和第二数据库的校验值,即第一校验值和第二校验值;而不需要先将第一数据库和第二数据库中包含的用户数据提取出来,再对第一数据库和第二数据库的校验值进行计算。因此,可以有效提高确定第一数据库和第二数据库的一致性的速率。
可选的,根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值,包括:
依次将第一数据库中包含的各个页面作为当前页面,并执行下述操作,直至遍历完第一数据库中包含的所有页面:
从当前页面中包含的各个用户数据中,确定当前用户数据。
根据当前用户数据的数据长度和当前用户数据在当前页面中的位置信息,确定当前用户数据的用户数据校验值,直至遍历完当前页面中包含的所有用户数据。
遍历完第一数据库中包含的所有页面后,根据确定的多个用户数据校验值,确定第一校验值。
通过上述方法,在针对当前页面进行操作时,可以根据当前用户数据的数据长度和当前用户数据在当前页面中的位置信息,确定当前用户数据的校验值,直至遍历完当前页面中包含的所有用户数据。即只有当每个页面中包含的用户数据遍历完后,才可以遍历下一个页面,即每个页面只需要遍历一次。因此,不需要对一个页面进行多次访问,有效降低磁盘随机读取时延增大问题。
可选的,通过如下方式从当前页面中包含的各个用户数据中,确定当前用户数据:
依次将当前页面中的各个用户数据作为当前用户数据。
或者,依次将当前页面中数据类型为第一类数据的多个用户数据作为当前用户数据;第一类数据是指包含的数据量小于或等于数据量阈值的数据。
若未遍历完当前页面中包含的所有用户数据,则依次将当前页面中数据类型为第二类数据的多个用户数据作为当前用户数据;第二类数据是指包含的数据量大于数据量阈值的数据。
可选的,通过如下方式获取当前用户数据的数据长度:
若当前用户数据为第一类数据,则根据当前用户数据在当前页面中的长度确定当前用户数据的数据长度;第一类数据是指包含的数据量小于或等于数据量阈值的数据。
若当前用户数据为第二类数据,则根据当前页面中包含的当前用户数据的索引值,查找当前用户数据,并确定当前用户数据的数据长度;第二类数据是指包含的数据量大于数据量阈值的数据。
可选的,通过如下方式确定当前用户数据的位置信息:
将当前用户数据中第一个字符的位置信息,作为当前用户数据的位置信息。
第二方面,本申请提供一种数据库一致性校验装置,该装置包括:
第一确定单元,用于根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;第一数据库中包含多个页面。
第二确定单元,用于根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;第二数据库中包含多个页面。
比对单元,用于根据第一校验值和第二校验值,确定第一数据库和第二数据库的一致性。
可选的,第一确定单元具体用于:
依次将第一数据库中包含的各个页面作为当前页面,并执行下述操作,直至遍历完第一数据库中包含的所有页面:
从当前页面中包含的各个用户数据中,确定当前用户数据。
根据当前用户数据的数据长度和当前用户数据在当前页面中的位置信息,确定当前用户数据的用户数据校验值,直至遍历完当前页面中包含的所有用户数据。
遍历完第一数据库中包含的所有页面后,根据确定的多个用户数据校验值,确定第一校验值。
可选的,通过如下方式从当前页面中包含的各个用户数据中,确定当前用户数据:
依次将当前页面中的各个用户数据作为当前用户数据。
或者,依次将当前页面中数据类型为第一类数据的多个用户数据作为当前用户数据;第一类数据是指包含的数据量小于或等于数据量阈值的数据。
若未遍历完当前页面中包含的所有用户数据,则依次将当前页面中数据类型为第二类数据的多个用户数据作为当前用户数据;第二类数据是指包含的数据量大于数据量阈值的数据。
可选的,通过如下方式获取当前用户数据的数据长度:
若当前用户数据为第一类数据,则根据当前用户数据在当前页面中的长度确定当前用户数据的数据长度;第一类数据是指包含的数据量小于或等于数据量阈值的数据。
若当前用户数据为第二类数据,则根据当前页面中包含的当前用户数据的索引值,查找当前用户数据,并确定当前用户数据的数据长度;第二类数据是指包含的数据量大于数据量阈值的数据。
可选的,通过如下方式确定当前用户数据的位置信息:
将当前用户数据中第一个字符的位置信息,作为当前用户数据的位置信息。
第三方面,本申请提供了一种数据库一致性校验装置,该装置包括:处理器和通信接口;通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的数据库一致性校验方法。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在终端上运行时,使得终端执行如第一方面和第一方面的任一种可能的实现方式中描述的数据库一致性校验方法。
第五方面,本申请实施例提供一种包含指令的计算机程序产品,当计算机程序产品在数据库一致性校验装置上运行时,使得数据库一致性校验装置执行如第一方面和第一方面的任一种可能的实现方式中所描述的数据库一致性校验方法。
第六方面,本申请实施例提供一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的数据库一致性校验方法。
具体的,本申请实施例中提供的芯片还包括存储器,用于存储计算机程序或指令。
通过本申请实施例提供的一种数据库一致性校验方法,可以直接根据各个用户数据的数据长度,和各个用户数据在对应页面中的位置信息,分别确定出第一数据库和第二数据库的校验值,即第一校验值和第二校验值;而不需要先将第一数据库和第二数据库中包含的用户数据提取出来,再对第一数据库和第二数据库的校验值进行计算。因此,可以有效提高确定第一数据库和第二数据库的一致性的速率。
附图说明
图1为本申请实施例提供的一种数据库一致性校验方法应用的数据库***示意图;
图2为本申请实施例提供的一种数据库一致性校验方法的流程示意图;
图3为本申请实施例提供的一种数据库页面格式示意图;
图4为本申请实施例提供的一种行元组数据的内部结构示意图;
图5为本申请实施例提供的一种确定第一校验值的流程示意图;
图6为本申请实施例提供的一种数据库一致性校验装置的结构框图;
图7为本申请实施例提供的一种数据库一致性校验装置的结构示意图。
具体实施方式
下面结合附图对本申请实施例提供的数据库一致性校验方法及装置进行详细地描述。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
图1示出了本申请实施例提供的一种数据库一致性校验方法的数据库***示意图,以一主一备的构架为例,该数据库***中包括一个主数据库服务器101以及一个通过网络与其连接的备数据库服务器102。根据实际的应用需求,该数据库***也可以为包含多个备数据库服务器的一主多备的构架,其中任意一个备数据库服务器与主数据库服务器之间进行主备数据库一致性校验的方式,与本申请中一主一备的构架类似。
本领域技术人员应当理解,数据库***中的主数据库服务器101和备数据库服务器102可以包括但不限于用户设备、网络设备,或用户设备与网络设备通过网络相集成所构成的设备。其中,用户设备包括但不限于个人计算机、触控终端等实现;网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
对于大型且可靠性要求高的数据库***而言,为了保证***的正常运行,数据库***采用建立主、备两套数据库的方式。同时,为了保证数据库访问的效率,数据库***会缓存数据库中的数据以实现数据的快速访问,并且缓存数据与数据库实时保持一致。
在数据库***的运行过程中,主数据库和备数据库需要进行周期或者实时的数据同步,但是,由于网络不稳定或者延时等原因,难以保证主数据库和备数据库的一致性。当主数据库失效,需要由备数据库接管数据提供数据服务,但是,由于主数据库和备数据库的不一致性,使得数据库***无法正常运行。
目前,在对主数据库和备数据库中存储的堆表文件的数据进行一致性校验时,需要先根据查询语句从主数据库或备数据库的堆表文件中,读取出目标行数据,并通过聚合函数,确定出目标行数据的校验值;然后根据得到的多个校验值确定出主数据库或备数据库的堆表文件的数据校验值,最后根据主数据库的堆表文件的数据校验值,和备数据库的堆表文件的数据校验值,对主数据库和备数据库中存储的堆表文件的数据进行一致性校验,该方法在实现上需要花费大量的时间。
为了解决技术问题,本申请提供一种数据库一致性校验方法,可以根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;并根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;最后根据第一校验值和第二校验值,确定第一数据库和第二数据库的一致性。其中,第一数据库和第二数据库中均包含多个页面。通过上述方法,可以直接根据各个用户数据的数据长度,和各个用户数据在对应页面中的位置信息,分别确定出第一数据库和第二数据库的校验值,即第一校验值和第二校验值;而不需要先将第一数据库和第二数据库中包含的用户数据提取出来,再对第一数据库和第二数据库的校验值进行计算。因此,可以有效提高确定第一数据库和第二数据库的一致性的速率。
图2为本申请实施例提供的一种数据库一致性校验方法的流程图,如图2所示,该方法包括如下步骤:
步骤S201,根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值。
步骤S202,根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值。
在本申请实施例中,可以是第一数据库为主数据库,第二数据库为备数据库;也可以是第二数据库为主数据库,第一数据库为备数据库,本申请对此不做限定。
在本申请实施例中,数据库可以是openGauss数据库,也可以是mysql数据库,postgresql数据库等,本申请对此不做限定,下述以openGauss数据库为例进行说明。
图3为openGauss数据库对堆表文件进行存储时的页面格式,如图3所示,在该页面格式中,包含头部信息区、数据指示数组和行元组数据区三部分。
在头部信息区中可以包含下述几种信息:
(1)pd_lsn:用于指示当前页面最后一次修改操作的预写日志的结束位置。
(2)pd_checksum:用于指示当前页面的CRC校验值。
(3)pd_flags:用于保存与当前页面相关的各类辅助信息。
(4)pd_lower:用于指示当前页面已使用的元组指针数组的尾部。
(5)pd_upper:用于指示当前页面下一个可***元组的起始位置。
(6)pd_special:用于指示当前页面尾部特殊区域的起始位置。
(7)pd_pagesize_version:用于指示当前页面的大小和版本号。
(8)pd_prune_xid:用于指示当前页面的清理辅助事务号。
(9)pd_xid_base:用于指示当前页面内所有元组的基准事务号。
(10)pd_multi_base:当对当前页面进行加锁时,用于指示当前页面持锁的事务号。
数据指示数组中可以包含各行元组数据在当前页面的偏移位置,例如,lp1可以用于指示行元组数据tuple1的头部索引位置,lp2可以用于指示行元组数据tuple2的头部索引位置,lp3可以用于指示行元组数据tuple3的头部索引位置。
图4为一个行元组数据的内部结构示意图,如图4所示,在一个行元组数据中,可以包括头部数据(HeapTupleHeadeData)和用户数据(encoded user data)。其中,头部数据可以包括下述几种信息:
(1)t_xmin,用于指示***元组的事务号。
(2)t_xmax,用于指示删除元组的事务号。
(3)t_cid,用于指示***或删除元组的命令号。
(4)t_ctid,用于指示当前元组的页面和页面内元组指针。
(5)t_infomask2,用于指示元组的属性掩码。
(6)t_infomask,用于指示元组的另一个属性掩码。
(7)t_hoff,用于指示元组数据距离元组头部结构体起始位置的偏移。
(8)t_bits,用于指示所有字段的NULL值bitmap。
因为在对行元组数据进行更新操作时,行元组数据的用户数据部分不会发生变化,因此,可以根据用户数据对校验值进行确定。
具体的,可以根据第一数据库中各个用户数据的数据长度和第一数据库中各个用户数据在对应页面中的位置信息,确定出第一校验值,然后根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值。
步骤S203,根据第一校验值和第二校验值,确定第一数据库和第二数据库的一致性。
通过步骤S201和步骤S202确定出第一校验值和第二校验值后,可以根据第一校验值和第二校验值,进一步确定出第一数据库和第二数据库的一致性。
示例性地,在一种实施例中,若第一校验值等于第二校验值,则表明第一数据库和第二数据库中的数据一致;若第一校验值不等于第二校验值,则表明第一数据库和第二数据库中的数据不一致。
通过上述方法,可以直接根据各个用户数据的数据长度,和各个用户数据在对应页面中的位置信息,分别确定出第一数据库和第二数据库的校验值,即第一校验值和第二校验值;而不需要先将第一数据库和第二数据库中包含的用户数据提取出来,再对第一数据库和第二数据库的校验值进行计算。因此,可以有效提高确定第一数据库和第二数据库的一致性的速率。
在一种可选的实施方式中,在上述步骤S201中,在确定第一校验值的过程中,可以参考图5所示的方法,如图5所示,该方法包括:
步骤S501,依次将第一数据库中包含的各个页面作为当前页面。
步骤S502,从当前页面中包含的各个用户数据中,确定当前用户数据。
在一种可选的实施方式中,在确定当前用户数据的过程中,可以通过下述两种方式继续确定:
(1)依次将当前页面中的各个用户数据作为当前用户数据。
(2)先将当前页面中数据类型为第一类数据的多个用户数据依次作为当前用户数据,若未遍历完当前页面中包含的所有用户数据,再将当前页面中数据类型为第二类数据的多个用户数据依次作为当前用户数据。其中,第一类数据是指包含的数据量小于或等于数据量阈值的数据,第二类数据是指包含的数据量大于数据量阈值的数据。
在本申请实施例中,第一类数据可以包括但不限于可以用当前快照读获取到的数据,即对于数据量小于或等于数据量阈值的用户数据,可以直接从当前页面中获取到当前用户数据的全部数据;第二类数据可以包括但不限于不可以用当前快照读获取到的数据,例如,Toast类型的数据,下述以第一类数据为可以通过当前快照读获取到的数据,第二类型数据为Toast类型的数据为例进行说明。
示例性地,在一种实施例中,可以先通过当前快照读,将当前页面中包含的多个用户数据作为当前用户数据,并针对当前用户数据,执行下述各个操作,执行完毕后,若遍历完当前页面中包含的所有用户数据,则表明当前页面中不包含Toast类型的数据,因此,可以将当前页面的下一页面作为当前页面进行处理;若未遍历完当前页面中包含的所有用户数据,则表明当前页面中包含Toast类型的数据,因此,可以依次将当前页面中数据类型为第二类数据的多个用户数据作为当前用户数据进行处理。
在本申请实施例中,数据量可以用于指示该数据中包含的字符数,例如,若当前用户数据为“ghku/452”,则当前用户数据中包含的数据量为8,数据量阈值可以根据实际情况进行设定,或采用默认的数据量阈值,本申请对此不作限定。
步骤S503,获取当前用户数据的数据长度。
具体的,在一种可选的实施方式中,若当前用户数据为第一类数据,则可以根据当前用户数据在当前页面中的长度确定当前用户数据的数据长度;若当前用户数据为第二类数据,则根据当前页面中包含的当前用户数据的索引值,查找当前用户数据,并确定当前用户数据的数据长度。
示例性地,在一种实施例中,假设当前用户数据为第一类数据,则可以通过当前快照读直接获取到当前用户数据的数据长度。
在另一种实施例中,假设当前用户数据为第二类数据,则可以根据当前页面中包含的当前用户数据的索引值,在Toast表中,查找出当前用户数据,并根据Toast表中包含的当前用户数据的数据量,确定出当前用户数据的数据长度。
步骤S504,获取当前用户数据在当前页面中的位置信息。
具体的,在一种可选的实施方式中,可以将当前用户数据中第一个字符的位置信息,作为当前用户数据在当前页面中的位置信息。
在另一种可选的实施方式中,也可以根据当前用户数据中最后一个字符的位置信息,作为当前用户数据在当前页面中的位置信息。
步骤S505,根据当前用户数据的数据长度和当前用户数据在当前页面中的位置信息,确定当前用户数据的用户数据校验值。
在本申请实施例中,校验值可以包括但不限于CRC32检验值,本申请对此不做限定。
示例性地,在一种实施例中,通过步骤S503和步骤S504确定出当前用户数据的数据长度和当前用户数据在当前页面中的位置信息后,可以通过“RowCRC=COMP_CRC32(DataPtr,Len)”确定出当前用户数据的CRC32检验值,其中,RowCRC表示当前用户数据的CRC32检验值,DataPtr表示当前用户数据在当前页面中的位置信息,Len表示当前用户数据的数据长度。
步骤S506,是否遍历完当前页面中包含的所有用户数据;若是,则执行步骤S507;若否,则执行步骤S508;
步骤S507,是否遍历完第一数据库中包含的所有页面;若是,则执行步骤S510;若否,则执行步骤S509;
步骤S508,将当前用户数据的下一条用户数据作为当前用户数据;
步骤S509,将当前页面的下一页面作为当前页面;
步骤S510,根据确定的多个用户数据校验值,确定第一校验值。
具体的,通过上述方式确定出多个用户数据校验值后,可以根据各个用户数据校验值的累加值,确定出第一数据库对应的第一校验值。
根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值的过程,与上述图5所示的根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值的过程相类似,此处不再赘述。
通过上述方法,在针对当前页面进行操作时,可以根据当前用户数据的数据长度和当前用户数据在当前页面中的位置信息,确定当前用户数据的校验值,直至遍历完当前页面中包含的所有用户数据。即只有当每个页面中包含的用户数据遍历完后,才可以遍历下一个页面,即每个页面只需要遍历一次。因此,不需要对一个页面进行多次访问,不仅可以有效降低磁盘随机读取时延增大问题,还可以有效缓解数据库共享缓冲池频繁淘汰和置换的问题。
在本申请实施例中,第一数据库(或第二数据库)中可以包含多个页面。因此,在一种可选的实施方式中,在确定第一校验值的过程中,可以对第一数据库进行加锁处理,在确定第二校验值的过程中,可以对第二数据库进行加锁处理。
示例性地,在一种实施例中,在确定第一校验值的过程中,可以对第一数据库增加访问共享锁,该访问共享锁不仅可以防止对当前页面中的数据进行更新,还不会阻塞对除当前页面外的其余页面的更新操作。
图6为本申请实施例提供的一种数据库一致性校验装置的结构示意图,如图6所示,该装置包括:
第一确定单元601,用于根据第一数据库中各个用户数据的数据长度,和第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;第一数据库中包含多个页面。
第二确定单元602,用于根据第二数据库中各个用户数据的数据长度,和第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;第二数据库中包含多个页面。
比对单元603,用于根据第一校验值和第二校验值,确定第一数据库和第二数据库的一致性。
可选的,第一确定单元601具体用于:
依次将第一数据库中包含的各个页面作为当前页面,并执行下述操作,直至遍历完第一数据库中包含的所有页面:
从当前页面中包含的各个用户数据中,确定当前用户数据;
根据当前用户数据的数据长度和当前用户数据在当前页面中的位置信息,确定当前用户数据的用户数据校验值,直至遍历完当前页面中包含的所有用户数据;
遍历完第一数据库中包含的所有页面后,根据确定的多个用户数据校验值,确定第一校验值。
可选的,通过如下方式从当前页面中包含的各个用户数据中,确定当前用户数据:
依次将当前页面中的各个用户数据作为当前用户数据;或者,
依次将当前页面中数据类型为第一类数据的多个用户数据作为当前用户数据;第一类数据是指包含的数据量小于或等于数据量阈值的数据。
若未遍历完当前页面中包含的所有用户数据,则依次将当前页面中数据类型为第二类数据的多个用户数据作为当前用户数据;第二类数据是指包含的数据量大于数据量阈值的数据。
可选的,通过如下方式获取当前用户数据的数据长度:
若当前用户数据为第一类数据,则根据当前用户数据在当前页面中的长度确定当前用户数据的数据长度;第一类数据是指包含的数据量小于或等于数据量阈值的数据。
若当前用户数据为第二类数据,则根据当前页面中包含的当前用户数据的索引值,查找当前用户数据,并确定当前用户数据的数据长度;第二类数据是指包含的数据量大于数据量阈值的数据。
可选的,通过如下方式确定当前用户数据的位置信息:
将当前用户数据中第一个字符的位置信息,作为当前用户数据的位置信息。
图7示出了上述实施例中所涉及的数据库一致性校验装置的又一种可能的结构示意图。该数据库一致性校验装置包括:处理器701和通信接口702。处理器701用于对数据库一致性校验装置的动作进行控制管理,通信接口702用于支持数据库一致性校验装置与其他网络实体的通信。数据库一致性校验装置还可以包括存储器703和总线704,存储器703用于存储数据库一致性校验装置的程序代码和数据。
其中,存储器703可以是数据库一致性校验装置中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
上述处理器701可以是实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线704可以是扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线704可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行上述方法实施例中的数据库一致性校验方法。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得该计算机执行上述方法实施例所示的方法流程中的数据库一致性校验方法。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合、或者本领域熟知的任何其它形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(Application Specific Integrated Circuit,ASIC)中。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
本发明的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行如图2至图5中所述的数据库一致性校验方法。
由于本发明的实施例中的数据库一致性校验装置、计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本发明实施例在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (12)
1.一种数据库一致性校验方法,其特征在于,所述方法包括:
根据第一数据库中各个用户数据的数据长度,和所述第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;所述第一数据库中包含多个页面;
根据第二数据库中各个用户数据的数据长度,和所述第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;所述第二数据库中包含多个页面;
根据所述第一校验值和所述第二校验值,确定所述第一数据库和所述第二数据库的一致性。
2.根据权利要求1所述的方法,其特征在于,所述根据第一数据库中各个用户数据的数据长度,和所述第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值,包括:
依次将所述第一数据库中包含的各个页面作为当前页面,并执行下述操作,直至遍历完所述第一数据库中包含的所有页面:
从所述当前页面中包含的各个用户数据中,确定当前用户数据;
根据所述当前用户数据的数据长度和所述当前用户数据在所述当前页面中的位置信息,确定所述当前用户数据的用户数据校验值,直至遍历完所述当前页面中包含的所有用户数据;
遍历完所述第一数据库中包含的所有页面后,根据确定的多个用户数据校验值,确定所述第一校验值。
3.根据权利要求2所述的方法,其特征在于,通过如下方式从所述当前页面中包含的各个用户数据中,确定所述当前用户数据:
依次将所述当前页面中的各个用户数据作为当前用户数据;或者,
依次将所述当前页面中数据类型为第一类数据的多个用户数据作为当前用户数据;所述第一类数据是指包含的数据量小于或等于数据量阈值的数据;
若未遍历完所述当前页面中包含的所有用户数据,则依次将所述当前页面中数据类型为第二类数据的多个用户数据作为当前用户数据;所述第二类数据是指包含的数据量大于所述数据量阈值的数据。
4.根据权利要求2所述的方法,其特征在于,通过如下方式获取所述当前用户数据的数据长度:
若所述当前用户数据为第一类数据,则根据所述当前用户数据在所述当前页面中的长度确定所述当前用户数据的数据长度;所述第一类数据是指包含的数据量小于或等于数据量阈值的数据;
若所述当前用户数据为第二类数据,则根据所述当前页面中包含的所述当前用户数据的索引值,查找所述当前用户数据,并确定所述当前用户数据的数据长度;所述第二类数据是指包含的数据量大于所述数据量阈值的数据。
5.根据权利要求2所述的方法,其特征在于,通过如下方式确定所述当前用户数据的位置信息:
将所述当前用户数据中第一个字符的位置信息,作为所述当前用户数据的位置信息。
6.一种数据库一致性校验装置,其特征在于,所述装置包括:
第一确定单元,用于根据第一数据库中各个用户数据的数据长度,和所述第一数据库中各个用户数据在对应页面中的位置信息,确定第一校验值;所述第一数据库中包含多个页面;
第二确定单元,用于根据第二数据库中各个用户数据的数据长度,和所述第二数据库中各个用户数据在对应页面中的位置信息,确定第二校验值;所述第二数据库中包含多个页面;
比对单元,用于根据所述第一校验值和所述第二校验值,确定所述第一数据库和所述第二数据库的一致性。
7.根据权利要求6所述的装置,其特征在于,所述第一确定单元,具体用于:
依次将所述第一数据库中包含的各个页面作为当前页面,并执行下述操作,直至遍历完所述第一数据库中包含的所有页面:
从所述当前页面中包含的各个用户数据中,确定当前用户数据;
根据所述当前用户数据的数据长度和所述当前用户数据在所述当前页面中的位置信息,确定所述当前用户数据的用户数据校验值,直至遍历完所述当前页面中包含的所有用户数据;
遍历完所述第一数据库中包含的所有页面后,根据确定的多个用户数据校验值,确定所述第一校验值。
8.根据权利要求7所述的装置,其特征在于,通过如下方式从所述当前页面中包含的各个用户数据中,确定所述当前用户数据:
依次将所述当前页面中的各个用户数据作为当前用户数据;或者,
依次将所述当前页面中数据类型为第一类数据的多个用户数据作为当前用户数据;所述第一类数据是指包含的数据量小于或等于数据量阈值的数据;
若未遍历完所述当前页面中包含的所有用户数据,则依次将所述当前页面中数据类型为第二类数据的多个用户数据作为当前用户数据;所述第二类数据是指包含的数据量大于所述数据量阈值的数据。
9.根据权利要求7所述的装置,其特征在于,通过如下方式获取所述当前用户数据的数据长度:
若所述当前用户数据为第一类数据,则根据所述当前用户数据在所述当前页面中的长度确定所述当前用户数据的数据长度;所述第一类数据是指包含的数据量小于或等于数据量阈值的数据;
若所述当前用户数据为第二类数据,则根据所述当前页面中包含的所述当前用户数据的索引值,查找所述当前用户数据,并确定所述当前用户数据的数据长度;所述第二类数据是指包含的数据量大于所述数据量阈值的数据。
10.根据权利要求7所述的装置,其特征在于,通过如下方式确定所述当前用户数据的位置信息:
将所述当前用户数据中第一个字符的位置信息,作为所述当前用户数据的位置信息。
11.一种数据库一致性校验装置,其特征在于,包括:处理器和通信接口;所述通信接口和所述处理器耦合,所述处理器用于运行计算机程序或指令,以实现如权利要求1-5中任一项所述的数据库一致性校验方法。
12.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当计算机执行该指令时,该计算机执行上述权利要求1-5中任一项所述的数据库一致性校验方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211439548.7A CN115952177A (zh) | 2022-11-17 | 2022-11-17 | 一种数据库一致性校验方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211439548.7A CN115952177A (zh) | 2022-11-17 | 2022-11-17 | 一种数据库一致性校验方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115952177A true CN115952177A (zh) | 2023-04-11 |
Family
ID=87286497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211439548.7A Pending CN115952177A (zh) | 2022-11-17 | 2022-11-17 | 一种数据库一致性校验方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952177A (zh) |
-
2022
- 2022-11-17 CN CN202211439548.7A patent/CN115952177A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200320036A1 (en) | Data unit cloning in memory-based file systems | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN108664482B (zh) | Flash存储器及存储文件管理方法 | |
CN112463020A (zh) | 基于Flash的数据存取方法、装置及设备 | |
CN111177143A (zh) | 键值数据存储方法、装置、存储介质与电子设备 | |
CN111857574A (zh) | 一种写请求数据压缩方法、***、终端及存储介质 | |
CN113312330A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN110019063A (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
CN112800291B (zh) | 一种相似账户确定方法、装置、电子设备及存储介质 | |
CN112764683B (zh) | 存储块管理信息同步记录方法、***、终端及存储介质 | |
CN110554992B (zh) | 一种分布式元数据路径管理方法、***、终端及存储介质 | |
CN115168259B (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN115952177A (zh) | 一种数据库一致性校验方法及装置 | |
EP4134802A1 (en) | Method and apparatus for data access of nand flash file, and storage medium | |
US11314430B2 (en) | Reading data in sub-blocks using data state information | |
CN111858590B (zh) | 一种存储***元数据组织方法、***、终端及存储介质 | |
CN110019092B (zh) | 数据存储的方法、控制器和*** | |
CN114217741A (zh) | 存储装置的存储方法及存储装置 | |
CN113806803A (zh) | 一种数据存储方法、***、终端设备及存储介质 | |
CN106371770A (zh) | 数据写入方法及装置 | |
CN112559457A (zh) | 数据访问方法及装置 | |
CN118034612B (zh) | 一种数据处理方法、装置和存储介质 | |
CN111966295B (zh) | 一种基于ceph的多journal记录方法、装置和介质 | |
CN112988034B (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 |