一种数据处理方法、设备及介质技术

技术编号:33299671 阅读:15 留言:0更新日期:2022-05-06 12:05
本申请提供了一种数据处理方法、设备及介质,用于提升数据存储速度,避免发生卡顿的情况。方法包括:确定可读写文件中任一键值对数据的键的类别;根据所述键值对数据的键的类别,将所述键值对数据写入至少一个中间文件中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据;若第一中间文件满足预设条件,将所述第一中间文件转化为磁盘中第0层的排序字符串表,所述第一中间文件为所述至少一个中间文件中的任一中间文件。所述至少一个中间文件中的任一中间文件。所述至少一个中间文件中的任一中间文件。

【技术实现步骤摘要】
一种数据处理方法、设备及介质


[0001]本申请涉及到数据存储领域,尤其涉及到一种数据处理方法、设备及介质。

技术介绍

[0002]levelDB是一种持久化键值(key value,KV)单机数据库(database,DB)。大部分区块链系统使用levelDB作为索引数据库或者状态数据库。例如,现有的Fabric区块链系统框架中的索引数据库和状态数据库均使用levelDB。索引数据库用于存储关于交易的存放区块的位置、交易的偏移值、交易是否有效等信息。状态数据库中存储了交易中所有键的最新值。
[0003]在levelDB进行写操作的过程中,如图1所示,首先将键值对数据写入内存中的可读写文件(memtable)中。当memtable写满时,转化为只读文件(immutable memtable),并生成新的memtable。而immutable memtable落盘为磁盘第0层中的排序字符串表(sorted string table,SST)。由于memtable中存在键值重叠,因而immutable memtable中也存在键值重叠,以及其落盘后的SST中也存在键值重叠。并且与磁盘第0层中的其它SST之间也存在键值重叠。由于磁盘第0层中的SST之间存在键值重叠,造成磁盘第0层向第1层进行归并的速度较慢。
[0004]在数据库高吞吐率的场景中,第0层向第1层归并的速度较慢,immutable memtable需要等待第0层向第1层归并结束后,才能落盘到磁盘中第0层的SST。若磁盘中第0层向第1层归并花费大量的时间,会导致内存中immutable memtable因未能落盘,出现memtable写满后,无法转化为immutable memtable,也无法继续向memtable写入数据的情况。
[0005]针对该情况,现有技术会在通过先降低向levelDB写入操作的速度,来平衡数据写入memtable速度和第0层向第1层归并速度,若第0层向第1层归并速度小于levelDB写入速度,则会阻止向levelDB中的写入操作。这样的处置策略会使客户端在写入数据时出现周期性的卡顿,造成超时。

技术实现思路

