数据查验方法、电子装置和存储介质与流程

文档序号:24699205发布日期:2021-04-16 12:16阅读:51来源:国知局
数据查验方法、电子装置和存储介质与流程

1.本申请涉及数据处理领域,特别是涉及数据查验方法、电子装置和存储介质。


背景技术:

2.相关技术为了解决区块链存证臃肿问题,把原文件和哈希值进行分离存储,链上只存储数据哈希值,链下存储原文件,只要对比链上和链下的数据哈希值,就能确定该数据是否被存证过,即该链下数据是否可信。区块链由于自身存储结构问题,对引入的关系型数据在检索查询上会有性能问题,但是如果不对链下数据进行查验,直接引入链外的关系型数据库,会存在关系型数据库篡改的风险。
3.假设链下数据下标为1号、2号、3号、6号、9号需要被验证是否已被存证,则相关技术在基于区块链的链上数据对链下数据进行查验时,计算各项链下数据的哈希值,读取链上对应各项数据的哈希值,将链下计算得到的哈希值和链上的对应指定数据的哈希值进行一一对比。无论是全量对比数据哈希值还是部分对比数据哈希值,在区块链中都会涉及和数据哈希值对比项数相当的多次数据读取操作,验证效率低较低。
4.目前针对相关技术中,两个数据库之间存在数据查验效率低的问题,尚未提出有效的解决方案。


技术实现要素:

