[发明专利]一种基于多级缓存的区块链状态数据存储和读取方法有效
申请号: | 201811636076.8 | 申请日: | 2018-12-29 |
公开(公告)号: | CN109684337B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 邱炜伟;李启雷;李伟;梁秀波;尹可挺 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310012 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 多级 缓存 区块 状态 数据 存储 读取 方法 | ||
1.一种基于多级缓存的区块链状态数据存储和读取方法,其特征在于,所述的存储包括如下步骤:
步骤一:将一个区块的所有状态数据组成一个Batch;
步骤二:将一个Batch内的所有状态信息编码后以原子性存储到Memtable中,同时更新状态数据中的区块高度信息;若MemTable原子写入失败,则需要根据区块号重新进行状态信息的写入;
步骤三:重复步骤一和步骤二,完成整个区块的状态数据写入,同时将所有未编码前的状态数据存入第一级缓存中去;
所述的读取包括如下步骤:
根据所需读取的区块状态信息,按照第一级缓存,MemTable,Immutable MemTable以及LevelDB数据库的顺序进行依次状态数据的读取;
所述的步骤二中,当写入最新的状态数据后Memtable大于500M,则放弃此次写入,将此MemTable转换为Immutable Memtable,同时新建一块Memtable,重新写入最新区块链状态信息;
所述的MemTable转换为Immutable Memtable过程中存储进一步包括如下子步骤:
(1)在MemTable转化为Immutable MemTable之后,Immutable MemTable会遍历其中的Key/Value内容,将操作记录存于LOG文件中;
(2)再次遍历Immutable Memtable,读取Key/Value,存储在LevelDB数据库中;
(3)Immutable MemTable存储完毕后,删除对应的LOG文件。
2.根据权利要求1所述一种基于多级缓存的区块链状态数据存储和读取方法,其特征在于,所述步骤三包括如下子步骤:
第一级缓存按照区块号为单位,进行区块链状态数据的淘汰,若第一级缓存数据已满,则依次淘汰区块号最小的状态数据,淘汰最小区块号的状态数据后,则缓存最新区块号的区块链状态数据。
3.根据权利要求1所述基于多级缓存的区块链状态数据存储和读取方法,其特征在于,所述的MemTable转换为Immutable Memtable过程中包括如下步骤:
当区块链节点宕机导致Immutable MemTable数据丢失,根据LOG文件恢复出对应Immutable MemTable。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811636076.8/1.html,转载请声明来源钻瓜专利网。