System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及区块链、存储、金融科技领域和其他,尤其地涉及一种用于区块链的数据存储方法、装置、设备、介质和程序产品。
技术介绍
1、随着区块链产业不断发展,区块链应用场景逐步复杂化和多样化,区块链存储数据量大幅增加,在相关技术中的区块链主要采用原生梅克尔树模型对数据进行存储。
2、在实现本公开的构思过程中,专利技术人发现,相关技术中,在原生梅克尔树模型中随着存储节点数据量的增多,由于数据存储在各个节点中分布不均,导致整个区块链节点的数据存储性能较差,进而影响区块链的数据读取和写入性能。
技术实现思路
1、鉴于上述问题,本公开提供了一种用于区块链的数据存储方法、装置、设备、介质和程序产品。
2、根据本公开的第一个方面,提供了一种用于区块链的数据存储方法,包括:
3、响应于接收到的区块链节点的待存储数据,对上述待存储数据进行哈希处理,得到上述待存储数据的哈希值;
4、按照预设的分配规则,根据上述待存储数据的哈希值,将上述待存储数据存储至与上述哈希值对应的目标存储节点;
5、对上述待存储数据与上述目标存储节点中的原始数据进行处理,得到上述目标存储节点的哈希值;
6、根据上述目标存储节点的哈希值,变更与上述目标存储容器关联的父级存储节点的哈希值;以及
7、将上述目标存储节点的哈希值和上述父级存储节点的哈希值存储在数据库中。
8、根据本公开的实施例,上述对上述待存储数据与上述目标存储节点中的原始数据进
9、对上述待存储数据与上述目标存储节点中的原始数据进行排序,得到目标数据序列;
10、对上述目标数据序列进行哈希处理,得到上述目标存储节点的哈希值。
11、根据本公开的实施例,上述对上述待存储数据与上述目标存储节点中的原始数据进行排序,得到目标数据序列,包括:
12、将上述待存储数据排在上述原始数据的前面,得到初始数据序列,其中,上述初始数据序列中包括s个数据,s为大于1的整数;
13、响应于第s个数据的值大于上述第s+1个数据的值的情况下,交换上述第s个数据和上述第s+1个数据的位置,生成第一数据序列,s为大于等于1小于s的整数;
14、在确定上述第s+1个数据的值小于等于第s+2个数据的值的情况下,返回执行生成第一数据序列的操作,并递增s;
15、在确定上述s个数据的值沿着预定方向逐渐增大的情况下,得到目标数据序列。
16、根据本公开的实施例,上述用于区块链的数据存储方法,还包括:
17、在对上述待存储数据进行哈希处理之前,将上述待存储数据存储至缓存节点。
18、根据本公开的实施例,上述用于区块链的数据存储方法,还包括:
19、响应于上述缓存节点的数据存储量大于预定阈值,基于页面置换算法,从上述缓存节点的已缓存数据中确定目标数据;以及
20、删除上述目标数据。
21、根据本公开的实施例,上述将上述目标存储节点的哈希值和上述父级存储节点的哈希值存储在数据库中,包括:
22、将上述目标存储节点的哈希值和上述父级存储节点的哈希值,以哈希值为键,以与存储节点对应的业务标识为值,存储在键值数据库中。
23、根据本公开的实施例,上述将上述目标存储节点的哈希值和上述父级存储节点的哈希值存储在数据库中,包括:
24、将上述目标存储节点的哈希值和上述父级存储节点的哈希值,以与存储节点对应的业务之间的关联关系,存储在关系型数据库中。
25、本公开的第二方面提供了一种数据存储装置,包括:
26、第一处理模块模块,用于响应于接收到的区块链节点的待存储数据,对上述待存储数据进行哈希处理,得到上述待存储数据的哈希值。
27、第一存储模块,用于按照预设的分配规则,根据上述待存储数据的哈希值,将上述待存储数据存储至与上述哈希值对应的目标存储节点;
28、第二处理模块,用于对上述待存储数据与上述目标存储节点中的原始数据进行处理,得到上述目标存储节点的哈希值;
29、变更模块,用于根据上述目标存储节点的哈希值,变更与上述目标存储容器关联的父级存储节点的哈希值;以及
30、第二存储模块,用于将上述目标存储节点的哈希值和上述父级存储节点的哈希值存储在数据库中。
31、本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得一个或多个处理器执行上述用于区块链的数据存储方法。
32、本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述用于区块链的数据存储方法。
33、本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述用于区块链的数据存储方法。
34、根据本公开的实施例,通过对待存储数据进行哈希处理,将数据存储在与其哈希值对应的存储节点中,并对存储节点的数据进行重排序,变更存储节点的哈希值,从而实现存储节点中的存储数据均匀分配,避免某个存储节点数据量过大,影响整体的读写性能。
本文档来自技高网...【技术保护点】
1.一种用于区块链的数据存储方法,包括:
2.根据权利要求1所述的方法,其中,所述对所述待存储数据与所述目标存储节点中的原始数据进行处理,得到所述目标存储节点的哈希值,包括:
3.根据权利要求2所述的方法,其中,所述对所述待存储数据与所述目标存储节点中的原始数据进行排序,得到目标数据序列,包括:
4.根据权利要求1所述的方法,还包括:
5.根据权利要求4所述的方法,还包括:
6.根据权利要求1所述的方法,其中,所述将所述目标存储节点的哈希值和所述父级存储节点的哈希值存储在数据库中,包括:
7.根据权利要求1所述的方法,其中,所述将所述目标存储节点的哈希值和所述父级存储节点的哈希值存储在数据库中,包括:
8.一种用于区块链的数据存储装置,包括:
9.一种电子设备,包括:
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实
...【技术特征摘要】
1.一种用于区块链的数据存储方法,包括:
2.根据权利要求1所述的方法,其中,所述对所述待存储数据与所述目标存储节点中的原始数据进行处理,得到所述目标存储节点的哈希值,包括:
3.根据权利要求2所述的方法,其中,所述对所述待存储数据与所述目标存储节点中的原始数据进行排序,得到目标数据序列,包括:
4.根据权利要求1所述的方法,还包括:
5.根据权利要求4所述的方法,还包括:
6.根据权利要求1所述的方法,其中,所述将所述目标存储节点的哈希值和所述父级存储...
【专利技术属性】
技术研发人员:曹飞,张宏,凡颖,王银燕,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。