5.本申请实施例提供了一种数据查验方法、电子装置和存储介质,以至少解决相关技术中两个数据库之间存在数据查验效率低的问题。
6.第一方面,本申请实施例提供了一种数据查验方法,包括:获取第一数据库中的多项待查验数据,以及获取各项待查验数据映射至第二数据库之后相对应的目标数据的编号,其中,各所述目标数据依照所述编号顺序存储;确定所述多项目标数据按照所述编号顺序合并之后得到的至少一个目标区间,其中,各所述目标区间为连续区间;获取对应于各所述目标区间的父区间的哈希值和兄弟区间的哈希值,并将各所述父区间的哈希值减去对应兄弟区间的哈希值,得到对应目标区间的哈希值,其中,各所述目标区间所包含的数据项为对应父区间所包含的数据项减去对应兄弟区间所包含的数据项;获取所述多项待查验数据按照存储顺序合并之后得到的且和所述目标区间对应的待查验区间,并计算各所述待查验区间的哈希值;将各所述目标区间的哈希值和对应待查验区间的哈希值进行对比,根据对比结果确定所述待查验数据是否可信。
7.在其中一些实施例中,所述目标区间满足第一预设条件,所述第一预设条件包括:在同一目标区间的所述目标数据中,依序排列的每两个目标数据之间的编号的差值不大于第一预设阈值,在不同目标区间中,第一目标区间的右端点值和第二目标区间的左端点值的差值大于所述第一预设阈值。
8.在其中一些实施例中,在确定所述多项目标数据按照所述编号顺序合并之后得到的至少一个目标区间之后,所述方法还包括:判断是否存在两个相近的目标区间,其中,所述两个相近的目标区间满足第二预设条件,所述第二预设条件包括:所述第一目标区间的右端点值和所述第二目标区间的左端点值的差值小于第二预设阈值,且所述第一目标区间和所述第二目标区间的长度不大于第三预设阈值;在判断到存在两个相近的目标区间的情况下,将所述两个相近的目标区间进行顺序合并。
9.在其中一些实施例中,获取对应于各所述目标区间的父区间的哈希值和兄弟区间的哈希值包括:根据各所述目标区间中末项目标数据的编号,确定对应于各所述目标区间的父区间,并获取预先存储的所述父区间的哈希值;根据各所述目标区间中首项目标数据的编号,确定对应于各所述目标区间的兄弟区间,并获取预先存储的所述兄弟区间的哈希值。
10.在其中一些实施例中,在获取各所述目标区间的父区间和兄弟区间的哈希值之前,所述方法还包括:确定所述第二数据库中新增数据按照顺序存储而生成的编号,并将所述新增数据的编号写入所述第二数据库中;根据所述新增数据的编号,确定新增区间和与所述新增区间相差一个数据单位的历史区间,并获取所述历史区间的哈希值,其中,所述新增区间和所述历史区间中首项数据的编号均为所述第二数据库中存储的数据的起始编号,所述新增区间的末项数据的编号为所述新增数据的编号,所述历史区间的末项数据的编号为在所述新增数据之前相间隔一个数据单位的数据的编号;根据预设哈希函数计算所述新增数据的哈希值,并根据所述新增数据的哈希值和所述历史区间的哈希值,确定以及存储所述新增区间的哈希值。
11.在其中一些实施例中,根据所述新增数据的哈希值和所述历史区间的哈希值,确定以及存储所述新增区间的哈希值包括:将所述新增数据的哈希值和所述历史区间的哈希值相加,得到哈希值之和,采用预设取模参数对所述哈希值之和进行取模处理,得到所述新增区间的哈希值;或者,采用预设取模参数对所述新增数据的哈希值进行取模处理得到第一取模结果,采用所述预设取模参数对所述历史区间的哈希值进行取模处理得到第二取模结果,采用所述预设取模参数对所述第一取模结果和所述第二取模结果之和进行取模处理,得到所述新增区间的哈希值。
12.在其中一些实施例中,获取所述多项待查验数据按照存储顺序合并之后得到的且和所述目标区间对应的待查验区间,并计算各所述待查验区间的哈希值包括:根据预设哈希函数对各所述待查验数据进行计算,得到多项待查验哈希值;将所述多项待查验哈希值按照存储顺序合并,得到对应于所述目标区间的待查验区间;将同一待查验区间的所述待查验哈希值相加,得到该待查验区间的哈希值。
13.在其中一些实施例中,获取所述多项待查验数据按照存储顺序合并之后得到的且和所述目标区间对应的待查验区间,并计算各所述待查验区间的哈希值包括:将所述多项待查验数据按照存储顺序合并,得到对应于所述目标区间的待查验区间,其中,各所述待查验区间为连续区间,且各所述待查验区间的左端点值不大于右端点值;获取对应于各所述待查验区间的父区间的哈希值和兄弟区间的哈希值,并将各所述父区间的哈希值减去对应兄弟区间的哈希值,得到对应待查验区间的哈希值,其中,各所述待查验区间所包含的数据项为对应父区间所包含的数据项减去对应兄弟区间所包含的数据项。
14.在其中一些实施例中,在将各所述目标区间的哈希值和对应待查验区间的哈希值进行对比之前,所述方法还包括:将各所述待查验区间中待查验数据的哈希值相加,采用预设取模参数对各所述待查验数据的哈希值之和进行取模处理,得到各所述待查验区间的哈希值;或者,采用预设取模参数对同一待查验区间的各所述待查验数据的哈希值进行取模处理,得到取模结果,采用所述预设取模参数对同一待查验区间的各所述取模结果之和进行取模处理,得到所述待查验区间的哈希值。
15.第二方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述第一方面所述的数据查验方法。
16.第三方面,本申请实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述第一方面所述的数据查验方法。
17.相比于相关技术,本申请实施例提供的数据查验方法、电子装置和存储介质,解决了两个数据库之间存在数据查验效率低的问题,提升了查验效率。
18.本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
19.此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的数据查验方法的流程图;图2是本申请实施例的数据查验方法的终端的硬件结构框图。
具体实施方式
20.为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造
或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
21.在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
22.除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
23.本实施例提供了一种数据查验方法,图1是根据本申请实施例的数据查验方法的流程图,如图1所示,该流程包括如下步骤:步骤s101,获取第一数据库中的多项待查验数据,以及获取各项待查验数据映射至第二数据库之后相对应的目标数据的编号,其中,各目标数据依照编号顺序存储。
24.第一数据库和第二数据库关联,第一数据库和第二数据库协同工作,第一数据库包括关系型数据库,第二数据库包括区块链。在关系型数据库没有经人为篡改的情况下,待查验数据和目标数据应当是一致的,一旦经人为篡改,则将导致两边的数据不一致。
25.第一数据库和第二数据库中的数据存在映射关系,即待查验数据和目标数据是一一对应的,因此,各项待查验数据之间的顺序关系和各项目标数据之间的顺序关系一致,只要确定各项待查验数据的存储顺序,便能确定第二数据库中对应目标数据的编号。
26.不妨用表示待查验数据,用表示目标数据,其中i和k均为编号,i和k均取自然数。假设各项待查验数据分别为、、、、,则对应于待查验数据的目标数据分别为、、、、。
27.需要说明的是,i和k可以相同也可以不同,只要满足各项待查验数据之间的顺序关系和各项目标数据之间的顺序关系一致即可。
28.步骤s102,确定多项目标数据按照编号顺序合并之后得到的至少一个目标区间,其中,各目标区间为连续区间。
29.连续区间是指区间内的数据的编号是依次连续的,且目标区间内的数据项数可以是单项也可以是多项。目标区间可以是单个也可以是多个,但是目标区间个数总是不大于目标数据项数。
30.以、、、、为例,合并多项目标数据的方式有多种。
31.可以是将多项目标数据全部顺序合并至单个目标区间,得到的目标区间为[1,9],则[1,9]所包含的数据项为第二数据库中编号1至编号9的数据。
[0032]
也可以是将多项目标数据顺序合并至两个目标区间,得到的目标区间分别为[1,3]、[6,9],则[1,3]所包含的数据项为第二数据库中编号1至编号3的数据,[6,9] 所包含的数据项为第二数据库中编号6至编号9的数据。
[0033]
还可以将多项目标数据顺序合并至三个目标区间,得到的目标区间分别为[1,3]、[6,6]、[9,9]。
[0034]
本实施例并不限定合并多项目标数据的方式。需要说明的是,本实施例并不是读取多项目标数据,将目标数据在物理空间中进行顺序合并,而仅仅是根据多项目标数据的编号确定目标区间。
[0035]
步骤s103,获取对应于各目标区间的父区间的哈希值和兄弟区间的哈希值,并将各父区间的哈希值减去对应兄弟区间的哈希值,得到对应目标区间的哈希值,其中,各目标区间所包含的数据项为对应父区间所包含的数据项减去对应兄弟区间所包含的数据项。
[0036]
父区间的哈希值和兄弟区间的哈希值是预先存储在第二数据库中的,以[1,3]为例,则[1,3]的父区间可以为[0,3],兄弟区间为[0,0],[1,3]所包含的数据项为[0,3]所包含的数据项减去[0,0]所包含的数据项,三个区间满足区间可加性原则。
[0037]
以下将对区间可加性原则进行介绍。
[0038]
设f(start,end)为区间函数,f包括两个输入参数,分别为区间的左端点值和右端点值,其中,start代表区间中首项数据的编号,end代表区间中末项数据的编号,f函数具有区间可加性。
[0039]
其中f(0,0)代表编号为0的数据,即。
[0040]
步骤s104,获取多项待查验数据按照存储顺序合并之后得到的且和目标区间对应的待查验区间,并计算各待查验区间的哈希值。
[0041]
假设目标区间分别为[1,3]、[6,6]、[9,9],则将、、、、照存储顺序合并之后得到的待查验区间分别为[1,3]、[6,6]、[9,9]。
[0042]
各待查验区间的哈希值的计算方法有多种,以下将以其中一种为例进行说明。先根据第二数据库采用的哈希算法对各待查验数据进行计算,得到多项待查验哈希值,将[1,3]中的待查验哈希值相加,得到[1,3]的哈希值,将[6,6]中的待查验哈希值相加,得到[6,6]的哈希值,将[9,9]中的待查验哈希值相加,得到[9,9]的哈希值。
[0043]
步骤s105,将各目标区间的哈希值和对应待查验区间的哈希值进行对比,根据对比结果确定待查验数据是否可信。
[0044]
例如,将目标区间[1,3]的哈希值和待查验区间[1,3]的哈希值进行对比,将目标区间[6,6]的哈希值和待查验区间[6,6]的哈希值进行对比,将目标区间[9,9]的哈希值和待查验区间[9,9]的哈希值进行对比,如果各目标区间的哈希值和对应待查验区间的哈希值相同,则确定待查验数据可信,否则,确定待查验数据不可信。
[0045]
在本实施例中,在确定目标区间的过程中,不需要读取目标数据,能够省略对目标数据的读取操作,节省在数据读取方面的时间,节省计算机资源开销。对于区块链而言,由于区块链本身是可信且不可变的,所以目标区间的哈希值也为真实可信的,无需再次读取各项目标数据来重新计算哈希值,因此,能够将单项数据哈希值的逐项对比转化为区间哈希值的对比,而区间哈希值的对比减少了数据哈希值的读取次数,从而减少了计算机的资源开销,把对数据库的无序遍历转变为对数据库的顺序遍历,提升了遍历速度。
[0046]
通过上述步骤,解决了两个数据库之间存在数据查验效率低的问题,提升了查验效率。
[0047]
在上述实施例中,在一些情况下,目标数据合并之后得到的目标区间越少,则查验效率会越高,但是,在有些情况下,目标数据之间间隔较远,若将所有目标数据合并为一个目标区间,则会降低查验的准确度。例如,目标数据分别为、、、、,待查验数据分别为、、、、,如果两边分别均合并成至单个区间,即得到目标区间[1,9]和待查验区间[1,9],则会引入非目标数据、、、和非待查验数据、、、,而非待查验数据会干扰原始待查验数据的查验结果。
[0048]
为解决该问题,在其中一些实施例中,目标区间满足第一预设条件,第一预设条件包括:在同一目标区间的目标数据中,依序排列的每两个目标数据之间的编号的差值不大于第一预设阈值,在不同目标区间中,第一目标区间的右端点值和第二目标区间的左端点值的差值大于第一预设阈值。
[0049]
第一预设阈值取正整数,本实施例通过设置第一预设条件,限制了同一目标区间内目标数据之间的最大间隔,以及限制了不同目标区间的最小区间间隔,使得目标区间的长度合适,避免影响查验的准确程度。第一预设阈值可以根据实际需求确定,第一预设阈值越小,引入的非待查验数据的干扰会越少,反之,则相反。
[0050]
假设第一预设阈值取1,则合并、、、、之后得到的目标区间分别为[1,3]、[6,6]、[9,9],其中,、、属于同一目标区间[1,3],、、中依序排列的每两个目标数据之间的编号的差值均不大于1,同理,[6,6]、[9,9]中依序排列的每两个目标数据之间的编号的差值也均不大于1。[1,3]的右端点值为3,[6,6]的左端点值为6,[1,3]的右端点值和[6,6]的左端点值的差值大于1,同理,[1,3]的右端点值和[9,9]的左端点值的差值大于1,[6,6]的右端点值和[9,9]的左端点值的差值大于1。
[0051]
为了进一步优化目标数据的合并机制,在其中一些实施例中,在确定多项目标数据按照编号顺序合并之后得到的至少一个目标区间之后,方法还包括:判断是否存在两个相近的目标区间,其中,两个相近的目标区间满足第二预设条件,第二预设条件包括:第一目标区间的右端点值和第二目标区间的左端点值的差值小于第二预设阈值,且第一目标区间和第二目标区间的长度不大于第三预设阈值;
在判断到存在两个相近的目标区间的情况下,将两个相近的目标区间进行顺序合并。
[0052]
如此设置,能够在合理控制目标区间的长度的前提下,减少目标区间的个数,提升计算速度。
[0053]
假设第二预设阈值为3,第三预设阈值为1。则在上述的目标区间[1,3]、[6,6]、[9,9]中,[6,6]和[9,9]能够合并为[6,9]。需要注意的是,[6,9]是连续区间,包含了、、、。相应的,待查验区间[6,9]包含了、、、,其中,、为非待查验数据,虽然引入了非待查验数据的干扰,但是减少了区间个数,提升了计算速度。
[0054]
第一预设条件和第二预设条件可以根据实际需求确定。
[0055]
在其中一些实施例中,获取对应于各目标区间的父区间的哈希值和兄弟区间的哈希值包括:根据各目标区间中末项目标数据的编号,确定对应于各目标区间的父区间,并获取预先存储的父区间的哈希值;根据各目标区间中首项目标数据的编号,确定对应于各目标区间的兄弟区间,并获取预先存储的兄弟区间的哈希值。
[0056]
以目标区间[1,3]为例,末项目标数据的编号为3,则对应于[1,3]的父区间是[0,3],获取预先存储在第二数据库中的[0,3]的哈希值;首项目标数据的编号为1,则对应于[1,3]的兄弟区间是[0,0],获取预先存储在第二数据库中的[0,0]的哈希值。
[0057]
本实施例可通过区间函数f计算得到目标区间的哈希值,即其中,代表父区间的哈希值,代表兄弟区间的哈希值。
[0058]
以下将介绍在第二数据库中存储区间哈希值的实施例。
[0059]
在其中一些实施例中,在获取各目标区间的父区间和兄弟区间的哈希值之前,方法还包括:确定第二数据库中新增数据按照顺序存储而生成的编号,并将新增数据的编号写入第二数据库中;根据新增数据的编号,确定新增区间和与新增区间相差一个数据单位的历史区间,并获取历史区间的哈希值,其中,新增区间和历史区间中首项数据的编号均为第二数据库中存储的数据的起始编号,新增区间的末项数据的编号为新增数据的编号,历史区间的末项数据的编号为在新增数据之前相间隔一个数据单位的数据的编号;根据预设哈希函数计算新增数据的哈希值,并根据新增数据的哈希值和历史区间的哈希值,确定以及存储新增区间的哈希值。
[0060]
在当前有新增数据要插入第二数据库时,第二数据库通过全局自增的方式顺序存储该新增数据,假设新增数据为,则将编号i写入第二数据库中。根据编号i确定新增区
间[0,i]和历史区间[0,i

1],其中,[0,i

1]的哈希值在存储至第二数据库后得到计算并存储,计算方式同。
[0061]
预设哈希函数为根据需求选择冲突率可以接受的哈希函数,包括但不限于md5算法、sha1算法、bkdrhash算法、aphash算法、djbhash算法。合并新增数据的哈希值和历史区间的哈希值,得到新增区间的哈希值,并将新增数据的哈希值存储至第二数据库中。
[0062]
为避免数据溢出,在其中一些实施例中,根据新增数据的哈希值和历史区间的哈希值,确定以及存储新增区间的哈希值包括:将新增数据的哈希值和历史区间的哈希值相加,得到哈希值之和,采用预设取模参数对哈希值之和进行取模处理,得到新增区间的哈希值。
[0063]
计算公式如下:其中,p代表预设取模参数,预设取模参数可以根据新增数据的哈希值确定,通过将预设取模参数对新增数据的哈希值进行取模处理,能够避免新增区间的哈希值溢出。
[0064]
如果新增数据的哈希值和历史区间的哈希值直接相加后就出现溢出问题,则还可以采用以下方法计算新增区间的哈希值。
[0065]
采用预设取模参数对新增数据的哈希值进行取模处理得到第一取模结果,采用预设取模参数对历史区间的哈希值进行取模处理得到第二取模结果,采用预设取模参数对第一取模结果和第二取模结果之和进行取模处理,得到新增区间的哈希值。
[0066]
计算公式如下:先分别对新增数据的哈希值、历史区间的哈希值取模,再求和,再对第一取模结果和第二取模结果之和进行取模处理,能够得到和前一种新增区间的哈希值的计算方法相同的结果。
[0067]
在其中一些实施例中,获取多项待查验数据按照存储顺序合并之后得到的且和目标区间对应的待查验区间,并计算各待查验区间的哈希值包括:根据预设哈希函数对各待查验数据进行计算,得到多项待查验哈希值;将多项待查验哈希值按照存储顺序合并,得到对应于目标区间的待查验区间;将同一待查验区间的待查验哈希值相加,得到该待查验区间的哈希值。
[0068]
例如,第二数据库采用的预设哈希函数为h,则、、的哈希值分别为h()、h()、h(),将h()、h()、h()相加,得到待查验区间[1,3]的哈希值为。
[0069]
在其中一些实施例中,获取多项待查验数据按照存储顺序合并之后得到的且和目标区间对应的待查验区间,并计算各待查验区间的哈希值包括:将多项待查验数据按照存储顺序合并,得到对应于目标区间的待查验区间,其中,各待查验区间为连续区间,且各待查验区间的左端点值不大于右端点值;
获取对应于各待查验区间的父区间的哈希值和兄弟区间的哈希值,并将各父区间的哈希值减去对应兄弟区间的哈希值,得到对应待查验区间的哈希值,其中,各待查验区间所包含的数据项为对应父区间所包含的数据项减去对应兄弟区间所包含的数据项。
[0070]
待查验区间的生成方式和目标区间的生成方式是相匹配的,基于和目标区间相近的原理,本实施例不再赘述。在本实施例中,第一数据库是一个维护顺序存储的文件或者区间缓存。或者,第一数据库为分布式数据库,待查验数据存储于分布式数据库中,分布式数据库按照自身所合并得到的待查验区间同时计算哈希值,以提升待查验区间的哈希值的计算效率。
[0071]
在其中一些实施例中,在将各目标区间的哈希值和对应待查验区间的哈希值进行对比之前,方法还包括:将各待查验区间中待查验数据的哈希值相加,采用预设取模参数对各待查验数据的哈希值之和进行取模处理,得到各待查验区间的哈希值。
[0072]
假设待查验区间为[1,3],为避免数据溢出,可以按照如下公式计算:其中,p代表预设取模参数,预设取模参数可以根据待查验数据的哈希值确定,通过将预设取模参数对待查验数据的哈希值进行取模处理,能够避免待查验数据的哈希值溢出。
[0073]
如果多项待查验数据的哈希值直接相加后就出现溢出问题,则还可以采用以下方法计算待查验区间的哈希值。
[0074]
采用预设取模参数对同一待查验区间的各待查验数据的哈希值进行取模处理,得到取模结果,采用预设取模参数对同一待查验区间的各取模结果之和进行取模处理,得到待查验区间的哈希值。
[0075]
假设待查验区间为[1,3],计算公式如下:先分别对各项待查验数据的哈希值取模,再求和,再对求得的和进行取模处理,能够得到和前一种待查验区间的哈希值的计算方法相同的结果。
[0076]
下面通过优选实施例对本申请实施例进行描述和说明。
[0077]
在数据新增阶段:在区块链中对新增数据的顺序进行编号,用i表示,i为从0开始的自然数。首先在链上存储数据编号i和数据,并根据就算数据哈希值、交易哈希值和区块哈希值,预设哈希函数h可以根据需求选择冲突率可以接受的函数。并通过预设区间函数f计算从至的区间哈希值,公式如下:其中,p为预设取模参数。
[0078]
在计算得到数据的区间哈希值之后,也将一并存储至区块链中。
[0079]
在关系型数据库中存储数据,并更新数据哈希值、交易哈希值和区块哈希值。关系型数据库自行计算区间函数值并存储。
[0080]
在对关系型数据库的数据进行查询查验阶段:获取多项待查验数据,然后确定区块链中连续的目标区间,比如一个查询可能涉及区块链的编号为1,2,3,6,9,那么连续的目标区间为[1,3],[6,6],[9,9]。如果下标比较靠近,则也可以把[6,6]和[9,9]合并为[6,9],以减少区间,提升计算速度。
[0081]
利用预设区间函数f计算区块链中各目标区间的哈希值:计算区块链中各目标区间的哈希值:计算关系型数据库中待查验区间的哈希值,其中,计算关系型数据库中待查验区间的哈希值,其中,在本实施例中,关系型数据库本身是维护一个顺序存储的文件或者区间缓存;或者,关系型数据库为分布式数据库,待查验数据存储于在分布式数据库中,分布式数据库按照自身所合并得到的待查验区间同时计算哈希值,可以提升待查验区间的计算效率。
[0082]
把关系型数据库计算的各个待查验区间的哈希值请求到区块链中进行查验,因为区块链本身是可信且不可变的,区块链本身只需按照预设区间函数f简单计算对比即可,所以无需再次读取各项目标数据。
[0083]
将区块链中各目标区间的哈希值和关系型数据库中各项待查验区间的哈希值对比,如果都相同,则代表此次查验的数据可信,否则,代表此次查验的数据不可信。
[0084]
上述优选实施例解决了基于区块链对链下数据进行查验时存在查验效率低的问题,提升了查验效率。
[0085]
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0086]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0087]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:s1,获取第一数据库中的多项待查验数据,以及获取各项待查验数据映射至第二数据库之后相对应的目标数据的编号,其中,各目标数据依照编号顺序存储;s2,确定多项目标数据按照编号顺序合并之后得到的至少一个目标区间,其中,各目标区间为连续区间;s3,获取对应于各目标区间的父区间的哈希值和兄弟区间的哈希值,并将各父区间的哈希值减去对应兄弟区间的哈希值,得到对应目标区间的哈希值,其中,各目标区间所包含的数据项为对应父区间所包含的数据项减去对应兄弟区间所包含的数据项;s4,获取多项待查验数据按照存储顺序合并之后得到的且和目标区间对应的待查验区间,并计算各待查验区间的哈希值;s5,将各目标区间的哈希值和对应待查验区间的哈希值进行对比,根据对比结果
确定待查验数据是否可信。
[0088]
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0089]
在一些实施例中,电子装置包括但不限于终端、计算机或者类似的运算装置。以运行在终端上为例,图2是本申请实施例的数据查验方法的终端的硬件结构框图。如图2所示,终端可以包括一个或多个(图2中仅示出一个)处理器202(处理器202可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器204,可选地,上述终端还可以包括用于通信功能的传输设备206以及输入输出设备208。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述终端的结构造成限定。例如,终端还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
[0090]
存储器204可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的数据查验方法对应的计算机程序,处理器202通过运行存储在存储器204内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0091]
传输设备206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括终端的通信供应商提供的无线网络。在一个实例中,传输设备206包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备206可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
[0092]
另外,结合上述实施例中的数据查验方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种数据查验方法。
[0093]
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0094]
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1