CN112800065A - 基于改进区块存储结构的高效数据检索方法 - Google Patents
基于改进区块存储结构的高效数据检索方法 Download PDFInfo
- Publication number
- CN112800065A CN112800065A CN202110182161.7A CN202110182161A CN112800065A CN 112800065 A CN112800065 A CN 112800065A CN 202110182161 A CN202110182161 A CN 202110182161A CN 112800065 A CN112800065 A CN 112800065A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- tree
- query
- layer
- 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 22
- 238000012795 verification Methods 0.000 claims abstract description 12
- 238000003780 insertion Methods 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- QSHDDOUJBYECFT-UHFFFAOYSA-N mercury Chemical compound [Hg] QSHDDOUJBYECFT-UHFFFAOYSA-N 0.000 abstract description 4
- 229910052753 mercury Inorganic materials 0.000 abstract description 4
- 238000010276 construction Methods 0.000 abstract description 2
- 238000002474 experimental method Methods 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于改进区块存储结构的高效数据检索方法,根据目前区块链存储和检索存在的效率问题,从区块结构出发,首先提出了基于区块链***的三层检索模型;其次,根据B+树的查找稳定性能,查询路径短的优点,结合默克尔树的优良验证性能,改进了默克尔树的存储结构,在节点上添加相应的索引数据,在保证验证效率的前提下提高了数据检索的能力,并且支持范围查询,设计了对应的构建算法和查询算法;最后,通过实验测试了提出树结构的有效性和可用性,有良好的查询性能和稳定性能。
Description
技术领域
本发明涉及区块链中数据检索方法,主要针对区块链中区块的数据结构的设计,设计了基于区块链的数据检索模型,属于区块链领域。
背景技术
区块链技术具有去中心化和不可篡改性等特征,能安全有效的降低新任成本且安全的存储数据,是目前计算机领域研究的热点。区块链具有公开透明性、可验证性、数据可追溯性和不可篡改等特性。是由时间戳信息由一个个区块前后连接组成的一个去中心化分布式账本,区块数据的同步主要依靠共识机制。
区块链技术起源于中本聪在2008年发表的论文《比特币:一种点对点电子现金***》,奠定了加密货币的基础,自此比特币以及其他很多加密货币已成为行业和学术界的流行语。作为最成功的的加密货币之一,比特币获得了巨大的成功,其资本市场在2016年已达到1000千万美元。区块链技术作为比特币的底层支持技术,具有公开透明不可篡改等特性,主要由密码学的技术保证安全性和可靠性。在安全性方面,主要包括数据签名技术、公钥私钥体制思想、时间戳机制;在可靠性方面,主要由共识机制来实现节点和数据的验证。解决了拜占庭将军问题,例如工作量共识机制、股权证明等分布式共识机制。解决了传统的信任问题与双花攻击问题,减少了传统的信任经济成本;在数据存储方面,主要采用默克尔树技术。Androulaki等人介绍了超级账本体系结构:一个可扩展的真正区块链***,支持模块化共识协议和身份认证等,允许***针对特定信任模型和应用场景进行定制化使用,除此之外,也是第一个支持运行标准通用编程语言运行的区块链***,支持更多高级编程语言进行合约开发部署,并且将“智能合约”规则放在容器中运行。McConaghy等人提出了BigChainDB,大规模分散数据库,通过结合区块链技术的分散控制、不可篡改性等特性,把区块链技术引到了传统的数据库上,提高了数据的安全性,提出一种区块链数据库一致性策略,并且在区块链的存储量问题上,提升数据了容量支持更大数据的存储。Wilkinson等人提出了端到端的区块链存储网络,用户在不依赖第三方数据提供商下传输和共享数据,取消了中央控制,并以定期密码检查文件可用性和完整性。Dinh等人搭建了一套***框架用于测试区块链***,对数据模型、共识算法和超级分类账进行了全面评估,将存储、执行引擎和共识层相互分离,然后独立地优化和扩展它们,并且测试了UStore数据的查询能力,帮助开发者识别***瓶颈并相应地改进平台。Tsai等人分析了区块链应用***在一致性、可扩展性、数据库方面的需求,以可扩展性为目标,开发了双链架构模式的“北航链”。Li等人把MongoDB作为存储库提出了一种高效的区块链检索方法,支持范围查询和Top-K查询,具有较好的灵活性,但是Li等人也是利用链上链下数据库结合的方式实现高效检索,采用MongoDB数据库存储数据,把区块链的数据以K-V键值对形式存储到链下,利用其特性进行查询,并没有解决区块链本身的查询效率问题,并且增加了通信量。
默克尔树是一种二叉树,由一组叶节点、一组中间节点和一个根节点构成,主要应用于快速验证;B+树B树的变种,应用比较广泛,主要用在数据库索引查询和文件***中。B+树主要节点有三类:叶子节点、根节点、内部节点,具有良好的搜索特性,是一棵多路搜索树,支持范围查询。
发明内容
本方案根据目前区块链存储和检索存在的效率问题,从区块结构出发,首先提出了基于区块链***的三层检索模型;其次,根据B+树的查找稳定性能,查询路径短的优点,结合默克尔树的优良验证性能,改进了默克尔树的存储结构,在节点上添加相应的索引数据,在保证验证效率的前提下提高了数据检索的能力,并且支持范围查询,设计了对应的构建算法和查询算法;最后,通过实验测试了提出树结构的有效性和可用性,有良好的查询性能和稳定性能。数据检索模型主要划分为3层,分别包括用户层、查询层和存储层。如图1所示。
用户发起数据查询请求,首先访问用户层,从用户层的缓存数据中查询,如果在缓存中找到了符合的数据,则查找完成,返回结果;否则,继续访问查询层。查询层根据节点的稳定性以及计算能力分工处理查询业务和普通的节点验证业务,查询数据返回给用户层。存储层位于最底层,主要负责存储区块链数据,对查询层的查询请求作出响应。针对区块的存储结构,提出了基于改进的默克尔树的存储结构。
基于M_H+树结构的区块链存储结构结合默克尔树的高效验证和B+树的快速检索的特点,数据结构如图2所示。节点主要改进了默克尔树的存储结构,主要有哈希值和索引地址和端点索引值大小几个部分组成。
主要设计了***算法和查找算法。
M_H+树建立算法步骤:
步骤1:确定B+树的结构;
步骤2:根据步骤1结果,取出B+树的叶子数据N;
步骤3:判断N是否是M_H+树叶子节点;
步骤4:***N节点;
步骤5:重复步骤2;
算法:M_H+树建立算法
Input:构建好的B+树结构;
Output:M_H+树结构存储模型;
1.确认构建好的B+树结构;
2.据B+树的结构,从最底层节点处理数据;
3.for(B+树节点N){
4.if(叶子节点){
5.哈希数据;
6.}
7.else{
8.最小值索引获取;
9.最大值索引获取;
10.记录此节点的minval、maxval值;
11.数据哈希;
12.}
13.N=N-1;
14.}
15.最后得到的根作为结果保存在区块头中;
查询算法步骤如下:
步骤1:输入区块数据查询索引index;
步骤2:确定区块头;
步骤2:访问区块头数据获取minval,maxval;
步骤3:判断index是否在区间minval-maxval之间,进入下一层;
步骤4:返回数据或者找不到数据;
算法:M_H+树查询算法
Input:区块链数据,查询条件索引Index;
Output:交易结果。
1.If(节点不满足稳定条件){
2.找到邻近的超级节点
3.}
4.For(遍历区块){
5.访问区块头树根minval,maxval值;
6.while(minval≤Index≤maxval){
7.If(叶子节点){
8.For(遍历叶子节点){
9.If(找到index){
10.Return数据;
11.}
12.}
13.}
14.获取新的节点信息;
15.更新minval、maxval;
16.}
17.访问下一个区块;
}
目前区块链的存储结构中,区块体主要是基于默克尔树结构的存储,默克尔树是一颗具有验证速度快的树,但是在查询方面需要遍历全部数据,效率低。本发明技术基于区块存储结构,设计了改进的默克尔树存储结构,主要基于B+树的优点:查找性能稳定、查询路径短、支持范围查询。不改变原来的快速验证的同时提高了检索速度。查找性能:对数据的检索效率几乎维持在一个平均的时间内,不存在不同的数据检索时间差别很大的问题。查询路径短:根据B+树的特性,三层结构的B+树能存储上千条数据,而默克尔树则需要十层以上树的高度。范围查询:所设计的树结构,底层是由链表连接起来的有序的数据,能根据数据范围查询一整段数据。
附图说明
图1数据检索模型。
图2数据结构。
图3新树结构。
具体实施方式
以下结合附图和实施例对本发明进行详细说明,实施方式主要包括树的建立和数据的检索过程。下面是建立树的过程:
要***的关键字为key。
1)如果是空树,则新建一个叶子结点,把记录***叶子节点,此时这个叶子结点也是根结点,***操作结束。
2)针对叶子类型结点:根据key值找到叶子结点,向这个叶子结点***记录。***后,若当前结点key的个数不大于m-1,则***结束。否则将这个叶子结点***成左右两个叶子结点,左叶子结点包含前m/2个记录,右结点包含剩下的记录,将第m/2+1个记录的key进位到父结点中(父结点一定是索引类型结点),进位到父结点的key左孩子指针向左结点,右孩子指针向右结点。将当前结点的指针指向父结点,然后执行下一步。
3)针对索引类型结点:若当前结点key的个数小于等于m-1,则***结束。否则,将这个索引类型结点***成两个索引结点,左索引结点包含前(m-1)/2个key,右结点包含m-(m-1)/2个key,将第m/2个key进位到父结点中,进位到父结点的key左孩子指向左结点,进位到父结点的key右孩子指向右结点。将当前结点的指针指向父结点,然后重复操作。
如图3为B+树***示意图,依次***关键字40、45、62。
查找方式首先从应用层查询,检索查询数据是否已经在缓存中,如果存在直接返回数据,否则去查询层寻找超级节点查询,通过超级节点去存储层查询,存储层的存储结构是改进的默克尔树结构,通过查询算法查询。
如图3所示的M_H+树中,要查找索引地址为69的数据,首先从根节点判断,索引范围25-99,满足69所在的区间,根据访问根节点(2589),寻找第一个孩子节点,找到子树的节点范围25-69的节点,满足区间,根据(255067)节点信息,找到第三个子节点,遍历找到结果并返回数据信息给查找节点。
Claims (3)
1.基于改进区块存储结构的高效数据检索方法,实现该方法的数据检索模型主要划分为3层,分别包括用户层、查询层和存储层;
其特征在于:用户发起数据查询请求,首先访问用户层,从用户层的缓存数据中查询,如果在缓存中找到了符合的数据,则查找完成,返回结果;否则,继续访问查询层;查询层根据节点的稳定性以及计算能力分工处理查询业务和普通的节点验证业务,查询数据返回给用户层;存储层位于最底层,负责存储区块链数据,对查询层的查询请求作出响应。
2.根据权利要求1所述的基于改进区块存储结构的高效数据检索方法,其特征在于:基于M_H+树结构的区块链存储结构结合默克尔树的高效验证和B+树的快速检索的特点;节点改进默克尔树的存储结构,有哈希值和索引地址和端点索引值大小几个部分组成;
M_H+树建立步骤:
步骤1:确定B+树的结构;
步骤2:根据步骤1结果,取出B+树的叶子数据N;
步骤3:判断N是否是M_H+树叶子节点;
步骤4:***N节点;
步骤5:重复步骤2;
查询步骤如下:
步骤1:输入区块数据查询索引index;
步骤2:确定区块头;
步骤2:访问区块头数据获取minval,maxval;
步骤3:判断index是否在区间minval-maxval之间,进入下一层;
步骤4:返回数据或者找不到数据。
3.根据权利要求1所述的基于改进区块存储结构的高效数据检索方法,其特征在于:包括树的建立和数据的检索过程;
树的建立过程:
要***的关键字为key;
1)如果是空树,则新建一个叶子结点,把记录***叶子节点,此时这个叶子结点也是根结点,***操作结束;
2)针对叶子类型结点:根据key值找到叶子结点,向这个叶子结点***记录;***后,若当前结点key的个数不大于m-1,则***结束;否则将这个叶子结点***成左右两个叶子结点,左叶子结点包含前m/2个记录,右结点包含剩下的记录,将第m/2+1个记录的key进位到父结点中,进位到父结点的key左孩子指针向左结点,右孩子指针向右结点;将当前结点的指针指向父结点;
3)针对索引类型结点:若当前结点key的个数小于等于m-1,则***结束;否则,将这个索引类型结点***成两个索引结点,左索引结点包含前(m-1)/2个key,右结点包含m-(m-1)/2个key,将第m/2个key进位到父结点中,进位到父结点的key左孩子指向左结点,进位到父结点的key右孩子指向右结点;将当前结点的指针指向父结点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110182161.7A CN112800065A (zh) | 2021-02-09 | 2021-02-09 | 基于改进区块存储结构的高效数据检索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110182161.7A CN112800065A (zh) | 2021-02-09 | 2021-02-09 | 基于改进区块存储结构的高效数据检索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112800065A true CN112800065A (zh) | 2021-05-14 |
Family
ID=75815070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110182161.7A Pending CN112800065A (zh) | 2021-02-09 | 2021-02-09 | 基于改进区块存储结构的高效数据检索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112800065A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626432A (zh) * | 2021-08-03 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种支持任意Key值的自适应基数树的改进方法 |
CN113779025A (zh) * | 2021-08-06 | 2021-12-10 | 西安电子科技大学 | 一种区块链中分类数据检索效率的优化方法、***及应用 |
CN113901131A (zh) * | 2021-09-02 | 2022-01-07 | 北京邮电大学 | 基于索引的链上数据查询方法及装置 |
CN114756603A (zh) * | 2022-05-23 | 2022-07-15 | 天津大学 | 一种轻量级区块链高效可验证查询方法 |
CN116303586A (zh) * | 2022-12-09 | 2023-06-23 | 中电云数智科技有限公司 | 一种基于多级b+tree的元数据缓存淘汰方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN112035491A (zh) * | 2020-09-30 | 2020-12-04 | 中山大学 | 基于区块链的数据存储方法、电子积分处理方法及*** |
-
2021
- 2021-02-09 CN CN202110182161.7A patent/CN112800065A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN112035491A (zh) * | 2020-09-30 | 2020-12-04 | 中山大学 | 基于区块链的数据存储方法、电子积分处理方法及*** |
Non-Patent Citations (1)
Title |
---|
郑浩瀚;申德荣;聂铁铮;寇月;: "面向混合索引的区块链***的可查询性优化", 计算机科学, no. 10, pages 309 - 316 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626432A (zh) * | 2021-08-03 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种支持任意Key值的自适应基数树的改进方法 |
CN113626432B (zh) * | 2021-08-03 | 2023-10-13 | 上海沄熹科技有限公司 | 一种支持任意Key值的自适应基数树的改进方法 |
CN113779025A (zh) * | 2021-08-06 | 2021-12-10 | 西安电子科技大学 | 一种区块链中分类数据检索效率的优化方法、***及应用 |
CN113779025B (zh) * | 2021-08-06 | 2024-01-26 | 西安电子科技大学 | 一种区块链中分类数据检索效率的优化方法、***及应用 |
CN113901131A (zh) * | 2021-09-02 | 2022-01-07 | 北京邮电大学 | 基于索引的链上数据查询方法及装置 |
CN113901131B (zh) * | 2021-09-02 | 2024-06-07 | 北京邮电大学 | 基于索引的链上数据查询方法及装置 |
CN114756603A (zh) * | 2022-05-23 | 2022-07-15 | 天津大学 | 一种轻量级区块链高效可验证查询方法 |
CN116303586A (zh) * | 2022-12-09 | 2023-06-23 | 中电云数智科技有限公司 | 一种基于多级b+tree的元数据缓存淘汰方法 |
CN116303586B (zh) * | 2022-12-09 | 2024-01-30 | 中电云计算技术有限公司 | 一种基于多级b+tree的元数据缓存淘汰方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112800065A (zh) | 基于改进区块存储结构的高效数据检索方法 | |
CN111339106B (zh) | 一种区块链数据索引的方法 | |
CN109165224B (zh) | 一种在区块链数据库上针对关键字key的索引方法 | |
CN102122285B (zh) | 一种数据缓存***中的数据查询***和数据查询方法 | |
US20230109969A1 (en) | Data processing method and apparatus based on node internal memory, device and medium | |
KR102232641B1 (ko) | 블록체인 기반 IoT 환경에서의 다중 검색을 지원하는 데이터 구조체를 이용한 검색 방법 및 그 방법에 따른 장치 | |
CN102945249B (zh) | 一种策略规则匹配查询树生成方法、匹配方法及装置 | |
CN113821564B (zh) | 异构并行区块链及其链上数据与链下合约协同方法 | |
CN101771537A (zh) | 分布式认证***及其认证证书的处理方法、认证方法 | |
WO2021190179A1 (zh) | 一种同步处理方法和相关装置 | |
CN110109874A (zh) | 一种基于区块链的无中心分布式文件检索方法 | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
CN115052008B (zh) | 基于云存储的区块链数据链下存储方法 | |
Liu et al. | Finding smallest k-compact tree set for keyword queries on graphs using mapreduce | |
CN114791788B (zh) | 一种基于区块链的数据存储方法及装置 | |
CN116701452A (zh) | 数据处理方法、相关设备、存储介质及程序产品 | |
Zegour | Scalable distributed compact trie hashing (CTH*) | |
CN114095373A (zh) | 基于知识图谱的联盟链管理方法、***、设备及存储介质 | |
CN113946580B (zh) | 一种海量异构日志数据检索中间件 | |
CN112463890B (zh) | 基于区块链和机器学习的跨***数据共享方法 | |
CN113495982B (zh) | 交易节点管理方法、装置、计算机设备及存储介质 | |
CN112035485B (zh) | 基于分布式架构实现信用信息数据高效查询方法及其*** | |
CN117056342B (zh) | 一种基于区块链的数据处理方法及相关设备 | |
WO2023160040A1 (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN116260764A (zh) | 一种提高Web应用***的路由检索和匹配效率的方法和装置 |
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 |