[0006]本申请的目的在于提供一种数据处理方法、设备及介质,用于提升数据存储速度,避免发生写入数据时出现卡顿以及超时的情况。
[0007]第一方面,本申请提供一种数据处理方法,该方法包括:确定可读写文件中任一键值对数据的键的类别。然后,根据所述键值对数据的键的类别,将所述键值对数据写入至少一个中间文件中。其中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据。若第一中间文件满足预设条件,将所述第一中间文件转化为磁盘中第0层的排序字符串表,所述第一中间文件为所述至少一个中间文件中任一中间文件。
[0008]在上述技术方案中,将可读写文件中的键值对数据根据键的类型进行分类,将确定出类别的键值对数据写入存储相同类别键值对数据的中间文件中。中间文件的数量可以
为一个或多个。若所述至少一个中间文件中的第一中间文件满足预设条件,可以将第一中间文件转化为磁盘中第0层的排序字符串表。磁盘中第0层由第一中间文件转化的排序字符串表与其它的排序字符串表中的键值对数据的键的类别不同,因而磁盘中第0层的排序字符串表之间不在键值重叠,提升了磁盘中的第0层向第1层归并速度,不需要降低向数据库写入操作的速度。
[0009]一种可能的设计中,所述键的类别与所述键值对数据所在数据库中键的字典相同。
[0010]在上述技术方案中,所述键值对所在数据库中键的字典可以包括多个字段。根据数据库中键的字典,对键值对数据进行分类。中间文件中存储字典中的一个字段的键值对数据,并在中间文件满足预设条件后转化为磁盘中的第0层的排序字符串表,并且磁盘中的第0层的一个排序字符串表中也包含一个字段的键值对数据,不同排序字符串表中的键值对数据的字段不同,无键重叠,从而提升了磁盘中第0层向第1层归并速度。
[0011]一种可能的设计中,所述字典包括如下至少一项:元数据、区块索引、交易有效性数据、区块有效性数据、对象所在文件偏移、对象有效状态、对象所在区块。
[0012]在上述技术方案中,数据库的字典可以根据应用数据库的场景进行设置。如存储文件场景中,数据库的字典可以包括元数据、区块索引、交易、区块有效性数据中的至少一个字段。再如区块链交易场景中,数据库的字典可以包括对象所在文件偏移、对象有效状态、对象所在区块等一个或多个字段。
[0013]一种可能的设计中,所述预设条件包括:所述第一中间文件的文件大小大于或等于文件大小阈值。
[0014]在上述技术方案中,若第一中间文件的文件大小大于或等于文件大小阈值,触发第一中间文件转化为磁盘中第0层的排序字符串表。通过调整文件大小阈值,改变磁盘中第0层的排序字符串表向第1层归并的起始时间。
[0015]一种可能的设计中,在所述确定可读写文件中任一数据的类别之前,所述方法还包括:接收至少一个键值对数据,所述至少一个键值对数据携带有数据标识,所述数据标识包括生成所述键值对数据的时间戳。然后,根据所述至少一个键值对数据的各数据标识中的时间戳,将所述至少一个键值对数据写入所述可读写文件中,每个键值对数据中包括数据标识。
[0016]在上述技术方案中,接收的键值对数据可携带数据标识,数据标识中包括生成键值对数据的时间戳,依据接收的键值对数据携带的时间戳,向可读写文件中写入键值对数据,实现顺序写入。数据库处理大数据量场景中,将键值对数据顺序写入数据库,可以较好的提升数据库性能。键值对数据中包括数据标识,数据标识中携带的时间戳可以减少降低可读写文件中的数据出现键值重叠的可能性,从而使得中间文件中的键值对数据以及磁盘中第0层的排序字符串表中的键值对数据存在键值重叠的可能性较低,实现进一步提升磁盘中第0层的排序字符串表向第1层归并的速度。
[0017]一种可能的设计中,每个所述中间文件中的键值对数据是根据各键值对数据的数据标识中的时间戳排序的。
[0018]在上述技术方案中,中间文件中的键值对数据是根据生成键值对数据的时间戳排序的,数据库可以按照时间戳建立索引,用户在向数据库查询键值对数据时,数据库能够快
速的对用户的查询操作进行响应。
[0019]一种可能的设计中,所述数据标识还包括如下至少一项:用户身份信息、随机数、哈希值,其中,所述哈希值是基于所述用户身份信息和所述随机数确定的。
[0020]在上述技术方案中,为进一步降低可读写文件中的键值对数据键值重叠的可能性或者几率,数据标识还可以包括用户身份信息、随机数、基于用户身份信息和随机数确定的哈希值等信息。从而使得中间文件中的键值对数据以及磁盘中第0层的排序字符串表中的键值对数据存在键值重叠的可能性较低,实现进一步提升磁盘中第0层的排序字符串表向第1层归并的速度。第二方面,本申请提供一种数据处理方法,该方法包括:生成键值对数据,所述键值对数据中包括对应的数据标识,所述数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法包括:确定可读写文件中任一键值对数据的键的类别;根据所述键值对数据的键的类别,将所述键值对数据写入至少一个中间文件中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据;若第一中间文件满足预设条件,将所述第一中间文件转化为磁盘中第0层的排序字符串表,所述第一中间文件为所述至少一个中间文件中的任一中间文件。2.根据权利要求1所述的方法,其特征在于,所述键的类别与所述键值对数据所在数据库中键的字典相同。3.根据权利要求2所述的方法,其特征在于,所述字典包括如下至少一项:元数据、区块索引、交易有效性数据、区块有效性数据、对象所在文件偏移、对象有效状态、对象所在区块。4.根据权利要求1

3任一项所述的方法,其特征在于,所述预设条件包括:所述第一中间文件的文件大小大于或等于文件大小阈值。5.根据权利要求1

4任一项所述的方法,其特征在于,在所述确定可读写文件中任一键值对数据的键的类别之前,所述方法还包括:接收至少一个键值对数据,所述至少一个键值对数据携带有数据标识,所述数据标识包括生成所述键值对数据的时间戳;根据所述至少一个键值对数据的各数据标识中的时间戳,将所述至少一个键值对数据写入所述可读写文件中,每个键值对数据中包括数据标识。6.根据权利要求5所述的方法,其特征在于,每个所述中间文件中的键值对数据是根据键值对数据的数据标识中的时间...

【专利技术属性】
技术研发人员:郝利鹏王磊李阳东
申请(专利权)人:华为云计算技术有限公司
类型:发明
国别省市:

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

1