CN114297193A - 一种基于hash的数据比对方法及装置 - Google Patents
一种基于hash的数据比对方法及装置 Download PDFInfo
- Publication number
- CN114297193A CN114297193A CN202111506096.5A CN202111506096A CN114297193A CN 114297193 A CN114297193 A CN 114297193A CN 202111506096 A CN202111506096 A CN 202111506096A CN 114297193 A CN114297193 A CN 114297193A
- Authority
- CN
- China
- Prior art keywords
- data
- copy
- row
- value
- hash
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于HASH的数据比对方法及装置。其中方法包括获取热点数据的副本;抽取副本数据库数据,计算行数据MD5值;设置MD5缓冲区并存放行MD5值,得到比对表;利用HASH算法,获取行MD5值在HASH表的位置区,并排列;以第一副本为基准,判定第二副本数据量的大小,选取对应的方法进行比对,判定两副本数据的一致性。本方法选取第一副本作为基准,通过HASH算法将副本的行MD5值在HASH表排列,再将第二副本的行MD5值与第一副本HASH表存储的行MD5值进行碰撞比对,当比对数据量很大时,通过比对数据的区块化,对区块逐一比对,进而判定两副本数据的一致性;本发明通过划区比对的方法,缩短了传统方法对行MD5值进行排序的时间,极大的提高了数据比对的效率。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种基于HASH的数据比对方法及装置。
背景技术
随着信息化建设的高速发展,业务越来越复杂,各个业务之间的耦合性也越来越强。常常会出现不同的业务需要访问同一份数据,在这种情况下,被各个业务访问的数据也就成了热点数据,数据访问的竞争会使得一些业务处于等待状态,导致业务性能的下降。为了解决这个问题,通常的处理方法是将这份数据做成多个副本,每个业务访问不同的数据副本。而这种情况下,各个副本的数据一致性显得尤为重要。
数据比对是数据一致性检查的一项重要手段。通常的数据比对方法,分为四个步骤:1、以表为单位,获取每个数据副本中的数据;2、以行为单位,计算每行数据的MD5(Message-Digest Algorithm 5,消息摘要算法)值;3、以表为单位,对表中数据的MD5码进行排序;4、以表为单位,逐一对两个副本中的MD5进行比对,如果存在不一致的MD5值,则判断存在数据不一致。
上述数据比对方法中,在对表数据生成的MD5进行排序时,通常使用快排/堆排序。这种比对方法在数据量不大的情况下,速度比较快,但是随着数据规模的增加,MD5值的排序花费的时间越来越多,严重影响了数据的比对速度。
鉴于此,缩短数据比对过程中因排序所花费的时间,是本技术领域亟待解决的问题。
发明内容
本发明实施例解决了上述现有技术存在的问题,提供了一种基于HASH的数据比对方法及装置。本方法选取第一副本作为基准,通过HASH算法将第一副本内的行MD5值数据在HASH表排列,再将第二副本的行MD5值与第一副本HASH表存储的行MD5值数据进行碰撞,当比对数据量很大时,对需要比对的数据进行划区,逐区进行比对,进而判定两副本数据的一致性;本发明通过划分区域的比对方法,缩短了传统方法对行MD5值数据进行排序所花费的时间,极大的提高了数据比对的效率。
本发明采用如下技术方案:
第一方面,本发明提供了一种基于HASH的数据比对方法,包括:
获取热点数据的所有副本;
分别抽取各自副本数据库的数据,并计算每行的MD5值;
设置各自副本的MD5缓冲区,并将各自副本的行MD5值数据存放在对应的缓冲区内,得到各自副本对应的数据比对表;
选取所有副本中任一副本作为第一副本,以缓冲区为单位,利用HASH算法将比对表内的行MD5值数据存入HASH表对应的位置区,并按照数据的大小顺序对相同位置区内的数据进行排列,从而完成第一副本的数据比对表在HASH表中的插入;
选取除第一副本外的任一副本作为第二副本,通过判定第二副本比对表数据量的大小,选取对应的比对方法进行数据比对,判定第一副本与第二副本数据的一致性。
优选的,所述获取热点数据的所有副本具体步骤包括:
将被多个业务访问的数据设定为热点数据;
根据访问热点数据的业务数目,创建与业务数目数量相应的数据副本。
优选的,所述设置各自副本的MD5缓冲区具体包括:根据行MD5值数据的第一个字节数字的取值范围划分缓冲区,并对缓冲区进行编号。
优选的,所述将各自副本的行MD5值数据存放在对应的缓冲区内具体包括:
获取每个缓冲区的内存容量;
将行MD5值数据存放在对应缓冲区,当行MD5值数据所占的内存小于缓冲区的内存容量时,直接将行MD5值数据存放在缓冲区内;当行MD5数据值所占的内存大于缓冲区的内存容量时,并且,缓冲区存满时,数据工具将缓冲区内的行MD5数据文件保存在本地磁盘内,使用缓冲区相同的编号对保存在本地磁盘的数据文件进行编号,此时,释放缓冲区进行后面的数据的存储。
优选的,所述数据比对表包括:缓冲区内的行MD5值数据比对表以及当行MD5值数据所占的内存大于缓冲区的内存容量时,所存放在本地磁盘内的行MD5值数据比对表。
优选的,所述数据的大小顺序实际为行MD5值数据字符串的排列顺序。
优选的,得到各自副本对应的数据比对表后,通过识别本地磁盘是否存有第一副本内的行MD5值数据间接判断所述第二副本比对表数据量大小,具体步骤为:识别本地磁盘数据是否存有第一副本的行MD5值数据,若是则判定数据量大,若否则判定数据量小。
优选的,所述选取对应的比对方法是基于第二副本比对表数据量的大小进行的,具体为:
当第二副本比对表数据量小时,将第一副本所有缓冲区的行MD5值数据一起插入HASH内,获取HASH表;然后逐一将第二副本内的行MD5值数据与第一副本HASH表内的行MD5值数据进行碰撞,碰撞后,删除第一副本与第二副本相同的行MD5值数据,直至将第二副本内所有的行MD5值数据碰撞完为止,并删除第一副本与第二副本碰撞成功的行MD5值数据;
当第二副本比对表数据量大时,选取第一副本的任一缓冲区作为第一缓冲区,并将第一缓冲区以及带有与第一缓冲区相同编号的本地磁盘内的行MD5数据文件插入HASH表内;然后逐一将第二副本内的缓冲区和本地磁盘含有与缓冲区相同编号文件中的行MD5值数据与第一副本HASH表内的行MD5值数据进行碰撞,将第二副本的第一缓冲区和带有与第一缓冲区相同编号的本地行MD5值数据磁盘文件中的行MD5值数据碰撞完,然后选取除第一缓冲区外的其它缓冲区进行碰撞,并删除HASH表内碰撞成功的行MD5值数据,直至将第一副本与第二副本内的所有行MD5值数据碰撞完为止。
优选的,所述判定第一副本与第二副本数据的一致性是在碰撞完成的基础上的,判定过程的具体步骤为:
判断第一副本HASH表内行MD5值数据是否存在剩余或第二副本是否存在碰撞不成功;若第一副本HASH表内行MD5值数据没有剩余,并且,第二副本碰撞都成功,则判定第一副本与第二副本数据具有一致性,否则判定第一副本与第二副本数据不具有一致性。
第二方面,本发明还提供了一种基于HASH的数据比对装置,用于实现第一方面所述的基于HASH的数据比对方法,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的基于HASH的数据比对方法。
第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的基于HASH的数据比对方法。
本发明不仅可以实现两副本之间数据的比对,也可以实现多副本之间的数据比对。任意选取一个基准副本,然后利用本发明方法将其它副本逐一与基准副本进行比对,进而得出不一致的副本;若都不一致,则可能基准副本在热点数据生成副本的过程中丢失/添加了一些数据,此时可以更换新的基准副本,然后使用本发明的方法,逐一对新的基准副本和其它的副本进行比对,进而实现多副本比对的目的。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于HASH的数据比对方法流程图;
图2是本发明实施例提供的副本比对表的获取方法流程图;
图3是本发明实施例提供的一种基于HASH的数据划分缓冲区的方法示意图;
图4是本发明实施例提供的一种基于HASH的数据比对方法流程图;
图5是本发明实施例提供的一种基于HASH的数据比对方法流程图;
图6是本发明实施例提供的一种基于HASH的数据比对方法流程图;
图7是本发明实施例提供的一种基于HASH的数据比对方法流程图;
图8是本发明实施例提供的一种基于HASH的数据比对方法流程图;
图9是本发明实施例提供的一种基于HASH的数据比对方法流程图;
图10是本发明实施例提供的行MD5值存储在HASH表内的过程示意图;
图11是本发明实施例提供的一种基于HASH的数据比对装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种基于HASH的数据比对方法,如图1所示,具体步骤如下:
步骤101:获取热点数据的所有副本。
本发明实施例中热点数据表示同时被多个业务访问的数据,获取热点数据的过程实际上是监听热点数据的过程,通过监听热点数据和相关业务的进程以及两者间的交互,来判所监听数据是否为热点数据。获取热点数据的所有副本是后面进行副本之间数据比对的准备步骤。
步骤102:分别抽取各自副本数据库的数据,并计算每行的MD5值。
在进行副本数据之间的比对前,需要选取一个可以追踪的变量,并且不同的数据显示的输出值应不相同,在不同副本内的相同数据应显示相同的输出值。而MD5算法可以为任何文件(不管其大小、格式、数量)产生一个独有的“数字指纹”,通过检查不同副本内的“数字指纹”是否一致来判定两副本的一致性。在实际比对的过程中,选取行作为每个副本之间数据比对的最小单位,获取副本的行MD5值数据,再将不同副本内的行MD5值数据进行逐一对比,实现不同副本之间的比对目的。
步骤103:设置各自副本的MD5缓冲区,并将各自副本的行MD5值数据存放在对应的缓冲区内,得到各自副本对应的数据比对表。
如图2所示,表示副本比对表获取的流程图,一般情况下,如果副本数据量比较小(数据量的大小判定会在后面进行说明),只需将各副本中获取的行MD5数据进行排序,然后将不同副本间的行MD5值数据进行逐一比对,此时可以两副本间进行比对,通过两副本之间数据的比对方式,直到所有的副本比对完成;也可以将所有的副本一起比对完成,通过不同副本的行MD5值数据的是否完全相同来判定不同副本间数据的一致性。当副本数据量很大,为了减少行MD5值数据排序所花费的时间,本发明实施例对副本设置MD5缓冲区,并按照相应的规则将行MD5值数据放入相应的缓冲区内,通过设置缓冲区的方式,并进行编号,实现副本数据的区块化。通过对不同副本内的相同编号区的行MD5值数据比对,缩短行MD5值数据排序所花费的时间。
步骤104:选取所有副本中任一副本作为第一副本,以缓冲区为单位,利用HASH算法将比对表内的行MD5值数据存入HASH表对应的位置区,并按照数据的大小顺序对相同位置区内的数据进行排列,从而完成第一副本的数据比对表在HASH表中的插入。
在进行副本的行MD5值数据排序过程中,满足同一区规则的行MD5值数据都会分配到同一个区,但没有对同一个区内的MD5值数据进行排序,加大了比对过程的难度,使得比对的时间增加,降低了比对的效率。本发明实施例将副本内的各缓冲区的行MD5值数据,通过HASH算法,以区为单位在HASH表内进行排序并存储。实际完成的是比对表内的行MD5值数据存储在HASH表的对应区内。
步骤105:选取除第一副本外的任一副本作为第二副本,通过判定第二副本比对表数据量的大小,选取对应的比对方法进行数据比对,判定第一副本与第二副本数据的一致性。
副本数据量的大小决定比对方法的选取,当数据量很小,将第一副本所有缓冲区的行MD5值数据,利用HASH算法将所有的行MD5值数据排序在一张HASH表内,再逐一将第二副本中的行MD5值数据与第一副本的HASH表数据进行碰撞,直至所有的行MD5值数据碰撞完为止;当数据量很大,选取第一副本作为基准,利用HASH算法,以区为单位得到第一副本的HASH表并进行排序。然后选取第二副本内的行MD5值数据与含有相同区号的第一副本HASH表内行MD5值数据进行碰撞,同区内的行MD5值数据逐一碰撞完,再逐区进行,直至比对完所有的区为止。通过第二副本中的所有行MD5值数据是否都在第一副本的HASH表内存在,进而判定两副本数据的一致性。
多个业务同时访问一个数据时,在本优选实施例中对获取热点数据的有进一步实现方式的展示。例如,步骤101可以进一步细化,如图3所示,具体包括如下步骤:
步骤1011:将被多个业务访问的数据设定为热点数据。
步骤1012:根据访问热点数据的业务数目,创建与业务数目数量相应的数据副本。
其中,热点数据表示同时被多个业务访问的数据。为了使每个业务能同时访问热点数据,而业务之间不发生串扰或滞后的情况,通常会预先创建与业务数目相等的副本。
所述设置各自副本的MD5缓冲区具体包括:根据行MD5值数据的第一个字节数字的取值范围划分缓冲区,并对缓冲区进行编号。
如图4所示,设置副本MD5缓冲区需要将副本内所有的行MD5值数据都存入缓冲区,基于行MD5值的第一个字节数字的表示范围(一个字节的表示范围为0-255),设置相应数目的缓冲区。本发明实施例将缓冲区设置为256个区,并标号为0-255,并根据行MD5值的第一个字节数字,存放到对应的缓冲区内。
进一步的,如图5所示,所述将各自副本的行MD5值数据存放在对应的缓冲区内具体包括:
步骤201:获取每个缓冲区的内存容量。
步骤202:将行MD5值数据存放在对应缓冲区,当行MD5值数据所占的内存小于缓冲区的内存容量时,直接将行MD5值数据存放在缓冲区内;当行MD5值数据所占的内存大于缓冲区的内存容量时,并且,缓冲区存满时,数据工具将缓冲区内的行MD5值数据文件保存在本地磁盘内,使用缓冲区相同的编号对保存在本地磁盘的数据文件进行编号,此时,释放缓冲区进行后面的数据的存储。
本发明实施例中,MD5缓冲区的每个区的容量大小可以根据系统进行配置(一般默认256M),MD5缓冲区起到缓存行MD5值数据的作用。步骤202可以理解为数据的存储/写入缓冲区或磁盘的规则。为了方便后面对本方案的说明,引入行MD5值数据所占的内存与缓冲区的内存容量大小的比较,此处“行MD5值数据所占的内存”表示副本存入缓冲区之前对应缓冲区编号的数据,假定在存入缓冲区之前,已经将副本的数据按缓冲区编号的子数据进行了划分,通过子数据所占的内存与缓冲区容量比较,可以判定行MD5值数据所占的内存与缓冲区的内存容量的大小关系。在实际操作过程中,很难测量副本存入缓冲区之前对应缓冲区编号的数据,一般通过动态存储判定副本内需要存入相应编号的缓冲区的MD5值数据量与缓冲区容量的大小关系,当某个编号的缓冲区存储/写入的行MD5值数据达到缓冲区的内存容量(每个行MD5值的长度为16字节,缓冲区的内存与每个行MD5值所占的内存比值为每个缓冲区最大容纳的行MD5值数目)时,表示行MD5值数据所占的内存大于缓冲区的内存容量,此时,将缓冲区内的行MD5值数据文件保存在本地磁盘内,当缓冲区得以释放后,缓冲区再进行后续数据的存储/写入。
进一步的,所述数据比对表包括:缓冲区内的行MD5值数据比对表以及当行MD5值数据所占的内存大于缓冲区的内存容量时,所存放在本地磁盘内的行MD5值数据比对表。
其中,由行MD5值数据组成的比对表包括缓冲区内的部分和本地磁盘内的部分。但要说明的一点,当副本数据量少(副本内的数据存在缓冲区,并且没有数据在本地磁盘上存储)时,此时比对表只有缓冲区的部分。
进一步的,所述数据的大小顺序实际为行MD5值数据字符串的排列顺序。
以第一副本作为基准,将第一副本的比对表通过HASH算法存入HASH表内(后面在实施例会进一步说明存入规则),按行MD5值字符串的排列顺序对HASH表内同一位置的行MD5值进行排列。例如:在HASH表内,编号为3的区域存在行MD51、MD52和MD53,相应字符串为:0xbaf685bd7a2b7c2d93ecaa1a59e95d、0xe9587e52f6e83e873f33fa6cd2d36d和0xf98117c5f3c733e09b6c6ad5b72896,从字符串的数字可以看出MD51<MD52<MD53,所以3个行MD5值在3区内的排列顺序为:MD51,MD52,MD53。
进一步的,得到各自副本对应的数据比对表后,通过识别本地磁盘是否存有第一副本内的行MD5值数据间接判断所述第二副本比对表数据量大小,如图6所示,具体步骤为:
步骤301:识别本地磁盘数据是否存有第一副本的行MD5值数据。
步骤302:若是则判定数据量大,若否则判定数据量小。
第一副本与第二副本都是由相同的热点数据做成的,两者具有相同的数据量级(基本相同)。在本发明实施例中,将第一副本作为基准,对第一副本设置缓冲区,并将相应缓冲区编号的行MD5值数据利用HASH算法排序在HASH表内。在进行两副本比对之前,可以得知第一副本的数据量大小,通过第一副本数据量的大小进而可以判断第二副本数据量的大小。
进一步的,所述选取对应的比对方法是基于第二副本比对表数据量的大小进行的,具体为:
如图7所示,表示数据量较小时的基于HASH的数据比对方法流程图。当第二副本比对表数据量小时,将第一副本所有缓冲区的行MD5值数据一起插入HASH内,获取HASH表;然后逐一将第二副本内的行MD5值数据与第一副本HASH表内的行MD5值数据进行碰撞,碰撞后,删除第一副本与第二副本相同的行MD5值数据,直至将第二副本内所有的行MD5值数据碰撞完为止,并删除第一副本与第二副本碰撞成功的行MD5值数据。
如图8所示,表示数据量较大时的基于HASH的数据比对方法流程图。当第二副本比对表数据量大时,选取第一副本的任一缓冲区作为第一缓冲区,并将第一缓冲区以及带有与第一缓冲区相同编号的本地磁盘内的行MD5数据文件插入HASH表内;然后逐一将第二副本内的缓冲区和本地磁盘含有与缓冲区相同编号文件中的行MD5值数据与第一副本HASH表内的行MD5值数据进行碰撞,将第二副本的第一缓冲区和带有与第一缓冲区相同编号的本地行MD5值数据磁盘文件中的行MD5值数据碰撞完,然后选取除第一缓冲区外的其它缓冲区进行碰撞,并删除HASH表内碰撞成功的行MD5值数据,直至将第一副本与第二副本内的所有行MD5值数据碰撞完为止。
本发明利用第一副本间接判定第二副本的数据量,在设置缓冲区的过程中,对于副本内的行MD5值数据没有在本地磁盘上存储/写入的副本而言(判定数据量小),选取将第一副本所有的数据插入HASH表内,然后逐一将第二副本中的行MD5值数据与第一副本HASH表内的行MD5值数据进行碰撞;若副本内行MD5值数据有在本地磁盘存储/写入的副本而言(判定数据量大),需要划区进行碰撞比对,此时的HASH表由一系列带有编号的子HASH表组成。将第二副本内一个区的行MD5值数据与第一副本含有相同编号的子HASH表内进行碰撞比对比对,然后逐区碰撞比对,直到所有的行MD5值数据碰撞比对完为止。
进一步的,所述判定第一副本与第二副本数据的一致性是在碰撞完成的基础上的,如图9所示,判定过程的具体步骤为:
步骤401:判断第一副本HASH表内行MD5值数据是否存在剩余或第二副本是否存在碰撞不成功。
步骤402:若第一副本HASH表内行MD5值数据没有剩余,并且,第二副本碰撞都成功,则判定第一副本与第二副本数据具有一致性,否则判定第一副本与第二副本数据不具有一致性。
本发明在完成第二副本内所有行MD5值数据碰撞之后,会删除碰撞成功的行MD5值数据(第一副本与第二副本内相同的行MD5值数据)。在第二副本碰撞完成时,会存在两种结果判断,第一种为:第一副本的HASH表完成碰撞并删除两副本相同行MD5值数据后,是否还有剩余的行MD5值数据。第二种为:第二副本碰撞完以后,第二副本有没有出现碰撞不成功的行MD5值数据。当第一副本的HASH表没有剩余的行MD5值数据,并且,第二副本的所有行MD5值数据与第一副本HASH表内的行MD5值数据碰撞都成功时,表示第一副本与第二副本数据具有一致性;否则,其它情况都表示第一副本与第二副本不具有一致性。
由于本发明所有副本均来源于同一热门数据,通过副本间的比对可以判定副本间的一致性。在本发明实施例中,通过数据量的大小,判定比对的类型。对于数据量小的副本,在比对中采用插入行MD5值数据与基准副本HASH表内数据进行逐一碰撞,虽与传统比对方法不同,但比对所花的时间基本差不多(比对速度都很快),当副本数据量十分巨大时,通过划区的方式,对逐区进行比对,极大的缩短了传统方法对行MD5值数据排序所花费的时间,提高了数据比对的效率。
实施例2
为了更好的阐明本发明,在本实施例针对实施例1的步骤104如何利用HASH算法将行MD5值数据存入HASH表对应位置做进一步阐述。
如图10所示,表示行MD5值数据存入HASH表相应位置的示意图。首先根据装置的配置设置HASH表桶的数目(不同系统可以设置不同的表桶总数),在使用的过程中需要提前获取系统HASH表桶(HASH表桶表示HASH表内设置的区块,表桶内存有跳表,跳表用于存放通过HASH算法获取的行MD5值数据)的个数HZ,并对表桶从0至HZ-1进行编号(0占据了一个编号,所以最大编号为HZ-1),此编号方法为了与键值数字的组成相对应(满足每个键值通过相应规则计算后都能存储在HASH表的跳表内);然后获取行MD5值的字节数值,并将最后四个字节数字作为键值(K)带入位置关系函数:f(K)=K%HZ中,位置关系函数内K表示行MD5值的最后四个字节的键值数字值,HZ表示最大的表桶数目,%为取余运算,通过位置关系计算,位置关系函数得到的小数点后的数字对应HASH表桶的编号,当位置关系函数小数点后没有数字或为零时,将此行MD5值存入编号为0的HASH表桶内。通过取余数的方式获取每个行MD5值数据对应的HASH表桶位置;再利用字符串的大小对相同桶内的行MD5值数据进行排序。例如:系统配置的表桶个数HZ为10000(最大表桶编号为:9999),行MD5值最后四个字节为305419896(0x12345678),f(0x12345678)=305419896%10000=9896,通过%进行运算(取小数点后面的数字),将此行MD5值存入编号为9896的HASH桶跳表内。实施例1中已经对于相同桶内的不同行MD5值的排序做了说明,通过将字符串的先后排列顺序对相应编号对应的跳表内的行MD5值进行排序存储。
实施例3
如图11所示,是本发明实施例的基于HASH的数据比对的装置架构示意图。本实施例的基于HASH的数据比对装置包括一个或多个处理器21以及存储器22。其中,图11中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图11中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的基于HASH的数据比对方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行基于HASH的数据比对方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的基于HASH的数据比对方法,例如,执行以上描述的图1-10所示的各个步骤。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于HASH的数据比对方法,其特征在于,包括:
获取热点数据的所有副本;
分别抽取各自副本数据库的数据,并计算每行的MD5值;
设置各自副本的MD5缓冲区,并将各自副本的行MD5值数据存放在对应的缓冲区内,得到各自副本对应的数据比对表;
选取所有副本中任一副本作为第一副本,以缓冲区为单位,利用HASH算法将比对表内的行MD5值数据存入HASH表对应的位置区,并按照数据的大小顺序对相同位置区内的数据进行排列,从而完成第一副本的数据比对表在HASH表中的插入;
选取除第一副本外的任一副本作为第二副本,通过判定第二副本比对表数据量的大小,选取对应的比对方法进行数据比对,判定第一副本与第二副本数据的一致性。
2.根据权利要求1所述的基于HASH的数据比对方法,其特征在于,所述获取热点数据的所有副本具体步骤包括:
将被多个业务访问的数据设定为热点数据;
根据访问热点数据的业务数目,创建与业务数目数量相应的数据副本。
3.根据权利要求1所述的基于HASH的数据比对方法,其特征在于,所述设置各自副本的MD5缓冲区具体包括:根据行MD5值数据的第一个字节数字的取值范围划分缓冲区,并对缓冲区进行编号。
4.根据权利要求1所述的基于HASH的数据比对方法,其特征在于,所述将各自副本的行MD5值数据存放在对应的缓冲区内具体包括:
获取每个缓冲区的内存容量;
将行MD5值数据存放在对应缓冲区,当行MD5值数据所占的内存小于缓冲区的内存容量时,直接将行MD5值数据存放在缓冲区内;当行MD5值数据所占的内存大于缓冲区的内存容量时,并且,缓冲区存满时,数据工具将缓冲区内的行MD5值数据文件保存在本地磁盘内,使用缓冲区相同的编号对保存在本地磁盘的数据文件进行编号,此时,释放缓冲区进行后面的数据的存储。
5.根据权利要求1所述的基于HASH的数据比对方法,其特征在于,所述数据比对表包括:缓冲区内的行MD5值数据比对表以及当行MD5值数据所占的内存大于缓冲区的内存容量时,所存放在本地磁盘内的行MD5值数据比对表。
6.根据权利要求1所述的基于HASH的数据比对方法,其特征在于,所述数据的大小顺序实际为行MD5值数据字符串的排列顺序。
7.根据权利要求4所述的基于HASH的数据比对方法,其特征在于,得到各自副本对应的数据比对表后,通过识别本地磁盘是否存有第一副本内的行MD5值数据间接判断所述第二副本比对表数据量大小,具体步骤为:识别本地磁盘数据是否存有第一副本的行MD5值数据,若是则判定数据量大,若否则判定数据量小。
8.根据权利要求7所述的基于HASH的数据比对方法,其特征在于,所述选取对应的比对方法是基于第二副本比对表数据量的大小进行的,具体为:
当第二副本比对表数据量小时,将第一副本所有缓冲区的行MD5值数据一起插入HASH内,获取HASH表;然后逐一将第二副本内的行MD5值数据与第一副本HASH表内的行MD5值数据进行碰撞,碰撞后,删除第一副本与第二副本相同的行MD5值数据,直至将第二副本内所有的行MD5值数据碰撞完为止,并删除第一副本与第二副本碰撞成功的行MD5值数据;
当第二副本比对表数据量大时,选取第一副本的任一缓冲区作为第一缓冲区,并将第一缓冲区以及带有与第一缓冲区相同编号的本地磁盘内的行MD5数据文件插入HASH表内;然后逐一将第二副本内的缓冲区和本地磁盘含有与缓冲区相同编号文件中的行MD5值数据与第一副本HASH表内的行MD5值数据进行碰撞,将第二副本的第一缓冲区和带有与第一缓冲区相同编号的本地行MD5值数据磁盘文件中的行MD5值数据碰撞完,然后选取除第一缓冲区外的其它缓冲区进行碰撞,并删除HASH表内碰撞成功的行MD5值数据,直至将第一副本与第二副本内的所有行MD5值数据碰撞完为止。
9.根据权利要求8所述的基于HASH的数据比对方法,其特征在于,所述判定第一副本与第二副本数据的一致性是在碰撞完成的基础上的,判定过程的具体步骤为:
判断第一副本HASH表内行MD5值数据是否存在剩余或第二副本是否存在碰撞不成功;若第一副本HASH表内行MD5值数据没有剩余,并且,第二副本碰撞都成功,则判定第一副本与第二副本数据具有一致性,否则判定第一副本与第二副本数据不具有一致性。
10.一种基于HASH的数据比对装置,其特征在于,包括:
至少一个处理器;
至少一个存储器;
其中,所述至少一个处理器以及所述至少一个存储器相互通信连接,所述至少一个存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明权利要求1-9任一项权利要求所提供的基于HASH的数据比对方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111506096.5A CN114297193A (zh) | 2021-12-10 | 2021-12-10 | 一种基于hash的数据比对方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111506096.5A CN114297193A (zh) | 2021-12-10 | 2021-12-10 | 一种基于hash的数据比对方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114297193A true CN114297193A (zh) | 2022-04-08 |
Family
ID=80967188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111506096.5A Pending CN114297193A (zh) | 2021-12-10 | 2021-12-10 | 一种基于hash的数据比对方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114297193A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115632877A (zh) * | 2022-12-01 | 2023-01-20 | 成都九洲电子信息系统股份有限公司 | 一种大规模pcap数据正确性验证方法、系统及存储介质 |
-
2021
- 2021-12-10 CN CN202111506096.5A patent/CN114297193A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115632877A (zh) * | 2022-12-01 | 2023-01-20 | 成都九洲电子信息系统股份有限公司 | 一种大规模pcap数据正确性验证方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107807982B (zh) | 一种异构数据库的一致性校验方法及装置 | |
CN109213432B (zh) | 利用日志结构合并树将数据写入的存储设备及其方法 | |
US20010051954A1 (en) | Data updating apparatus that performs quick restoration processing | |
US7818749B2 (en) | Data processing method, data processing apparatus, and data processing program | |
CN112988763B (zh) | 一种以部分散列Key为索引的Kv数据库存储与查询方法 | |
US7584173B2 (en) | Edit distance string search | |
CN110675255A (zh) | 在区块链中并发执行交易的方法和装置 | |
CN114297193A (zh) | 一种基于hash的数据比对方法及装置 | |
CN104077078B (zh) | 读存储区、更新存储区的方法及装置 | |
CN110706108B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN110196786B (zh) | 数据库回滚同步中内存的控制方法及设备 | |
US20040044683A1 (en) | Data compiling method | |
US11151157B2 (en) | Database management method | |
CN108304467A (zh) | 用于文本间匹配的方法 | |
US7130857B2 (en) | Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program | |
US6205546B1 (en) | Computer system having a multi-pointer branch instruction and method | |
JP2010061604A (ja) | 整合性検証システム、検証方法およびプログラム | |
JP6776937B2 (ja) | 情報処理装置、方法及びプログラム | |
CN116910028A (zh) | 数据迁移方法、数据迁移装置及计算机可读存储介质 | |
CN113342819A (zh) | 一种卡号生成方法、装置、设备及存储介质 | |
KR20220164409A (ko) | 유전체 서열 정렬 가속 장치 및 방법 | |
CN117785057A (zh) | 数据存储方法和装置、计算机可读存储介质及电子装置 | |
CN115951825A (zh) | 应用于数据中心的信息管理方法及系统 | |
JPH02122328A (ja) | ファイル作成方式 | |
CN113535714A (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 |