CN109710620A - 数据存储方法、数据读取方法、设备和存储介质 - Google Patents

数据存储方法、数据读取方法、设备和存储介质 Download PDF

Info

Publication number
CN109710620A
CN109710620A CN201811643200.3A CN201811643200A CN109710620A CN 109710620 A CN109710620 A CN 109710620A CN 201811643200 A CN201811643200 A CN 201811643200A CN 109710620 A CN109710620 A CN 109710620A
Authority
CN
China
Prior art keywords
node
data
structural body
mpt
parameter
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.)
Granted
Application number
CN201811643200.3A
Other languages
English (en)
Other versions
CN109710620B (zh
Inventor
王志文
柳宇航
吴思进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Fuzamei Technology Co Ltd
Original Assignee
Hangzhou Fuzamei Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Fuzamei Technology Co Ltd filed Critical Hangzhou Fuzamei Technology Co Ltd
Priority to CN201811643200.3A priority Critical patent/CN109710620B/zh
Publication of CN109710620A publication Critical patent/CN109710620A/zh
Priority to PCT/CN2019/127997 priority patent/WO2020135434A1/zh
Application granted granted Critical
Publication of CN109710620B publication Critical patent/CN109710620B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

数据存储方法、数据读取方法、设备和存储介质
技术领域
本申请涉及区块链技术领域,具体涉及一种数据存储方法、数据读取方法、设备和存储介质。
背景技术
当前区块链系统的数据结构存储解决方案中,通常会利用Merkle PatriciaTries(MPT)树等对区块链的状态数据(如账户余额等)进行存储。现有的方案中利用RLP编码MPT,RLP对于复杂数据结构体类型支持不够完善,需要做额外的转化,且使用RLP编码MPT,该MPT的读取效率为15000ns/op,读取效率较低。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种优化MPT数据存储,提升MPT读取效率的数据存储方法、数据读取方法、设备和存储介质。
第一方面,本发明提供一种数据存储方法,包括:
通过protocol buffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;
利用各结构体进行编码,将编码生成的数据存入本地数据库。
第二方面,本发明提供一种数据读取方法,包括:
从本地数据库中读取数据;其中,数据通过protocol buffers协议定义的梅克尔帕特里夏树(MPT)各类节点的结构体编码生成,结构体包括第一参数;
通过解析数据中各节点的第一参数获取各节点的节点类型和位置信息。
第三方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的数据存储方法及数据读取方法。
第四方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的数据存储方法及数据读取方法。
本发明诸多实施例提供的数据存储方法、数据读取方法、设备和存储介质通过protocol buffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;利用各结构体进行编码,将编码生成的数据存入本地数据库的方法,优化了MPT的数据存储模式,提升MPT读取效率。
本发明一些实施例提供的数据存储方法、数据读取方法、设备和存储介质进一步通过结构体包括第一参数,第一参数通过可解析的编码方法对节点的节点类型与位置信息编码生成的方法,减少了数据存储的数据量,进一步提升MPT读取效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例提供的一种数据存储方法的流程图。
图2为本发明一实施例提供的一种数据读取方法的流程图
图3为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例提供的一种数据存储方法的流程图。如图1所示,在本实施例中,本发明提供一种数据存储方法,包括:
S12:通过protocol buffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;
S14:利用各结构体进行编码,将编码生成的数据存入本地数据库。
具体地,以各类节点包括full node及short node,为full node的结构体定义Children[]node及flags,为short node的结构体定义Key,Val及flags为例。
在步骤S12中,通过protocol buffers协议定义区块链中梅克尔帕特里夏树(MPT)的节点的结构体,以及部分节点的节点类型的结构体:full node及short node的结构体;
定义的节点的结构体如下:
定义的full node的结构体如下:
定义的short node的结构体如下:
在步骤S14中,利用节点的结构体,以及部分节点类型的结构体full node及shortnode的结构体进行编码,将编码生成的数据存入本地数据库。
在更多实施例中,本发明提供的数据存储方法不以上述举例为限,还可以根据实际需求定义节点的结构体及各类节点的结构体,例如还可以定义hash node等,定义的结构体所包含的信息也不以上述举例为限,可根据实际需求进行配置,均可实现相同的技术效果。
上述实施例优化了MPT的数据存储模式,提升了MPT读取效率。
在一优选实施例中,结构体包括第一参数,第一参数通过可解析的编码方法对节点的节点类型与位置信息编码生成。
具体地,结构体包括第一参数Ty,定义第一参数Ty如下:
第一参数ty通过可解析的编码方法对节点的节点类型与位置信息编码生成。具体地,以在full node的Children[17]node的位置5中,有short node为例。
Ty=2+(5<<4)=0x52;其中,5代表该short node在Children[17]node的位置,2代表节点的节点类型为short node。
在一般系统中,普遍将节点类型定义为一个参数,又将位置信息定义为又一参数,将两个参数信息存放在数据库中,增加了数据存储的数据量;从数据库中读取节点类型信息及位置信息时,会降低读取的效率。
在更多实施例中,还可以根据实际需求定义第一参数,第一参数还可保护其它的节点的信息,可实现相同的技术效果。
上述实施例减少了数据存储的数据量,进一步提升MPT读取效率。
根据实际测试,MPT的读取效率已从15000ns/op提升为10000ns/op,读取效率提高。
在一优选实施例中,节点类型包括以下至少一项:full node、short node、valuenode及hash node。
图2为本发明一实施例提供的一种数据读取方法的流程图。如图2所示,在本实施例中,本发明提供一种数据读取方法,包括:
S22:从本地数据库中读取数据;其中,数据通过protocol buffers协议定义的梅克尔帕特里夏树(MPT)各类节点的结构体编码生成,结构体包括第一参数;
S24:通过解析数据中各节点的第一参数获取各节点的节点类型和位置信息。
具体地,以有short node(A),short node(A)的Key是8,Val是full node(a)的哈希值,且在full node(a)的Children[17]node的位置5中,有short node(B),short node(B)的Key为1344,short node(B)的Val为1token,short node(B)的第一参数Ty为0x52为例。
在步骤S22中,从本地数据库中读取数据,读取short node(B)的Key为851344,short node(B)的Val为1token;其中,数据通过protocol buffers协议定义的梅克尔帕特里夏树(MPT)各类节点的结构体编码生成,结构体包括第一参数Ty;
在步骤S24中,通过解析数据中short node(B)的第一参数获取short node(B)的节点类型和位置信息;由于Ty=2+(5<<4)=0x52;其中,5代表该short node在Children[17]node的位置,2代表节点的节点类型为short node,解析出short node(B)的节点类型为short node,short node(B)的位置信息为5。
图3为本发明一实施例提供的一种设备的结构示意图。
如图3所示,作为另一方面,本申请还提供了一种设备300,包括一个或多个中央处理单元(CPU)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储部分308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM303中,还存储有设备300操作所需的各种程序和数据。CPU301、ROM302以及RAM303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
以下部件连接至I/O接口305:包括键盘、鼠标等的输入部分306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分307;包括硬盘等的存储部分308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储部分308。
特别地,根据本公开的实施例,上述任一实施例描述的数据存储方法及数据读取方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行数据存储方法及数据读取方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的数据存储方法及数据读取方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (7)

1.一种数据存储方法,其特征在于,包括:
通过protocol buffers协议定义区块链中梅克尔帕特里夏树(MPT)的各类节点的结构体;
利用各所述结构体进行编码,将编码生成的数据存入本地数据库。
2.根据权利要求1所述的方法,其特征在于,所述结构体包括第一参数,所述第一参数通过可解析的编码方法对节点的节点类型与位置信息编码生成。
3.根据权利要求2所述的方法,其特征在于,所述节点类型包括以下至少一项:fullnode、short node、value node及hash node。
4.一种数据读取方法,其特征在于,包括:
从本地数据库中读取数据;其中,所述数据通过protocol buffers协议定义的梅克尔帕特里夏树(MPT)各类节点的结构体编码生成,所述结构体包括第一参数;
通过解析所述数据中各节点的第一参数获取各所述节点的节点类型和位置信息。
5.根据权利要求4所述的方法,其特征在于,所述节点类型包括以下至少一项:fullnode、short node、value node及hash node。
6.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-5中任一项所述的方法。
7.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
CN201811643200.3A 2018-12-29 2018-12-29 数据存储方法、数据读取方法、设备和存储介质 Active CN109710620B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811643200.3A CN109710620B (zh) 2018-12-29 2018-12-29 数据存储方法、数据读取方法、设备和存储介质
PCT/CN2019/127997 WO2020135434A1 (zh) 2018-12-29 2019-12-24 数据存储方法、数据读取方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811643200.3A CN109710620B (zh) 2018-12-29 2018-12-29 数据存储方法、数据读取方法、设备和存储介质

Publications (2)

Publication Number Publication Date
CN109710620A true CN109710620A (zh) 2019-05-03
CN109710620B CN109710620B (zh) 2021-03-16

Family

ID=66259731

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811643200.3A Active CN109710620B (zh) 2018-12-29 2018-12-29 数据存储方法、数据读取方法、设备和存储介质

Country Status (2)

Country Link
CN (1) CN109710620B (zh)
WO (1) WO2020135434A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110099069A (zh) * 2019-05-17 2019-08-06 赛尔网络有限公司 一种智慧充电桩数据传输装置、处理系统及方法
CN111209341A (zh) * 2020-01-07 2020-05-29 北京众享比特科技有限公司 区块链的数据存储方法、装置、设备及介质
WO2020135434A1 (zh) * 2018-12-29 2020-07-02 杭州复杂美科技有限公司 数据存储方法、数据读取方法、设备和存储介质
US10761948B1 (en) 2019-07-13 2020-09-01 Alibaba Group Holding Limited Method, apparatus, and electronic device for restoring state data of blockchain
WO2021017421A1 (zh) * 2019-07-31 2021-02-04 创新先进技术有限公司 区块链状态数据恢复方法及装置、电子设备
CN112506918A (zh) * 2020-11-03 2021-03-16 深圳市宏电技术股份有限公司 数据存取方法、终端及计算机可读存储介质
CN112506918B (zh) * 2020-11-03 2024-06-04 深圳市宏电技术股份有限公司 数据存取方法、终端及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560523B2 (en) * 2008-06-26 2013-10-15 Microsoft Corporation View matching of materialized XML views
CN107092656A (zh) * 2017-03-23 2017-08-25 中国科学院计算技术研究所 一种树状结构数据处理方法及系统
CN107786339A (zh) * 2016-08-31 2018-03-09 陈新 分层可控联盟区块链系统
CN108039943A (zh) * 2017-12-06 2018-05-15 清华大学深圳研究生院 一种可验证的加密搜索方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052321B (zh) * 2017-12-28 2020-12-25 杭州趣链科技有限公司 一种基于配置信息自动生成区块链智能合约的方法
CN109710620B (zh) * 2018-12-29 2021-03-16 杭州复杂美科技有限公司 数据存储方法、数据读取方法、设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560523B2 (en) * 2008-06-26 2013-10-15 Microsoft Corporation View matching of materialized XML views
CN107786339A (zh) * 2016-08-31 2018-03-09 陈新 分层可控联盟区块链系统
CN107092656A (zh) * 2017-03-23 2017-08-25 中国科学院计算技术研究所 一种树状结构数据处理方法及系统
CN108039943A (zh) * 2017-12-06 2018-05-15 清华大学深圳研究生院 一种可验证的加密搜索方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JISEN: ""RLP 递归长度前缀"", 《知乎LEAP BLOCKCHAIN HTTPS://ZHUANLAN.ZHIHU.COM/P/37587956》 *
佛系布偶: ""以太坊源码解读(22)merkle-Patricia Tries(MPT)默克前缀树原理"", 《CSDN HTTPS://BLOG.CSDN.NET/LJ900911/ARTICLE/DETAILS/84981395》 *
陈志东: ""基于众筹业务的私有区块链研究"", 《信息安全研究》 *
马宇生: ""基于区块链技术的安全DNS系统设计"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020135434A1 (zh) * 2018-12-29 2020-07-02 杭州复杂美科技有限公司 数据存储方法、数据读取方法、设备和存储介质
CN110099069A (zh) * 2019-05-17 2019-08-06 赛尔网络有限公司 一种智慧充电桩数据传输装置、处理系统及方法
CN110099069B (zh) * 2019-05-17 2021-07-20 赛尔网络有限公司 一种智慧充电桩数据传输装置、处理系统及方法
US10761948B1 (en) 2019-07-13 2020-09-01 Alibaba Group Holding Limited Method, apparatus, and electronic device for restoring state data of blockchain
WO2021017421A1 (zh) * 2019-07-31 2021-02-04 创新先进技术有限公司 区块链状态数据恢复方法及装置、电子设备
CN111209341A (zh) * 2020-01-07 2020-05-29 北京众享比特科技有限公司 区块链的数据存储方法、装置、设备及介质
CN111209341B (zh) * 2020-01-07 2023-03-14 北京众享比特科技有限公司 区块链的数据存储方法、装置、设备及介质
CN112506918A (zh) * 2020-11-03 2021-03-16 深圳市宏电技术股份有限公司 数据存取方法、终端及计算机可读存储介质
CN112506918B (zh) * 2020-11-03 2024-06-04 深圳市宏电技术股份有限公司 数据存取方法、终端及计算机可读存储介质

Also Published As

Publication number Publication date
CN109710620B (zh) 2021-03-16
WO2020135434A1 (zh) 2020-07-02

Similar Documents

Publication Publication Date Title
CN109710620A (zh) 数据存储方法、数据读取方法、设备和存储介质
CN109684333A (zh) 一种数据存储及裁剪方法、设备和存储介质
US6973460B1 (en) Framework for applying operations to nodes of an object model
US7921137B2 (en) Methods and systems for providing semantic primitives
Crainic et al. Progressive hedging‐based metaheuristics for stochastic network design
CN109359222A (zh) 数据存储方法及系统、设备和存储介质
US6925470B1 (en) Method and apparatus for database mapping of XML objects into a relational database
CN109933592A (zh) 数据存储方法、数据回滚方法、设备和存储介质
US6941511B1 (en) High-performance extensible document transformation
CN111213137A (zh) 源基础设施数据与bis概念模式的对齐
CN110287170A (zh) 数据库升级方法、状态数据调用方法、设备和存储介质
EP2130138A2 (en) Method and apparatus for processing extensible markup language security messages using delta parsing technology
US20130144902A1 (en) Inductive synthesis of table-based string transformations
CN109977274A (zh) 一种数据查询和验证方法、系统、设备及存储介质
CN110175239A (zh) 一种知识图谱的构建方法及系统
US8140347B2 (en) System and method for speeding XML construction for a business transaction using prebuilt XML with static and dynamic sections
KR20080100348A (ko) Edi 문서 모델링 방법, 시스템, 및 컴퓨터 판독 가능 매체
CN109447639A (zh) 隐私交易余额扫描方法、设备和存储介质
CN108763546A (zh) 一种数据格式的转换方法、装置、存储介质及终端
CN110209662A (zh) 一种自动化加载数据的方法和装置
US20180341477A1 (en) Descriptor-transformer framework in an integration platform
CN110287196A (zh) 区块存储方法、平行链交易获取方法、设备和存储介质
CN106202438A (zh) 存储关联数据的方法和系统
CN103345501A (zh) 数据库更新方法和装置
US20070294677A1 (en) Apparatus and method for processing cobol data record schemas having disparate formats

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
GR01 Patent grant
GR01 Patent grant