数据存储方法、数据读取方法、设备和存储介质技术

技术编号:21034190 阅读:15 留言:0更新日期:2019-05-04 05:23
本发明专利技术提供一种数据存储方法、数据读取方法、设备和存储介质,该方法包括:通过protocol buffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;利用各结构体进行编码,将编码生成的数据存入本地数据库;本发明专利技术优化了MPT的数据存储模式,提升MPT读取效率。

【技术实现步骤摘要】
数据存储方法、数据读取方法、设备和存储介质
本申请涉及区块链
,具体涉及一种数据存储方法、数据读取方法、设备和存储介质。
技术介绍
当前区块链系统的数据结构存储解决方案中,通常会利用MerklePatriciaTries(MPT)树等对区块链的状态数据(如账户余额等)进行存储。现有的方案中利用RLP编码MPT,RLP对于复杂数据结构体类型支持不够完善,需要做额外的转化,且使用RLP编码MPT,该MPT的读取效率为15000ns/op,读取效率较低。
技术实现思路
鉴于现有技术中的上述缺陷或不足,期望提供一种优化MPT数据存储,提升MPT读取效率的数据存储方法、数据读取方法、设备和存储介质。第一方面,本专利技术提供一种数据存储方法,包括:通过protocolbuffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;利用各结构体进行编码,将编码生成的数据存入本地数据库。第二方面,本专利技术提供一种数据读取方法,包括:从本地数据库中读取数据;其中,数据通过protocolbuffers协议定义的梅克尔帕特里夏树(MPT)各类节点的结构体编码生成,结构体包括第一参数;通过解析数据中各节点的第一参数获取各节点的节点类型和位置信息。第三方面,本专利技术还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本专利技术各实施例提供的数据存储方法及数据读取方法。第四方面,本专利技术还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本专利技术各实施例提供的数据存储方法及数据读取方法。本专利技术诸多实施例提供的数据存储方法、数据读取方法、设备和存储介质通过protocolbuffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;利用各结构体进行编码,将编码生成的数据存入本地数据库的方法,优化了MPT的数据存储模式,提升MPT读取效率。本专利技术一些实施例提供的数据存储方法、数据读取方法、设备和存储介质进一步通过结构体包括第一参数,第一参数通过可解析的编码方法对节点的节点类型与位置信息编码生成的方法,减少了数据存储的数据量,进一步提升MPT读取效率。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1为本专利技术一实施例提供的一种数据存储方法的流程图。图2为本专利技术一实施例提供的一种数据读取方法的流程图图3为本专利技术一实施例提供的一种设备的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1为本专利技术一实施例提供的一种数据存储方法的流程图。如图1所示,在本实施例中,本专利技术提供一种数据存储方法,包括:S12:通过protocolbuffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;S14:利用各结构体进行编码,将编码生成的数据存入本地数据库。具体地,以各类节点包括fullnode及shortnode,为fullnode的结构体定义Children[]node及flags,为shortnode的结构体定义Key,Val及flags为例。在步骤S12中,通过protocolbuffers协议定义区块链中梅克尔帕特里夏树(MPT)的节点的结构体,以及部分节点的节点类型的结构体:fullnode及shortnode的结构体;定义的节点的结构体如下:定义的fullnode的结构体如下:定义的shortnode的结构体如下:在步骤S14中,利用节点的结构体,以及部分节点类型的结构体fullnode及shortnode的结构体进行编码,将编码生成的数据存入本地数据库。在更多实施例中,本专利技术提供的数据存储方法不以上述举例为限,还可以根据实际需求定义节点的结构体及各类节点的结构体,例如还可以定义hashnode等,定义的结构体所包含的信息也不以上述举例为限,可根据实际需求进行配置,均可实现相同的技术效果。上述实施例优化了MPT的数据存储模式,提升了MPT读取效率。在一优选实施例中,结构体包括第一参数,第一参数通过可解析的编码方法对节点的节点类型与位置信息编码生成。具体地,结构体包括第一参数Ty,定义第一参数Ty如下:第一参数ty通过可解析的编码方法对节点的节点类型与位置信息编码生成。具体地,以在fullnode的Children[17]node的位置5中,有shortnode为例。Ty=2+(5<<4)=0x52;其中,5代表该shortnode在Children[17]node的位置,2代表节点的节点类型为shortnode。在一般系统中,普遍将节点类型定义为一个参数,又将位置信息定义为又一参数,将两个参数信息存放在数据库中,增加了数据存储的数据量;从数据库中读取节点类型信息及位置信息时,会降低读取的效率。在更多实施例中,还可以根据实际需求定义第一参数,第一参数还可保护其它的节点的信息,可实现相同的技术效果。上述实施例减少了数据存储的数据量,进一步提升MPT读取效率。根据实际测试,MPT的读取效率已从15000ns/op提升为10000ns/op,读取效率提高。在一优选实施例中,节点类型包括以下至少一项:fullnode、shortnode、valuenode及hashnode。图2为本专利技术一实施例提供的一种数据读取方法的流程图。如图2所示,在本实施例中,本专利技术提供一种数据读取方法,包括:S22:从本地数据库中读取数据;其中,数据通过protocolbuffers协议定义的梅克尔帕特里夏树(MPT)各类节点的结构体编码生成,结构体包括第一参数;S24:通过解析数据中各节点的第一参数获取各节点的节点类型和位置信息。具体地,以有shortnode(A),shortnode(A)的Key是8,Val是fullnode(a)的哈希值,且在fullnode(a)的Children[17]node的位置5中,有shortnode(B),shortnode(B)的Key为1344,shortnode(B)的Val为1token,shortnode(B)的第一参数Ty为0x52为例。在步骤S22中,从本地数据库中读取数据,读取shortnode(B)的Key为851344,shortnode(B)的Val为1token;其中,数据通过protocolbuffers协议定义的梅克尔帕特里夏树(MPT)各类节点的结构体编码生成,结构体包括第一参数Ty;在步骤S24中,通过解析数据中shortnode(B)的第一参数获取shortnode(B)的节点类型和位置信息;由于Ty=2+(5<<4)=0x52;其中,5代表该shortnode在Children[17]node的位置,2代表节点的节点类型为shortnode,解析出shortnode(B)的节点类型为shortnode,s本文档来自技高网...

【技术保护点】
1.一种数据存储方法,其特征在于,包括:通过protocol buffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;利用各所述结构体进行编码,将编码生成的数据存入本地数据库。

【技术特征摘要】
1.一种数据存储方法,其特征在于,包括:通过protocolbuffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;利用各所述结构体进行编码,将编码生成的数据存入本地数据库。2.根据权利要求1所述的方法,其特征在于,所述结构体包括第一参数,所述第一参数通过可解析的编码方法对节点的节点类型与位置信息编码生成。3.根据权利要求2所述的方法,其特征在于,所述节点类型包括以下至少一项:fullnode、shortnode、valuenode及hashnode。4.一种数据读取方法,其特征在于,包括:从本地数据库中读取数据;其中,所述数据通过protocolbuffers协议定义的梅克...

【专利技术属性】
技术研发人员:王志文柳宇航吴思进
申请(专利权)人:杭州复杂美科技有限公司
类型:发明
国别省市:浙江,33

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

1