一种数据写入方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:37745625 阅读:14 留言:0更新日期:2023-06-05 23:32
本公开提供了一种数据写入方法、装置、计算机设备和存储介质,其中,该方法包括:响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;目标数组包括当前建立的可验证结构数组中每层的最大节点序号;可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与节点树一致的层级结构;根据目标数据生成新的叶子节点的节点摘要信息,并根据目标数组确定新的叶子节点的节点序号;根据新的叶子节点的节点摘要信息,对节点树进行更新,得到更新后的节点树,并利用新的叶子节点的节点序号,对目标数组进行更新,得到更新后的目标数组;其中,节点树更新完成用于表征目标数据写入成功。完成用于表征目标数据写入成功。完成用于表征目标数据写入成功。

【技术实现步骤摘要】
一种数据写入方法、装置、计算机设备和存储介质


[0001]本公开涉及区块链
,具体而言,涉及一种数据写入方法、装5置、计算机设备和存储介质。

技术介绍

[0002]在区块链技术中,服务端在存储来自客户端的交易数据时,通常采集默克尔树(Merkle Tree)的方式进行数据存储,但传统的Merkle Tree不仅
[0003]存在冗余的中间节点的计算,还会在数据插入和删除时频繁进行随机I/O的0读取,导致数据写入的复杂度较高,降低了数据写入的效率。

技术实现思路

[0004]本公开实施例至少提供一种数据写入方法、装置、计算机设备和存储介质。
[0005]第一方面,本公开实施例提供了一种数据写入方法,包括:5响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;
[0006]所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;
[0007]0根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;
[0008]根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。
[0009]在一种可能的实施方式中,所述根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:
[0010]在所述节点序号为偶数的情况下,根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树;所述目标节点的节点摘要信息存储在所述缓存中。
[0011]在一种可能的实施方式中,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:
[0012]根据所述更新后的节点树对应的各个新生成节点的节点序号和节点连接关系,对所述可验证结构数组进行更新,得到更新后的可验证结构数组;所述新生成节点至少包括所述新的叶子节点和所述新的叶子节点的父节点;
[0013]根据所述更新后的可验证结构数组的每层的最大节点序号,对所述目标数组进行更新,得到更新后的目标数组;
[0014]在得到所述更新后的目标数组之后,还包括:
[0015]利用所述更新后的目标数组,对所述缓存中存储的目标数组进行更新。
[0016]在一种可能的实施方式中,在所述节点序号为奇数的情况下,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:
[0017]将所述新的叶子节点的所述节点序号,添加在所述可验证结构数组与叶子节点所匹配的层级中,得到更新后的所述可验证结构数组;
[0018]将所述目标数组中排序顺序位为首位的最大节点序号替换为所述新的叶子节点的节点序号,得到更新后的目标数组;其中,所述目标数组中的各个最大节点序号的排序顺序位,为根据各个最大节点序号在所述节点树中所属的层级,按照从低到高的顺序确定的。
[0019]在一种可能的实施方式中,所述根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:
[0020]根据所述新的叶子节点的节点摘要信息和所述目标数组中排序顺序位为首位的最大节点序号对应的目标节点的节点摘要信息,生成所述新的叶子节点的目标父节点以及所述目标父节点的节点摘要信息;
[0021]确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点;
[0022]若否,则根据所述目标父节点的节点摘要信息和所述下一个最大节点序号对应的目标节点的节点摘要信息,生成新的目标父节点以及所述新的目标父节点的节点摘要信息;
[0023]返回所述确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点的步骤,直至所述目标数组遍历完成或存在已生成父节点;
[0024]根据已生成的各个所述目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
[0025]在一种可能的实施方式中,所述方法还包括:
[0026]在所述目标数组中的下一个最大节点序号对应的目标节点存在已生成父节点的情况下,根据所述新的叶子节点的目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
[0027]在一种可能的实施方式中,在得到更新后的节点树之后,还包括:
[0028]根据所述更新后的节点树,确定所述新的叶子节点对应的根集摘要;所述根集摘要中包括所述新的叶子节点对应的各个根集节点以及所述根集节点的节点摘要信息;
[0029]将所述新的叶子节点对应的根集摘要存储在第一目标文件中,以及,将所述更新后的节点树中除所述新的叶子节点以外的各个新生成节点的节点摘要信息存储在第二目标文件中。
[0030]第二方面,本公开实施例还提供一种数据写入装置,包括:
[0031]获取模块,用于响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;
[0032]确定模块,用于根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;
[0033]更新模块,用于根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。
[0034]第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
[0035]第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
[0036]关于上述数据写入装置、计算机设备、及计算机可读存储介质的效果描述参见上述数据写入方法的说明,这里不再赘述。
[0037]本公开实施例提供的数据写入方法、装置、计算机设备和存储介质,利本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据写入方法,其特征在于,包括:响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。2.根据权利要求1所述的方法,其特征在于,所述根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:在所述节点序号为偶数的情况下,根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树;所述目标节点的节点摘要信息存储在所述缓存中。3.根据权利要求2所述的方法,其特征在于,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:根据所述更新后的节点树对应的各个新生成节点的节点序号和节点连接关系,对所述可验证结构数组进行更新,得到更新后的可验证结构数组;所述新生成节点至少包括所述新的叶子节点和所述新的叶子节点的父节点;根据所述更新后的可验证结构数组的每层的最大节点序号,对所述目标数组进行更新,得到更新后的目标数组;在得到所述更新后的目标数组之后,还包括:利用所述更新后的目标数组,对所述缓存中存储的目标数组进行更新。4.根据权利要求1所述的方法,其特征在于,在所述节点序号为奇数的情况下,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:将所述新的叶子节点的所述节点序号,添加在所述可验证结构数组与叶子节点所匹配的层级中,得到更新后的所述可验证结构数组;将所述目标数组中排序顺序位为首位的最大节点序号替换为所述新的叶子节点的节点序号,得到更新后的目标数组;其中,所述目标数组中的各个最大节点序号的排序顺序位,为根据各个最大节点序号在所述节点树中所属的层级,按照从低到高的顺序确定的。5.根据权利要求2所述的方法,其特征在于,所述根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:根据所述新的叶子节点的节点摘要信息和所述目标数组中排序顺序位为首位的最大节点序...

【专利技术属性】
技术研发人员:张渊杨新颖刘洋
申请(专利权)人:北京火山引擎科技有限公司
类型:发明
国别省市:

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

1