CN115952195A - 一种区块链数据溯源查询优化方法 - Google Patents
一种区块链数据溯源查询优化方法 Download PDFInfo
- Publication number
- CN115952195A CN115952195A CN202211711425.4A CN202211711425A CN115952195A CN 115952195 A CN115952195 A CN 115952195A CN 202211711425 A CN202211711425 A CN 202211711425A CN 115952195 A CN115952195 A CN 115952195A
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- cache
- key
- block chain
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种区块链数据溯源查询优化方法,通过引入缓存优化的方法,利用缓存来减少溯源中的磁盘IO次数,提升溯源检索的效率,同时设计了多级缓存结构,解决了在全节点内存资源有限情况下,缓存命中率不高的问题,即在提升缓存命中率的同时兼顾了内存资源的消耗,降低了全节点负担。一种区块链数据溯源查询优化方法首先由网络中节点向区块链全节点发起溯源查询请求,接着在全节点查询缓存,最后对全节点进行一致性校验,实现区块链数据溯源查询。本发明提升了区块链系统的溯源查询效率、查询可信性,具备一定的实用性。
Description
技术领域
本发明属于区块链数据查询技术领域,特别涉及一种区块链数据溯源查询优化方法。
背景技术
随着以太坊,WEB3.0等概念的兴起,其底层核心区块链技术得到了越来越多的关注。“区块链”已走进大众视野,成为社会的关注焦点。区块链技术是运用加密算法、共识机制等技术实现的去中心化分布式存储账本,从本质上来说,区块链是一个分布式共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。区块链以其去中心化、不可篡改、多方共享以及可信溯源等特性为解决数据可信存储问题提供了新的可能。随着区块链技术的应用,越来越多的互联网关键数据会存储在区块链上,其中数据可信溯源也逐渐成为一个热点话题。
在区块链中,共识算法负责数据的写入。现有技术中,在如何提升共识算法效率方面,目前已有很多研究取得了不错的成效,但在对区块链数据库的读取性能,即查询处理、溯源检索方面的研究相对较少。数据溯源是区块链确保数据可信、可追溯的重要特性,其在金融、供应链、数字资产确权等领域都具有不可忽视的应用价值。在目前现有的区块链系统中,数据溯源查询大都采用原始的检索方式,即须从当前区块遍历所有历史区块,或根据数据中PreHash字段向前遍历出数据所有的历史版本,以获得完整的数据溯源链路。
区块链系统原始的溯源查询方式由于采用依次溯源的方法,带来了大量的磁盘IO,大大限制了溯源查询的效率,在如今数据溯源需求日益增加的场景下已显得捉襟见肘。为提升区块链系统的溯源效率、减少溯源查询中的大量磁盘冗余IO,为溯源查询引入缓存机制是一种有效的方法。然而区块链全节点在网络共识、数据存储等方面已消耗了大量的计算和存储资源,在计算存储资源有限的情况下,为全节点设计溯源缓存时存在缓存命中率不高、溯源查询效率较低以及全节点负担过大的问题。
发明内容
为了克服现有技术中存在的不足,本发明提供了一种区块链数据溯源查询优化方法,通过引入多级缓存的方法,利用缓存来减少溯源中的磁盘IO次数,同时设计了多级缓存结构,来缓解现有缓存技术在溯源查询过程中由于全节点内存资源有限而导致的缓存命中率不高,磁盘IO次数没有明显降低的问题;本发明提出的一种区块链数据溯源查询优化方法能够在有限的存储消耗下提升溯源查询缓存命中率、减少溯源查询过程中的磁盘IO次数,以提升数据可信溯源的效率,能够为将来大量区块链溯源应用场景提供更优的高效率查询技术支撑。
本发明的技术方案为:
一种区块链数据溯源查询优化方法,包括步骤如下:
步骤1,输入目标数据标识关键字key,由网络中的节点向区块链全节点发起溯源查询请求,请求包含溯源目标数据标识关键字key,全节点收到请求后,在当前区块链账本中查询出所述key对应数据的最新版本哈希值LatestHash及最新数据LatestData,记为(LatestHash,LatestData);
步骤2,在区块链全节点的缓存中查询步骤1中的key;
步骤2.1,若区块链全节点的缓存中不存在所述key对应的数据,则由(LatestHash,LatestData)在当前区块链账本中依次向前遍历出最新版本的完整溯源链(LatestHash,LatestData)→...(Hash_0,Data_0)并返回,最后将所述遍历得到的完整溯源链添加到所述key对应缓存中,结束对所述key的溯源查询;
步骤2.2,若缓存中存在key对应的数据,则在缓存中检索出key对应的完整溯源链(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),执行步骤3;
步骤3,全节点进行一致性校验,将步骤1得到的LatestHash与步骤2在缓存中检索出的(Hash_n,Data_n)中的Hash_n比对,进行溯源完整性校验;
步骤3.1,若LatestHash与Hash_n一致,则缓存中得到的(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0)即为最新版本的完整溯源链,返回该结果,结束对所述key的溯源查询;
步骤3.2,若LatestHash与Hash_n不一致,则在区块链中由(LatestHash,LatestData)向前检索至(Hash_n,Data_n),得到(LatestHash,LatestData)→...(Hash_n,Data_n),将其添加到所述key对应的缓存中,以保证缓存与区块链账本中数据一致性,并与步骤2在区块链全节点的缓存中检索出的(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0)溯源链拼接成最新版本的完整溯源链(LatestHash,LatestData)→...(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),返回该结果,结束对所述key的溯源查询。
进一步地,所述步骤2全节点中的缓存为多级缓存结构,包括一级缓存和二级缓存,一级缓存中存储某key标识数据的各历史版本哈希值和数据,即(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),二级缓存只存储数据各历史版本的哈希值,即(Hash_n)→(Hash_n-1)...(Hash_0),一级缓存达到存储上限时,触发淘汰降级机制,将查询频率较低的key数据缓存降为二级缓存,二级缓存空间达到上限时,将剔除二级缓存中所有数据,以节省内存空间占用并提高缓存命中率。
进一步地,所述步骤2.1中遍历得到的完整溯源链添加到所述key对应的一级缓存中。
进一步地,所述步骤2.2中,若缓存中存在该key对应的数据,且存在于一级缓存中,则从一级缓存中检索出缓存存储的完整溯源链,即(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0);若数据存在于二级缓存中,则在二级缓存中取出各历史版本的哈希值(Hash_n)→(Hash_n-1)...(Hash_0),再从区块链底层数据库中批量取出各哈希值对应的数据,得到溯源链(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),将其放入一级缓存中,进行缓存升级。
本发明的效果为,与现有技术相比本发明提供了一种区块链数据溯源查询优化方法,在针对区块链数据溯源查询的过程中,引入了缓存优化的方法,减少了数据溯源查询中磁盘IO的交互次数,提升了溯源查询的效率;同时考虑到区块链全节点计算和存储资源的有限,为全节点设计了多级缓存结构,以较小的计算存储资源开销,提高了缓存命中率,提升了溯源查询的效率,具备一定的实用性与应用价值。
附图说明
图1是本发明实施例中一种区块链数据溯源查询优化方法的流程图。
图2是本发明实施例中的区块链数据存储模型图。
图3是本发明实施例中的多级缓存结构图。
图4是本发明对比例中的溯源查询时间对比图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。以下实施例用于说明本发明,但不用来限制本发明的范围。
实施例
采用如图1所示,一种区块链数据溯源查询优化方法,包括步骤如下:
在本发明中,全节点区块链账本中存储着完整的数据,如图2所示,数据由key标识,相同key的不同数据代表同一key标识数据的不同版本,由数据中的PreHash可追溯到数据的上一历史版本,依次追溯到最初的版本即构成该key数据的完整溯源链,即该key数据的历史修改轨迹;
S1:网络中节点向区块链全节点发起溯源查询请求,请求包含溯源目标数据标识关键字key,全节点收到请求后,在当前区块链账本中查询出该key对应数据最新版本哈希及数据(LatestHash,LatestData),具体包括:
S1.1:网络中的节点向区块链全节点发起溯源查询请求,请求包含溯源查询的目标key数据标识,目的在于追溯出key所标识的数据的所有历史版本信息,组成针对该key所标识数据的完整溯源链;
S1.2:全节点处理请求,全节点中存储有当前时刻完整的区块链账本,全节点收到请求后,在当前区块链账本中查询出该key对应数据的最新版本哈希值LatestHash及最新数据LatestData,记为(LatestHash,LatestData)。
S2:全节点查询缓存。特别地,如图3所示,全节点中的缓存为多级缓存结构,由一级缓存和二级缓存组成,一级缓存中存储某key标识数据的各历史版本哈希值和数据,即(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),二级缓存只存储数据各历史版本的哈希值,即(Hash_n)→(Hash_n-1)...(Hash_0),一级缓存达到存储上限时,触发淘汰降级机制,将查询频率较低的key数据缓存降为二级缓存,二级缓存空间达到上限时,将剔除二级缓存中所有数据,以节省存储空间,并提高缓存命中率。由S1请求中的key在缓存中进行查询,具体包括:
S2.1:若缓存中不存在该key对应的数据,则由(LatestHash,LatestData)在当前区块链账本中依次向前遍历出最新版本的完整溯源链(LatestHash,LatestData)→...(Hash_0,Data_0)并返回,最后将该结果添加到该key对应的一级缓存中,结束查询;
S2.2:若缓存中存在该key对应的数据,且存在于一级缓存中,则从一级缓存中检索出缓存存储的溯源链,即(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0);若数据存在于二级缓存中,则在二级缓存中取出各历史版本的哈希值(Hash_n)→(Hash_n-1)...(Hash_0),再从LevelDB中批量取出各哈希值对应的数据,得到溯源链(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),将其放入一级缓存中,进行缓存升级,然后继续执行S3。
其中,LevelDB是一个典型的key-value非关系型数据库,大部分区块链系统中的数据项借助其以数据哈希值为key,数据内容为value进行数据存取。
S3:全节点进行一致性校验,将S1得到的LatestHash与S2从缓存中检索出的Hash_n比对,进行溯源完整性校验,具体包括:
S3.1:若LatestHash与Hash_n一致,则缓存中得到的溯源链(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0)即为最新版本的完整溯源链,返回该结果,结束查询;
S3.2:若LatestHash与Hash_n不一致,则在区块链中由(LatestHash,LatestData)向前检索至(Hash_n,Data_n),得到(LatestHash,LatestData)→...(Hash_n,Data_n),将其添加到该key对应缓存中,以保证缓存与区块链账本中数据一致性,并与S2中缓存中检索出的(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0)溯源链拼接成最新版本的完整溯源链(LatestHash,LatestData)→...(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),返回该结果,结束溯源查询。
对比例
区块链的原始溯源查询方法采用依次溯源的方式,即根据数据域中的PreHash字段依次取出数据的上一历史版本,直至溯出完整的数据历史修改轨迹的链路,获得完整的数据溯源链路,期间数据的存取皆需要较多的磁盘IO。
经实验验证,在溯源查询请求量为10000次/s时,将本发明提出的区块链数据溯源查询优化方法,即本实施例方法与对比例方法的单次溯源平均时间进行对比,如图4所示:
当请求key无重复时,由于缓存基本没有介入,故本实施例方法的溯源时间与对比例方法溯源时间几乎没有差别;当请求key重复占比为30%时,本实施例方法的溯源时间缩减为对比例方法的70%-75%左右;而当请求重复占比升为60%时,缓存命中率提升,本实施例方法的溯源时间进一步缩减为对比例方法溯源时间的50%-60%;且随着请求重复占比不断增高,本实施例方法的溯源时间受溯源版本数增加而增加的趋势逐渐平缓,表现出更优更稳定的性能。
综上所述,本发明提出的区块链数据溯源查询优化方法的溯源效率较区块链采用依次溯源的方式的原始溯源方法有明显提升,同时得益于缓存内存读取操作较磁盘读取而言的高效性,使得所述区块链数据溯源查询优化方法具有实用性。
本文中采用了具体个例对本发明的原理及实施方案进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (4)
1.一种区块链数据溯源查询优化方法,其特征在于,包括步骤如下:
步骤1,输入目标数据标识关键字key,由网络中的节点向区块链全节点发起溯源查询请求,请求包含溯源目标数据标识关键字key,全节点收到请求后,在当前区块链账本中查询出所述key对应数据的最新版本哈希值LatestHash及最新数据LatestData,记为(LatestHash,LatestData);
步骤2,在区块链全节点的缓存中查询步骤1中的key;
步骤2.1,若区块链全节点的缓存中不存在所述key对应的数据,则由(LatestHash,LatestData)在当前区块链账本中依次向前遍历出最新版本的完整溯源链(LatestHash,LatestData)→...(Hash_0,Data_0)并返回,最后将所述遍历得到的完整溯源链添加到所述key对应缓存中,结束对所述key的溯源查询;
步骤2.2,若缓存中存在key对应的数据,则在缓存中检索出key对应的完整溯源链(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),执行步骤3;
步骤3,全节点进行一致性校验,将步骤1得到的LatestHash与步骤2在缓存中检索出的(Hash_n,Data_n)中的Hash_n比对,进行溯源完整性校验;
步骤3.1,若LatestHash与Hash_n一致,则缓存中得到的(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0)即为最新版本的完整溯源链,返回该结果,结束对所述key的溯源查询;
步骤3.2,若LatestHash与Hash_n不一致,则在区块链中由(LatestHash,LatestData)向前检索至(Hash_n,Data_n),得到(LatestHash,LatestData)→...(Hash_n,Data_n),将其添加到所述key对应的缓存中,以保证缓存与区块链账本中数据一致性,并与步骤2在区块链全节点的缓存中检索出的(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0)溯源链拼接成最新版本的完整溯源链(LatestHash,LatestData)→...(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),返回该结果,结束对所述key的溯源查询。
2.根据权利要求1所述一种区块链数据溯源查询优化方法,其特征在于,所述步骤2全节点中的缓存为多级缓存结构,包括一级缓存和二级缓存,一级缓存中存储key标识数据的各历史版本哈希值和数据,即(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),二级缓存只存储数据各历史版本的哈希值,即(Hash_n)→(Hash_n-1)...(Hash_0),一级缓存达到存储上限时,触发淘汰降级机制,将查询频率较低的key数据缓存降为二级缓存,二级缓存空间达到上限时,将剔除二级缓存中所有数据。
3.根据权利要求2所述一种区块链数据溯源查询优化方法,其特征在于,所述步骤2.1中遍历得到的完整溯源链添加到所述key对应的一级缓存中。
4.根据权利要求2所述一种区块链数据溯源查询优化方法,其特征在于,所述步骤2.2中,若缓存中存在该key对应的数据,且存在于一级缓存中,则从一级缓存中检索出缓存存储的完整溯源链,即(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0);若数据存在于二级缓存中,则在二级缓存中取出各历史版本的哈希值(Hash_n)→(Hash_n-1)...(Hash_0),再从区块链底层数据库中批量取出各哈希值对应的数据,得到溯源链(Hash_n,Data_n)→(Hash_n-1,Data_n-1)...(Hash_0,Data_0),将其放入一级缓存中,进行缓存升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211711425.4A CN115952195A (zh) | 2022-12-29 | 2022-12-29 | 一种区块链数据溯源查询优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211711425.4A CN115952195A (zh) | 2022-12-29 | 2022-12-29 | 一种区块链数据溯源查询优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115952195A true CN115952195A (zh) | 2023-04-11 |
Family
ID=87287265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211711425.4A Pending CN115952195A (zh) | 2022-12-29 | 2022-12-29 | 一种区块链数据溯源查询优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952195A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116319095A (zh) * | 2023-05-19 | 2023-06-23 | 天津工业大学 | 一种高通量网络环境下的信标植入检测方法 |
CN116737743A (zh) * | 2023-08-14 | 2023-09-12 | 中煤科工集团信息技术有限公司 | 煤炭热量检测系统 |
-
2022
- 2022-12-29 CN CN202211711425.4A patent/CN115952195A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116319095A (zh) * | 2023-05-19 | 2023-06-23 | 天津工业大学 | 一种高通量网络环境下的信标植入检测方法 |
CN116319095B (zh) * | 2023-05-19 | 2023-07-28 | 天津工业大学 | 一种高通量网络环境下的信标植入检测方法 |
CN116737743A (zh) * | 2023-08-14 | 2023-09-12 | 中煤科工集团信息技术有限公司 | 煤炭热量检测系统 |
CN116737743B (zh) * | 2023-08-14 | 2023-11-24 | 中煤科工集团信息技术有限公司 | 煤炭热量检测系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115952195A (zh) | 一种区块链数据溯源查询优化方法 | |
US8732143B2 (en) | Reducing locking during database transactions | |
Ahn et al. | ForestDB: A fast key-value storage system for variable-length string keys | |
WO2022134128A1 (zh) | 多版本数据存储方法、装置、计算机设备及存储介质 | |
CN110134335B (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
WO2021179782A1 (zh) | 一种提升数据库一体机执行效率的方法、设备、装置和介质 | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
US20230418811A1 (en) | Transaction processing method and apparatus, computing device, and storage medium | |
CN111352589B (zh) | 一种分布式存储的方法、装置、设备及可读介质 | |
Tao et al. | Cost models for overlapping and multiversion structures | |
Qu et al. | Hybrid indexes by exploring traditional B-tree and linear regression | |
CN114896250B (zh) | 一种键值分离的键值存储引擎索引优化方法及装置 | |
CN115203211A (zh) | 一种唯一哈希序号生成方法和系统 | |
CN113535711B (zh) | 一种基于LSM-Tree的分层索引数据管理方法及系统 | |
CN112487027B (zh) | 基于区块链电子交易的高效数据查询实现方法 | |
CN114218277A (zh) | 一种关系数据库的高效查询方法和装置 | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
CN113204564A (zh) | 一种数据库高频sql查询方法、系统和存储介质 | |
CN112487111A (zh) | 基于kv数据库的数据表关联方法及装置 | |
CN115437836A (zh) | 一种元数据处理方法及相关设备 | |
Lan et al. | A Simple Yet High-Performing On-disk Learned Index: Can We Have Our Cake and Eat it Too? | |
CN114398007B (zh) | 一种基于LSM-tree的KV存储系统读性能的缓存优化方法 | |
Zhao et al. | MVLevelDB: Using Log-Structured Tree to Support Temporal Queries in IoT | |
Tao et al. | Cost models for overlapping and multi-version B-trees | |
Vakili et al. | Speed up Cassandra read path by using Coordinator Cache |
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 |