基于区块链的分级存储方法及装置、电子设备制造方法及图纸

技术编号:22330050 阅读:17 留言:0更新日期:2019-10-19 12:16
一种基于区块链的分级存储方法,区块链的账户状态数据被组织成Merkle状态树在数据库中存储;数据库包括多级数据存储;包括:当数据库中的任一级目标数据存储满足了数据迁移条件时,为目标数据存储创建与工作数据表对应的空数据表;将写入目标数据存储的新增区块的Merkle状态树存储至空数据表,并将工作数据表中存储的与目标区块号对应的区块的Merkle状态树迁移至空数据表;其中,目标区块号为目标数据存储中存储的若干Merkle状态树对应的区块号中的最大区块号;在将工作数据表中存储的与目标区块号对应的区块的Merkle状态树迁移至空数据表之后,将工作数据表中存储的Merkle状态树进一步迁移至目标数据存储的下一级数据存储。

【技术实现步骤摘要】
基于区块链的分级存储方法及装置、电子设备
本说明书一个或多个实施例涉及区块链
,尤其涉及一种基于区块链的分级存储方法及装置、电子设备。
技术介绍
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
技术实现思路
本说明书提出一种基于区块链的分级存储方法,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,为所述目标数据存储创建与工作数据表对应的空数据表;将写入所述目标数据存储的新增区块的Merkle状态树存储至所述空数据表,并将所述工作数据表中存储的与目标区块号对应的区块的Merkle状态树迁移至所述空数据表;其中,所述目标区块号为所述目标数据存储中存储的若干Merkle状态树对应的区块号中的最大区块号;在将所述工作数据表中存储的与所述目标区块号对应的区块的Merkle状态树迁移至所述空数据表之后,将所述工作数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储。可选的,还包括:在将所述工作数据表中存储的与所述目标区块号对应的区块的Merkle状态树迁移至所述空数据表之后,将所述工作数据表切换为历史数据表,并将所述空数据表切换为工作数据表。可选的,将所述工作数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储,包括:在所述工作数据表切换为历史数据表之后,将所述历史数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储;以及,在所述历史数据表中的存储的Merkle状态树成功迁移至所述目标数据存储的下一级数据存储之后,删除所述历史数据表。可选的,所述将写入所述目标数据存储的新增区块的Merkle状态树存储至所述空数据表,包括:将写入所述目标数据存储的新增区块的Merkle状态树仅存储至所述空数据表;或者,将写入所述目标数据存储的新增区块的Merkle状态树同时存储至所述空数据表和所述工作数据表。可选的,还包括:在所述目标数据存储存在双数据表期间接收到针对所述目标数据存储的Merkle状态树上的数据节点的查询请求时,如果写入所述目标数据存储的新增区块的Merkle状态树仅存储至所述空数据表,则响应于所述查询请求,同时从所述空数据表和所述工作数据表中查询数据节点;如果写入所述目标数据存储的新增区块的Merkle状态树同时存储至所述空数据表和所述工作数据表,则响应于所述数据查询请求,仅从所述工作数据表中查询数据节点。可选的,所述新增区块的Merkle状态树,包括:所述区块链产生的最新区块的Merkle状态树;或者,所述目标数据存储的上一级数据存储迁移至所述目标数据存储的历史区块的Merkle状态树。可选的,所述数据库为Key-Value数据库;所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述Key-Value键值对的key为所述数据节点包含的数据内容的hash值;所述Key-Value键值对的value为所述数据节点包含的数据内容。可选的,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。可选的,所述Merkle状态树为MerklePatriciaTree状态树。可选的,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库。可选的,所述数据库为基于LevelDB架构的Rocksdb数据库。可选的,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。本说明书还提出一种基于区块链的分级存储装置,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述装置包括:创建模块,当所述数据库中的任一级目标数据存储满足了数据迁移条件时,为所述目标数据存储创建与工作数据表对应的空数据表;迁移模块,将写入所述目标数据存储的新增区块的Merkle状态树存储至所述空数据表,并将所述工作数据表中存储的与目标区块号对应的区块的Merkle状态树迁移至所述空数据表;其中,所述目标区块号为所述目标数据存储中存储的若干Merkle状态树对应的区块号中的最大区块号;在将所述工作数据表中存储的与所述目标区块号对应的区块的Merkle状态树迁移至所述空数据表之后,将所述工作数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储。可选的,所述迁移模块:在将所述工作数据表中存储的与所述目标区块号对应的区块的Merkle状态树迁移至所述空数据表之后,将所述工作数据表切换为历史数据表,并将所述空数据表切换为工作数据表。可选的,所述迁移模块进一步:在所述工作数据表切换为历史数据表之后,将所述历史数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储;以及,在所述历史数据表中的存储的Merkle状态树成功迁移至所述目标数据存储的下一级数据存储之后,删除所述历史数据表。可选的,所述迁移模块:将写入所述目标数据存储的新增区块的Merkle状态树仅存储至所述空数据表;或者,将写入所述目标数据存储的新增区块的Merkle状态树同时存储至所述空数据表和所述工作数据表。可选的,还包括:查询模块,在所述目标数据存储存在双数据表期间接收到针对所述目标数据存储的Merkle状态树上的数据节点的查询请求时,如果写入所述目标数据存储的新增区块的Merkle状态树仅存储至所述空数据表,则响应于所述查询请求,同时从所述空数据表和所述工作数据表中查询数据节点;如果写入所述目标数据存储的新增区块的Merkle状态树同时存储至所述空数据表和所述工作数据表,则响应于所述数据查询请求,仅从所述工作数据表中查询数据节点。可选的,所述新增区块的Merkle状态树,包括:所述区块链产生的最新区块的Merkle状态树;或者,所述目标数据存储的上一级数据存储迁移至所述目标数据存储的历史区块的Merkle状态树。可选的,所述数据库为Key-Value数据库;所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述Key-Value键值对的key为所述数据节点包含的数据内容的hash值;所述Key-Value键值对的value为所述数据节点包含的数据内容。可选的,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。可选的,所述Merkle状态树为MerklePatriciaTree状态树。可选的,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库。可选的,所述数据库为基于LevelDB架构的Rocksdb数据库。可选的,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的本文档来自技高网...

