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

技术编号:22308252 阅读:33 留言:0更新日期:2019-10-16 08:21
一种基于区块链的分级存储方法,区块链的账户状态数据组织成的Merkle状态树上的数据节点,以Key‑Value键值对的形式存储在数据库中;key为节点ID和区块号组成的二元组;数据库包括多级数据存储;区块号指示数据节点发生数据更新时所在的区块;包括:当任一级目标数据存储满足了数据迁移条件时,确定目标数据存储中待迁移的区块号区间;基于区块号区间确定迁移临界值;迭代遍历目标数据存储中存储的二元组,查找二元组中的区块号小于迁移临界值的目标数据节点;查找目标数据存储中是否存储了与目标数据节点具有相同的节点ID,以及二元组中的区块号大于目标数据节点且小于迁移临界值的数据节点;如果是,将目标数据节点迁移至下一级数据存储。

Block chain based hierarchical storage method, device and electronic equipment

【技术实现步骤摘要】
基于区块链的分级存储方法及装置、电子设备
本说明书一个或多个实施例涉及区块链
,尤其涉及一种基于区块链的分级存储方法及装置、电子设备。
技术介绍
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
技术实现思路
本说明书提出一种基于区块链的分级存储方法,所述区块链的账户状态数据组织成的Merkle状态树上的数据节点,以Key-Value键值对的形式存储在数据库中;其中,所述Key-Value键值对的key为所述数据节点的节点ID和为所述数据节点标记的区块号组成的二元组;所述数据库包括多级数据存储;所述区块号指示所述数据节点发生数据更新时所在的区块;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确定迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;迭代遍历所述目标数据存储中存储的数据节点的所述二元组,查找所述二元组中的区块号小于所述迁移临界值的目标数据节点;根据所述目标数据节点的所述二元组,进一步查找所述目标数据存储中是否存储了与所述目标数据节点具有相同的节点ID,以及所述二元组中的区块号大于所述目标数据节点且小于所述迁移临界值的数据节点;如果是,将所述目标数据节点迁移至所述目标数据存储的下一级数据存储;否则,在所述目标数据存储中保留所述目标数据节点。可选的,所述基于所述区块号区间确定迁移临界值,包括:如果所述区块号区间的右区间为开区间,将所述区块号区间的右端点值,确定为所述迁移临界值;如果所述区块号区间的右区间为闭区间,将所述区块号区间的右端点值与所述区块链的区块号递增步长的和确定为所述迁移临界值。可选的,所述查找所述目标数据存储中是否存储了与所述目标数据节点具有相同的节点ID,以及所述二元组中的区块号大于所述目标数据节点且小于所述迁移临界值的数据节点,包括:查找所述目标数据存储中存储的与所述目标数据节点具有相同的节点ID,并且所述二元组中的区块号为小于所述迁移临界值的区块号中的最大区块号的数据节点;进一步确定查找到的该数据节点的所述二元组中的区块号,是否大于所述目标数据节点的所述二元组中的区块号。可选的,所述方法还包括:确定最新区块的Merkle状态树上发生数据更新的数据节点;为所述最新区块的Merkle状态树上发生数据更新的数据节点构建Key-Value键值对,并将所述Key-Value键值对存储至所述数据库中的最高级数据存储;其中,所述Key-Value键值对的key为所述最新区块的区块号和所述数据节点的节点ID组成的二元组;所述Key-Value键值对的Value为所述数据节点包含的数据内容。可选的,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种;所述数据节点的节点ID,为所述Merkle树的根节点到该数据节点的路径对应的字符前缀。可选的,所述Merkle状态树为MerklePatriciaTree状态树。可选的,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库;可选的,所述数据库为基于LevelDB架构的Rocksdb数据库。可选的,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。本说明书还提出一种基于区块链的分级存储装置,所述区块链的账户状态数据组织成的Merkle状态树上的数据节点,以Key-Value键值对的形式存储在数据库中;其中,所述Key-Value键值对的key为所述数据节点的节点ID和为所述数据节点标记的区块号组成的二元组;所述数据库包括多级数据存储;所述区块号指示所述数据节点发生数据更新时所在的区块;所述装置包括:确定模块,当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确定迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;查找模块,迭代遍历所述目标数据存储中存储的数据节点的所述二元组,查找所述二元组中的区块号小于所述迁移临界值的目标数据节点;迁移模块,根据所述目标数据节点的所述二元组,进一步查找所述目标数据存储中是否存储了与所述目标数据节点具有相同的节点ID,以及所述二元组中的区块号大于所述目标数据节点且小于所述迁移临界值的数据节点;如果是,将所述目标数据节点迁移至所述目标数据存储的下一级数据存储;否则,在所述目标数据存储中保留所述目标数据节点。可选的,所述确定模块:如果所述区块号区间的右区间为开区间,将所述区块号区间的右端点值,确定为所述迁移临界值;如果所述区块号区间的右区间为闭区间,将所述区块号区间的右端点值与所述区块链的区块号递增步长的和确定为所述迁移临界值。可选的,所述迁移模块进一步:查找所述目标数据存储中存储的与所述目标数据节点具有相同的节点ID,并且所述二元组中的区块号为小于所述迁移临界值的区块号中的最大区块号的数据节点;进一步确定查找到的该数据节点的所述二元组中的区块号,是否大于所述目标数据节点的所述二元组中的区块号。可选的,所述装置还包括:存储模块,确定最新区块的Merkle状态树上发生数据更新的数据节点;为所述最新区块的Merkle状态树上发生数据更新的数据节点构建Key-Value键值对,并将所述Key-Value键值对存储至所述数据库中的最高级数据存储;其中,所述Key-Value键值对的key为所述最新区块的区块号和所述数据节点的节点ID组成的二元组;所述Key-Value键值对的Value为所述数据节点包含的数据内容。可选的,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种;所述数据节点的节点ID,为所述Merkle树的根节点到该数据节点的路径对应的字符前缀。可选的,所述Merkle状态树为MerklePatriciaTree状态树。可选的,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库;可选的,所述数据库为基于LevelDB架构的Rocksdb数据库。可选的,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。在以上技术方案中,可以实现对数据库中存储的Merkle状态树上的数据节点进行剪枝,将记录了历史状态数据的数据节点从Merkle状态树上移除,迁移至下一级数据存储,并在本级数据存储中继续存储和保留记录了最新状态数据的数据节点,进而完成针对数据库中存储的Merkle状态树的分级存储。附图说明图1是一示例性实施例提供的一种将区块链的账户状态数据组织成MPT状态树的示意图;图2是一示例性实施例提供的一种MPT状态树上的node复用的示意图;图3是一示例性实施例提供的一种基于区本文档来自技高网...

