数据处理方法技术

技术编号:39806809 阅读:10 留言:0更新日期:2023-12-22 02:40
本申请实施例提供了一种数据处理方法

【技术实现步骤摘要】
数据处理方法、装置、设备、可读存储介质及程序产品


[0001]本申请涉及计算机
,具体而言,本申请涉及一种数据处理方法

装置

设备

可读存储介质及程序产品


技术介绍

[0002]区块链是分布式数据存储

点对点传输

共识机制

加密算法等计算机技术的新型应用模式

区块链的区块中包含多个
KV(Key

Value
,键值对
)
,现有技术直接将区块中的多个
KV
写入到区块链的缓存中;例如,区块链中有
10
个区块,每个区块有1万个交易,每个交易中有
100

KV
,那么这
10
个区块总共有
10^7

KV
,每次写一个区块到缓存中,由于一个区块就要写
10^6

KV
,只能将
10^6

KV
串行写入缓存,导致每次写一个区块到缓存中,缓存的更新时间复杂度高达
O(n^3)
,持有锁的时间长,每次写一个区块到缓存的效率低

从区块链的缓存中读取
KV
,由于持有锁的时间长,导致从区块链的缓存中读取
KV
的效率低


技术实现思路

[0003]本申请针对现有的方式的缺点,提出一种数据处理方法

装置

设备

计算机可读存储介质及计算机程序产品,用于解决如何提升读写区块链的缓存的效率的问题

[0004]获取目标区块或区块链的目标键;
[0005]将目标区块中多个键值对写入到区块链的内存的区块缓存;或从区块缓存中读取与目标键对应的目标值;
[0006]其中,目标键和目标值构成键值对;区块缓存为第一级散列表,第一级散列表包括区块链的至少两个区块中每个区块的区块高度和每个区块的区块高度对应的第二级散列表,区块链的至少两个区块中每个区块的区块高度和每个区块的区块高度对应的第二级散列表构成键值对,第二级散列表包括多个第三级散列表,每个区块的全部键值对中每个键值对存储在多个第三级散列表中的任一个第三级散列表内

[0007]在一个实施例中,将目标区块中多个键值对写入到区块链的内存的区块缓存,包括:
[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]存储器,用于存储操作指令;
[0038]处理器,用于通过调用操作指令,执行本申请第一方面的数据处理方法

[0039]第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面的数据处理方法

[0040]第五方面,本申请提供了一种计算机程序产品,包括计算机程序,计算机程序被处
理器执行时实现本申请第一方面中数据处理方法的步骤

[0041]本申请实施例提供的技术方案,至少具有如下有益效果:
[0042]获取目标区块或区块链的目标键;将目标区块中多个键值对写入到区块链的内存的区块缓存;或从区块缓存中读取与目标键对应的目标值;其中,目标键和目标值构成键值对;区块缓存为第一级散列表,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据处理方法,其特征在于,包括:获取目标区块或区块链的目标键;将所述目标区块中多个键值对写入到所述区块链的内存的区块缓存;或从所述区块缓存中读取与所述目标键对应的目标值;其中,所述目标键和所述目标值构成键值对;所述区块缓存为第一级散列表,所述第一级散列表包括所述区块链的至少两个区块中每个区块的区块高度和所述每个区块的区块高度对应的第二级散列表,所述区块链的至少两个区块中每个区块的区块高度和所述每个区块的区块高度对应的第二级散列表构成键值对,所述第二级散列表包括多个第三级散列表,所述每个区块的全部键值对中每个键值对存储在所述多个第三级散列表中的任一个第三级散列表内
。2.
根据权利要求1所述的方法,其特征在于,所述将所述目标区块中多个键值对写入到所述区块链的内存的区块缓存,包括:获取新的第二级散列表;将所述目标区块中多个键值对写入到所述新的第二级散列表;将所述新的第二级散列表写入到所述区块链的内存的区块缓存
。3.
根据权利要求2所述的方法,其特征在于,所述获取新的第二级散列表,包括:基于所述区块链的内存中的对象池,获取新的第二级散列表
。4.
根据权利要求2所述的方法,其特征在于,所述将所述目标区块中多个键值对写入到所述新的第二级散列表,包括:通过哈希函数,将所述目标区块中多个键值对写入到所述新的第二级散列表对应的多个第三级散列表;所述多个键值对中每个键值对存储在所述新的第二级散列表对应的多个第三级散列表中的任一个第三级散列表内
。5.
根据权利要求2所述的方法,其特征在于,所述将所述新的第二级散列表写入到所述区块链的内存的区块缓存,包括:对所述第一级散列表加锁,并将所述新的第二级散列表和所述目标区块的区块高度,写入到所述第一级散列表内;所述新的第二级散列表与所述目标区块的区块高度构成键值对;对所述第一级散列表进行锁的释放
。6.
根据权利要求5所述的方法,其特征在于,所述将所述新的第二级散列表和所述目标区块的区块高度,写入到所述第一级散列表内,包括:将所述至少两个区块的区块高度中最小的区块高度,以及所述最小的区块高度对应的第二级散列表进行删除,并将所述新的第二级散列表和所述目标区块的区块高度,写入到所述第一级散列表内
。7.
根据权利要求1所述的方法,其特征在于,所述从所述区块缓存中读取与所...

【专利技术属性】
技术研发人员:陈永清
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1