一种基于默克尔树的数据对比方法、设备及介质与流程

文档序号:33188141发布日期:2023-02-04 07:21阅读:188来源:国知局
一种基于默克尔树的数据对比方法、设备及介质与流程

1.本技术涉及数据对比领域,具体涉及一种基于默克尔树的数据对比方法、设备及介质。


背景技术:

2.在产业数字化的进程中,数据的传输、同步、对比是一类不可或缺的操作,在进行数据库同步、迁移,区块链账本同步等相关操作时,一致性对比是保障数据传输、同步等过程有效的必要步骤。
3.如果直接对数据整体计算哈希值进行对比,那么如果数据不一致时难以对数据不一致的具体位置进行定位,重新传输整个数据需要耗费巨大成本,传统的数据对比方法通常对数据进行切块,然后进行对比,这一方法在对数据正确性进行验证和对数据不一致位置进行定位的过程中,需要耗费较大的时间成本,必须对每一块的数据哈希值进行两两对比后才能确定是否所有数据都准确无误。
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.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.默克尔树是一种二叉树,它的叶子节点为含有的基础信息,每一中间节点都是它的2个子节点的哈希,最终形成一个根节点,也是由它的2个子节点的哈希形成,代表着这树的“顶端”。因此在使用默克尔树进行数据对比时,将两边的数据使用相同的方法构造为一棵默克尔树,首先对比根节点的值,如果根节点一致则表明数据一致,如果根节点不同,再逐级向下,直至定位到发生错误的叶子节点位置。使用这种方法,定位到错误节点所需要的对比次数比直接进行两两对比少很多,对比次数是分块数量的对数。但是为了储存整棵默克尔树,与传统方法相比需要消耗更多的存储空间,为分块数量的平方;当然也需要分块数量平方数量级的哈希值计算,不过由于哈希值计算的效率很高,因此我们忽略这部分运算量造成的影响。
28.对于不同的使用场景,不同的服务器性能,不同的时效性要求的情况下,单一使用传统的哈希值一一对比或默克尔树的方法,无法最佳的匹配客观需求。本专利提出基于默克尔树的一种具备复杂度平衡机制的数据一致性对比方法,使用多棵而非一棵默克尔树进行数据一致性对比,对于固定数量的数据块数,通过调整使用的默克尔树数量,平衡对比需要的时间复杂度和空间复杂度。
29.在此方法的基础上,本专利对其时间复杂度和空间复杂度分别进行了定量分析,在实际使用中根据面对的具体场景,调整默克尔树的数量进行数据一致性对比,提升对比效率。
30.以下结合附图,详细说明本技术各实施例提供的技术方案。
31.如图1及图2所示,本技术实施例提供一种基于默克尔树的数据对比方法,包括:
32.s101:确定待对比的第一数据源和第二数据源,所述第一数据源与所述第二数据源中的数据是一一对应的。
33.这里的第一数据源和第二数据源就是需要进行数据对比任务的两个数据源,当然,数据对比任务也可以是多个数据源进行对比,但是对比过程中也可以简化为两两对比的模式,最后得出各个数据源之间的数据差异点。再进行数据对比任务时,本方法主要适用于数据条数相同的两个数据源进行对比,或是两个数据源仅仅相差一条数据的情况。如果相差多条数据,虽然可以通过第一次筛查,排除缺少的数据后再次进行对比来完成,但是重复内容太多,效率不高。例如,当进行数据迁移时,为了保证迁移前后,数据并未发生改变,第一数据源可以是迁移前的数据库,第二数据源可以是迁移后的数据库。
34.s102:使用相同的切分方法分别对所述第一数据源与所述第二数据源进行切割,得到第一数据块与第二数据块,所述第一数据块与所述第二数据块数量相同。
35.确定两个数据源之后,需要对数据源进行切割,以使每个数据源都被分割成n个数据块,为方便称呼,第一数据源切割后得到的数据块称为第一数据块,第二数据源切割后得到的数据块称为第二数据块。这里要注意的是,需要按照相同的顺序对数据源进行切割,保证第一数据块与对应的第二数据块内,数据的排列顺序相同。
36.s103:获取数据对比任务的精度要求、所述第一数据源及所述第二数据源的大小、服务器性能,确定默克尔树的构造数量。
37.得到两组互相对应的数据块之后,需要决定构造默克尔树的数量,参考因素至少要有数据对比任务的精度要求、数据源的大小、服务器的大致性能等因素,从而人为确定默克尔树的构造数量m。
38.s104:使用相同的构造方法分别处理所述第一数据块与所述第二数据块,得到第一默克尔树组与第二默克尔树组,所述第一默克尔树组与所述第二默克尔树组内默克尔树的数量相同。
39.决定好默克尔树的构造数量之后,使用相同的构造方法对n个第一数据块以及n个第二数据块进行构造,再进行构造时,需要注意尽量似的每个默克尔树的叶子节点数量尽量平均,并且使用对应的数据块按照相同的顺序进行构造,得到第一默克尔树组与第二默克尔树组。其中,第一默克尔树组与第一数据源对应,第二默克尔树组与第二数据源对应,且第一默克尔树组与第二默克尔树组中的默克尔树一一对应。
40.s105:根据所述第一默克尔树组与所述第二默克尔树组,确定所述第一数据源与所述第二数据源是否一致。
41.在一个实施例中,如果对第一数据源、第二数据源使用不同的切分方法,可能会导致数据块中数据条数不同、顺序不同,进而导致构造的默克尔树的各个节点的哈希值不同,从而使得默克尔树失去数据对比的功效。基于此,在对数据源进行切割时,可以按照数据的条数进行切割,例如每8条数据作为一个数据块。这样从前到后按照数据的条数进行切割既可以保证数据的顺序不会出错,还能保证每个数据块中数据的条数相同,从而保证默克尔树的数据验证作用。
42.在一个实施例中,因为传统的哈希值一一对比方法空间复杂度需求较低,时间复杂度要求较高;普通的默克尔树对比的方法时间复杂度较低,但空间复杂度较高。为了合理平衡数据对比任务在确定构造默克尔树的数量m时之前,还可以先确定服务器的剩余存储
空间,再根据服务器的剩余存储空间人为调整默克尔树的数量m。
43.在一个实施例中,在构造第一及第二默克尔树组时,首先需要确定每组默克尔树组中需要构造的默克尔树的数量m,并确定每棵默克尔树对应的数据块,获取数据块中包含的数据。计算每条数据的哈希值,并根据哈希值生成默克尔树。以一个包含8条源数据的数据源为例,假定n=4,m=2对该数据源构造默克尔树,则首先应该将8条源数据切割为4个数据块,再构造两棵默克尔树。在构造第一棵默克尔树时,分别对4条源数据进行哈希,分别获得相应的哈希值n1、n2、n3、n4,n1、n2、n3、n4作为第一棵默克尔树的叶子节点。n1和n2经过哈希运算得到的哈希值n5、n3和n4经过哈希运算的得到的哈希值n6作为第一默克尔树的中间节点。n5和n6经过哈希运算得到的哈希值作为第一默克尔树的根哈希。至此,生成完整的第一默克尔树,按照这种方式,生成两组默克尔树组。
44.在一个示例中,对两组默克尔树组进行比较时,首先需要根据构造时的顺序,确定两个默克尔树组中默克尔树的一一对应关系。进行比较时,是对应默克尔树的比较。进行比较时,先比较默克尔树的根哈希值,如果两棵默克尔树的根哈希值一致,就说明这两棵默克尔树对应的数据一致。
45.进一步地,如果两棵默克尔树的根哈希值不同,则说明这两棵默克尔树所对应的数据中不一致,此时需要进一步确定到底是哪一条源数据不同,就要对比这两棵默克尔树的中间节点的哈希值,以进一步缩小范围。直至最后筛查出具体是哪条源数据不一致。
46.在一个实施例中,在筛查出第一数据源与第二数据源具体哪条源数据不一致之后,还应在两个默克尔树组的比较结果中展示出来,以方便工作人员确定差异数据的具体存在位置。
47.使用本技术提供的一种基于默克尔树的数据对比方法,主要的优势在于可以根据n的值选择合适的m,平衡对比过程消耗的时间复杂度和空间复杂度。对于传统的哈希值一一对比方法,消耗的时间复杂度为o(n),空间复杂度为o(n)。对于标准的默克尔树对比方法,消耗的时间复杂度为o(log2(2*n)),空间复杂度为o(n2)。使用基于默克尔树的一种具备复杂度平衡机制的数据值执行对比方法,消耗的时间复杂度为o(m*log2(2*n/m)),空间复杂度为o(m*(n/m)2)。通过复杂度分析可以看出,对于固定的n调整m的值,时间复杂度随着m的增长而变大,空间复杂度随着m的增长而变小,当m为1时与标准的默克尔树对比方法相同,当m为n时与传统的哈希值一一对比方方法相同。
48.如图3所示,本技术实施例还提供了一种基于默克尔树的数据对比设备,包括:
49.至少一个处理器;以及,
50.与所述至少一个处理器通信连接的存储器;其中,
51.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
52.确定待对比的第一数据源和第二数据源,所述第一数据源与所述第二数据源中的数据是一一对应的;使用相同的切分方法分别对所述第一数据源与所述第二数据源进行切割,得到第一数据块与第二数据块,所述第一数据块与所述第二数据块数量相同;获取数据对比任务的精度要求、所述第一数据源及所述第二数据源的大小、服务器性能,确定默克尔树的构造数量;使用相同的构造方法分别处理所述第一数据块与所述第二数据块,得到第一默克尔树组与第二默克尔树组,所述第一默克尔树组与所述第二默克尔树组内默克尔树
的数量相同;根据所述第一默克尔树组与所述第二默克尔树组,确定所述第一数据源与所述第二数据源是否一致。
53.本技术实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
54.确定待对比的第一数据源和第二数据源,所述第一数据源与所述第二数据源中的数据是一一对应的;使用相同的切分方法分别对所述第一数据源与所述第二数据源进行切割,得到第一数据块与第二数据块,所述第一数据块与所述第二数据块数量相同;获取数据对比任务的精度要求、所述第一数据源及所述第二数据源的大小、服务器性能,确定默克尔树的构造数量;使用相同的构造方法分别处理所述第一数据块与所述第二数据块,得到第一默克尔树组与第二默克尔树组,所述第一默克尔树组与所述第二默克尔树组内默克尔树的数量相同;根据所述第一默克尔树组与所述第二默克尔树组,确定所述第一数据源与所述第二数据源是否一致。
55.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
56.本技术实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
57.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
58.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
59.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
60.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
61.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网
络接口和内存。
62.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
63.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
64.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
65.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1