【技术保护点】
1.一种基于区块链的分级存储方法,所述区块链的账户状态数据组织成的Merkle状态树上的数据节点,以Key‑Value键值对的形式存储在数据库中;其中,所述Key‑Value键值对的key为所述数据节点的节点ID和为所述数据节点标记的区块号组成的二元组;所述数据库包括多级数据存储;所述区块号指示所述数据节点发生数据更新时所在的区块;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确定迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;迭代遍历所述目标数据存储中存储的数据节点的所述二元组,查找所述二元组中的区块号小于所述迁移临界值的目标数据节点;根据所述目标数据节点的所述二元组,进一步查找所述目标数据存储中是否存储了与所述目标数据节点具有相同的节点ID,以及所述二元组中的区块号大于所述目标数据节点且小于所述迁移临界值的数据节点;如果是,将所述目标数据节点迁移至所述目标数据存储的下一级数据存储;否则,在所述目标数据存储中保留所述目标数据节点。

【技术特征摘要】
1.一种基于区块链的分级存储方法,所述区块链的账户状态数据组织成的Merkle状态树上的数据节点,以Key-Value键值对的形式存储在数据库中;其中,所述Key-Value键值对的key为所述数据节点的节点ID和为所述数据节点标记的区块号组成的二元组;所述数据库包括多级数据存储;所述区块号指示所述数据节点发生数据更新时所在的区块;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确定迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;迭代遍历所述目标数据存储中存储的数据节点的所述二元组,查找所述二元组中的区块号小于所述迁移临界值的目标数据节点;根据所述目标数据节点的所述二元组,进一步查找所述目标数据存储中是否存储了与所述目标数据节点具有相同的节点ID,以及所述二元组中的区块号大于所述目标数据节点且小于所述迁移临界值的数据节点;如果是,将所述目标数据节点迁移至所述目标数据存储的下一级数据存储;否则,在所述目标数据存储中保留所述目标数据节点。2.根据权利要求1所述的方法,所述基于所述区块号区间确定迁移临界值,包括:如果所述区块号区间的右区间为开区间,将所述区块号区间的右端点值,确定为所述迁移临界值;如果所述区块号区间的右区间为闭区间,将所述区块号区间的右端点值与所述区块链的区块号递增步长的和确定为所述迁移临界值。3.根据权利要求1所述的方法,所述查找所述目标数据存储中是否存储了与所述目标数据节点具有相同的节点ID,以及所述二元组中的区块号大于所述目标数据节点且小于所述迁移临界值的数据节点,包括:查找所述目标数据存储中存储的与所述目标数据节点具有相同的节点ID,并且所述二元组中的区块号为小于所述迁移临界值的区块号中的最大区块号的数据节点;进一步确定查找到的该数据节点的所述二元组中的区块号,是否大于所述目标数据节点的所述二元组中的区块号。4.根据权利要求1所述的方法,所述方法还包括:确定最新区块的Merkle状态树上发生数据更新的数据节点;为所述最新区块的Merkle状态树上发生数据更新的数据节点构建Key-Value键值对,并将所述Key-Value键值对存储至所述数据库中的最高级数据存储;其中,所述Key-Value键值对的key为所述最新区块的区块号和所述数据节点的节点ID组成的二元组;所述Key-Value键值对的Value为所述数据节点包含的数据内容。5.根据权利要求1或4所述的方法,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种;所述数据节点的节点ID,为所述Merkle树的根节点到该数据节点的路径对应的字符前缀。6.根据权利要求5所述的方法,所述Merkle状态树为MerklePatriciaTree状态树。7.根据权利要求1所述的方法,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库。8.根据权利要求7所述的方法,所述数据库为基于LevelDB架构的Rocksdb数据库。9.根据权利要求1所述的方法,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。10.一种基于区块链的分级存储装置,所述区块链的账户状态数据组织成的Merkle状态树上的数...

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

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

1