数据存储方法与装置制造方法及图纸

技术编号:18763982 阅读:24 留言:0更新日期:2018-08-25 10:34
本发明专利技术公开了一种数据存储方法,包括:基于待存储数据的键值信息,在用于表征存储架构的树表示中确定第一节点的位置,第一节点对应于待存储数据;基于第一节点的子节点的哈希信息和键值信息来确定第一节点的哈希信息,并且待存储数据的存储索引基于第一节点的哈希信息来确定;如果树表示中存在与第一节点哈希相关的节点,则基于第一节点的哈希信息,对在树表示中的与第一节点哈希相关的节点的哈希信息进行更新。

【技术实现步骤摘要】
数据存储方法与装置
本专利技术属于计算机领域,尤其涉及一种能够应用在区块链中的数据存储方法与装置。
技术介绍
区块链技术是基于去中心化的对等网络,将密码学和分布式共识等技术相结合而创造一套安全的分布式系统。区块链的存储,可以简单地分为区块数据和状态数据两种。一般而言,区块数据包含了区块链本身的存储,即包括区块头信息和区块打包的交易数据;状态数据是区块链账本状态的描述,一般以键值对的方式进行存储。区块数据和状态数据存在如下关系:区块数据中的交易数据是对状态数据的变更记录,而状态数据是区块数据执行的结果反映。然而,当前存储区块链的状态数据的方法并不支持并发操作,无法满足大量请求的区块链系统。因此,亟需提供一种能够支持并发操作的存储方法。
技术实现思路
本专利技术针对当前区块链的数据存储不支持并发操作的问题,提出了一种通过对存储内容的改变进而实现支持并发操作的存储方法。本专利技术首先提出了一种数据处理方法,包括:基于待存储数据的键值信息,在用于表征存储架构的树表示中确定第一节点的位置,所述第一节点对应于所述待存储数据;基于所述第一节点的子节点的哈希信息和所述键值信息来确定所述第一节点的哈希信息,并且所述待存储数据的存储索引基于所述第一节点的哈希信息来确定;如果所述树表示中存在与所述第一节点哈希相关的节点,则基于所述第一节点的哈希信息,对在所述树表示中的与所述第一节点哈希相关的节点的哈希信息进行更新。本专利技术还提出了一种数据恢复方法,其包括基于指定节点的哈希信息来确定与之对应的节点数据,其中,所述节点数据包括所述经存储的数据的键值信息以及所述指定节点的子节点的哈希信息;基于所述指定节点的哈希信息以及所述子节点的哈希信息来确定以所述指定节点为根节点的树表示,其中,所述树表示用于表征存储架构本专利技术的还提出了一种用于数据存储的装置,其包括:处理器;存储器,其用于存储指令,当所述指令在执行时,使得所述处理器执行以下操作:基于待存储数据的键值信息,在用于表征存储架构的树表示中确定第一节点的位置,所述第一节点对应于所述待存储数据;基于所述第一节点的子节点的哈希信息和所述键值信息来确定所述第一节点的哈希信息,并且所述待存储数据的存储索引基于所述第一节点的哈希信息来确定;如果所述树表示中存在与所述第一节点哈希相关的节点,则基于所述第一节点的哈希信息,对在所述树表示中的与所述第一节点哈希相关的节点的哈希信息进行更新。本专利技术的还提出了一种用于数据恢复的装置,其包括:处理器;存储器,其用于存储指令,当所述指令在执行时,使得所述处理器执行以下操作:基于指定节点的哈希信息来确定与之对应的节点数据,其中,所述节点数据包括所述经存储的数据的键值信息以及所述指定节点的子节点的哈希信息;基于所述指定节点的哈希信息以及所述子节点的哈希信息来确定以所述指定节点为根节点的树表示,其中,所述树表示用于表征存储架构。本专利技术还提出了一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,当所述指令被执行时,执行以上涉及到数据存储和/或恢复方法。相较于传统方法,通过本专利技术的技术方案,能够提升状态数据的更新速度,够获得与指定树结构匹配的性能,并且对状态数据的任何修改都会反映到根节点上。另外,树结构的左右子树的操作互不影响,能够实现并发操作。附图说明参考附图示出并阐明实施例。这些附图用于阐明基本原理,从而仅仅示出了对于理解基本原理必要的方面。这些附图不是按比例的。在附图中,相同的附图标记表示相似的特征。图1为默克尔树的示意图;图2为依据本专利技术实施例的基于默克尔树的红黑树结构的示意图;图3为依据本专利技术实施例的对应于无数据状态下插入数据的示意图;图4a、4b为依据本专利技术实施例的在图3的红黑树结构中插入数据的示意图;图5为依据本专利技术实施例的数据存储的流程图;图6为依据本专利技术实施例的数据恢复的流程图。具体实施方式在以下优选的实施例的具体描述中,将参考构成本专利技术一部分的所附的附图。所附的附图通过示例的方式示出了能够实现本专利技术的特定的实施例。示例的实施例并不旨在穷尽根据本专利技术的所有实施例。可以理解,在不偏离本专利技术的范围的前提下,可以利用其他实施例,也可以进行结构性或者逻辑性的修改。因此,以下的具体描述并非限制性的,且本专利技术的范围由所附的权利要求所限定。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。首先对本专利技术所涉及的术语进行阐述。哈希(Hash)用于把任意长度的输入变换成指定长度的输出,该输出就是哈希值。通过不同的哈希算法(譬如但不限于MD5、SHA、RIPEMD、国密SM3等)来确定的哈希值皆可用于本专利技术。“树表示”是指用来表征逻辑上的存储架构,可以包括红黑树(RedBlackTree)、B树(Balancedtree)、默克尔树(MerkleTree)等等。“树表示处于空状态”表示此时没有具体的键值数据基于该树表示存储在数据库中。对于本专利技术的实施例而言,空状态旨在说明此时的树表示(譬如,红黑树)只有一个根节点和两个空的子节点,根节点没有相对应的键值数据。当一节点的哈希值变化时,进而影响到的其它节点哈希值,则将该节点与受影响的节点之间认为是哈希相关。专利技术人通过大量的实践发现,对于区块链的交易数据,可以通过例如默克尔树来实现对交易数据的存储。图1中的默克尔树的叶子节点存放具体的存储数据,每个中间节点存放其子节点内容合并后的哈希信息。具体而言,根据默克尔树的结构来存储多个数据时,将对与该多个数据相关的哈希信息进行处理。如图1所示,数据Dn分别具有与之相对应的哈希信息Hn。因此,当任何一个叶子节点存储的哈希信息发生变更时,这个变更便会反映根节点的具体数据的变化。在现有的区块链系统中,默克尔树主要被用来存储交易数据,而交易数据本身是比较扁平简单,不会更新的,所以默克尔树可以很好地完成交易数据的存储。然而,由于状态数据变化频繁,默克尔树并不适合存储状态数据。另外,基于默克尔树的数据结构,往往只能对数据进行读取、写入,难以进行查找,并且由于与叶子节点对应的哈希信息与其下一层两个节点相关,因此,基于默克尔树的数据结构难以进行并发操作。针对上述问题,本专利技术提出一种基于默克尔树的数据存储方法,通过该方法,能够实现对数据的查找以及实施并行处理。下面以红黑树为例,对该数据存储方法进行阐述。本领域技术人员可以理解的,虽然这里以红黑树为例,但是其它类型的树也可以和默克尔树相结合。图2示出了依据本专利技术实施例的基于默克尔树的红黑树结构,其中,阴影节点是黑节点,无阴影的节点是红节点。如图2所示,节点1对应于哈希信息H1,节点6对应于哈希信息H6,其中,哈希信息H6可以由表达式(1)来表示:H6=hash(K6:V6+hash(nil)+hash(nil))(1)其中,K6:V6为与节点6对应的键值对数据,K6为键值名,V6为键值,hash(nil)为空节点的哈希值。由于节点1是节点6的上层节点,因此,哈希信息H1中的信息可以由表达式(2)来表示:H1=hash(K1:V1+hash(nil)+has本文档来自技高网...

【技术保护点】
1.一种数据存储方法,其特征在于,包括:基于待存储数据的键值信息,在用于表征存储架构的树表示中确定第一节点的位置,所述第一节点对应于所述待存储数据;基于所述第一节点的子节点的哈希信息和所述键值信息来确定所述第一节点的哈希信息,并且所述待存储数据的存储索引基于所述第一节点的哈希信息来确定;如果所述树表示中存在与所述第一节点哈希相关的节点,则基于所述第一节点的哈希信息,对在所述树表示中的与所述第一节点哈希相关的节点的哈希信息进行更新。

【技术特征摘要】
1.一种数据存储方法,其特征在于,包括:基于待存储数据的键值信息,在用于表征存储架构的树表示中确定第一节点的位置,所述第一节点对应于所述待存储数据;基于所述第一节点的子节点的哈希信息和所述键值信息来确定所述第一节点的哈希信息,并且所述待存储数据的存储索引基于所述第一节点的哈希信息来确定;如果所述树表示中存在与所述第一节点哈希相关的节点,则基于所述第一节点的哈希信息,对在所述树表示中的与所述第一节点哈希相关的节点的哈希信息进行更新。2.如权利要求1所述的方法,其特征在于,所述树表示还包括第二节点,并且基于所述第一节点的键值信息和所述第二节点的键值信息来确定所述第一节点的位置,若第一节点被确定作为所述第二节点的一个子节点,则基于所述第一节点和所述第二节点的另一个子节点来确定所述第二节点的哈希信息,并且相较于所述第二节点,先存储所述第一字节点的哈希信息和所述待存储数据;若第一节点被确定作为所述第二节点的根节点,则基于所述第二节点和所述第一节点的另一个子节点来确定所述第一节点的哈希信息。3.如权利要求1所述的方法,其特征在于,当所述树表示处于空状态时,所述树表示中的根节点和所述根节点的子节点均为空节点。4.如权利要求1所述的方法,其特征在于,基于预定大小的数据处理单位来确定所述待存储数据的键值信息。5.如权利要求1所述的方法,其特征在于,所述树表示是红黑树。6.一种数据恢复的方法,其特征在于,包括:基于指定节点的哈希信息来确定与之对应的节点数据,其中,所述节点数据包括所述经存储的数据的键值信息以及所述指定节点的子节点的哈希信息;基于所述指定节点的哈希信息以及所述子节点的哈希信息来确定以所述指定节点为根节点的树表示,其中,所述树表示用于表征存储架构。7.一种用于数据存储的装置,其特征在于,包括:处理器;存储器,其用于存储指令,当所述指令在执行时,使得所述处理器执行以下操作:基于待存储数据的键值信息,在用...

【专利技术属性】
技术研发人员:杜君君
申请(专利权)人:众安信息技术服务有限公司
类型:发明
国别省市:广东,44

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

1