【技术保护点】
1.一种基于区块链的分级存储方法,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,为所述目标数据存储创建与工作数据表对应的空数据表;将写入所述目标数据存储的新增区块的Merkle状态树存储至所述空数据表,并将所述工作数据表中存储的与目标区块号对应的区块的Merkle状态树迁移至所述空数据表;其中,所述目标区块号为所述目标数据存储中存储的若干Merkle状态树对应的区块号中的最大区块号;在将所述工作数据表中存储的与所述目标区块号对应的区块的Merkle状态树迁移至所述空数据表之后,将所述工作数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储。

【技术特征摘要】
1.一种基于区块链的分级存储方法,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,为所述目标数据存储创建与工作数据表对应的空数据表;将写入所述目标数据存储的新增区块的Merkle状态树存储至所述空数据表,并将所述工作数据表中存储的与目标区块号对应的区块的Merkle状态树迁移至所述空数据表;其中,所述目标区块号为所述目标数据存储中存储的若干Merkle状态树对应的区块号中的最大区块号;在将所述工作数据表中存储的与所述目标区块号对应的区块的Merkle状态树迁移至所述空数据表之后,将所述工作数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储。2.根据权利要求1所述的方法,还包括:在将所述工作数据表中存储的与所述目标区块号对应的区块的Merkle状态树迁移至所述空数据表之后,将所述工作数据表切换为历史数据表,并将所述空数据表切换为工作数据表。3.根据权利要求2所述的方法,将所述工作数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储,包括:在所述工作数据表切换为历史数据表之后,将所述历史数据表中存储的Merkle状态树进一步迁移至所述目标数据存储的下一级数据存储;以及,在所述历史数据表中的存储的Merkle状态树成功迁移至所述目标数据存储的下一级数据存储之后,删除所述历史数据表。4.根据权利要求1所述的方法,所述将写入所述目标数据存储的新增区块的Merkle状态树存储至所述空数据表,包括:将写入所述目标数据存储的新增区块的Merkle状态树仅存储至所述空数据表;或者,将写入所述目标数据存储的新增区块的Merkle状态树同时存储至所述空数据表和所述工作数据表。5.根据权利要求4所述的方法,还包括:在所述目标数据存储存在双数据表期间接收到针对所述目标数据存储的Merkle状态树上的数据节点的查询请求时,如果写入所述目标数据存储的新增区块的Merkle状态树仅存储至所述空数据表,则响应于所述查询请求,同时从所述空数据表和所述工作数据表中查询数据节点;如果写入所述目标数据存储的新增区块的Merkle状态树同时存储至所述空数据表和所述工作数据表,则响应于所述数据查询请求,仅从所述工作数据表中查询数据节点。6.根据权利要求1-5任一所述的方法,所述新增区块的Merkle状态树,包括:所述区块链产生的最新区块的Merkle状态树;或者,所述目标数据存储的上一级数据存储迁移至所述目标数据存储的历史区块的Merkle状态树。7.根据权利要求1所述的方法,所述数据库为Key-Value数据库;所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述Key-Value键值对的key为所述数据节点包含的数据内容的hash值;所述Key-Value键值对的value为所述数据节点包含的数据内容。8.根据权利要求1所述的方法,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。9.根据权利要求8所述的方法,所述Merkle状态树为MerklePatriciaTree状态树。10.根据权利要求1所述的方法,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库。11.根据权利要求10所述的方法,所述数据库为基于LevelDB架构的Rocksdb数据库。12.根据权利要求1所述的方法,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。13.一种基于区块链的分级存储装置,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数...

【专利技术属性】
技术研发人员:陆钟豪卓海振俞本权
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1