CN117785890A - 一种基于lsm树的数据遍历查询方法及相关设备 - Google Patents

一种基于lsm树的数据遍历查询方法及相关设备 Download PDF

Info

Publication number
CN117785890A
CN117785890A CN202410217427.0A CN202410217427A CN117785890A CN 117785890 A CN117785890 A CN 117785890A CN 202410217427 A CN202410217427 A CN 202410217427A CN 117785890 A CN117785890 A CN 117785890A
Authority
CN
China
Prior art keywords
key
hash
target
storage
value data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410217427.0A
Other languages
English (en)
Inventor
黄华
时昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202410217427.0A priority Critical patent/CN117785890A/zh
Publication of CN117785890A publication Critical patent/CN117785890A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书提供了一种基于LSM树的数据遍历查询方法及相关设备。LSM树的每个存储层包括对应不同哈希取值范围的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围匹配的key‑value数据。响应于针对LSM树的遍历查询请求,获取LSM树在目标时刻的静态快照;从静态快照中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内的目标key‑value数据,如果在目标存储层之上的若干存储层中与该第一哈希取值范围相匹配的第二哈希取值范围对应的第二存储空间内未存储与该目标key对应的数据,则将该目标key‑value数据作为遍历查询结果。

Description

一种基于LSM树的数据遍历查询方法及相关设备
技术领域
本说明书一个或多个实施例涉及数据库技术领域,尤其涉及一种基于LSM树的数据遍历查询方法及相关设备。
背景技术
常规的日志结构合并树(The Log-Structured Merge Tree,LSM-Tree)中包含了多个存储层,每个存储层可以用于存储键值对(key-value,KV)数据,并且随着数据的不断更新,各个存储层中存储的key-value数据会不断向下层合并。
在一些数据遍历查询的场景中,例如全表查询,往往需要对LSM树中的每个存储层中存储的所有key-value数据进行遍历,以获取全部的数据。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于LSM树的数据遍历查询方法及相关设备。
第一方面,本说明书提供了一种基于LSM树的数据遍历查询方法,所述LSM树包括多个存储层,每个存储层包括与不同的哈希取值范围对应的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据;所述方法包括:
响应于针对所述LSM树的遍历查询请求,获取所述LSM树在目标时刻的静态快照,所述静态快照中包括所述LSM树的多个存储层中存储的在所述目标时刻前写入的key-value数据;
从所述静态快照包括的所述多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,确定位于所述目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围;以及,
确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;
若否,则将所述目标key-value数据作为遍历查询结果。
第二方面,本说明书提供了一种基于LSM树的数据遍历查询装置,所述LSM树包括多个存储层,每个存储层包括与不同的哈希取值范围对应的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据;所述装置包括:
静态快照获取单元,用于响应于针对所述LSM树的遍历查询请求,获取所述LSM树在目标时刻的静态快照,所述静态快照中包括所述LSM树的多个存储层中存储的在所述目标时刻前写入的key-value数据;
第一确定单元,用于从所述静态快照包括的所述多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,确定位于所述目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围;以及,
第二确定单元,用于确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;
第一遍历查询结果获取单元,用于若否,则将所述目标key-value数据作为遍历查询结果。
相应地,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面所述的基于LSM树的数据遍历查询方法。
相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面所述的基于LSM树的数据遍历查询方法。
相应地,本说明书还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时,执行如上述第一方面所述的基于LSM树的数据遍历查询方法。
综上所述,本申请首先将LSM树中的每个存储层都划分成了与多个哈希取值范围对应的多个存储空间,并且每个存储空间仅用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据。应理解,若两个key-value数据具有相同的key,则这两个key-value数据必然存储于与同一哈希取值范围对应的存储空间内。相应的,本申请在接收到针对LSM树的遍历查询请求后,可以获取该LSM树在目标时刻的静态快照,该静态快照中包括该LSM树的多个存储层中存储的在目标时刻前写入的key-value数据。进一步地,本申请从静态快照包括的多个存储层中的第1个存储层开始遍历,针对遍历到的任一层中的任意一个key-value数据,只需向上层查询与该key-value数据所在的哈希取值范围对应的存储空间内是否存在相同key的数据,若不存在,则说明当前遍历到的该key-value数据为与该key对应的最新版本数据,可以作为遍历查询结果。如此,本申请在保证遍历查询仅需返回当前所有的最新数据的前提下,缩小了查询范围,避免了反复读取每层的所有数据,极大程度上提升数据遍历查询的效率。
附图说明
图1是一示例性实施例提供的一种基于LSM树的数据遍历查询方法的流程示意图;
图2是一示例性实施例提供的一种哈希取值范围的示意图;
图3是一示例性实施例提供的一种哈希文件的内部数据组织示意图;
图4是一示例性实施例提供的一种基于LSM树的数据遍历查询装置的结构示意图;
图5是一示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
需要说明的是,本申请中所述的“多个”是指两个或者两个以上。
本说明书提供了一种技术方案,通过将LSM树中的每个存储层划分为与不同的哈希取值范围对应的多个存储空间,在保证遍历查询仅需返回当前所有的最新数据的前提下,避免了反复读取每层的所有数据,提升了数据遍历效率。
在实现时,LSM树的多个存储层中的每个存储层可以包括与不同的哈希取值范围对应的多个存储空间。其中,每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据。在接收到针对该LSM树的遍历查询请求后,存储引擎可以获取该LSM树在目标时刻的静态快照,该静态快照中包括该LSM树的多个存储层中存储的在目标时刻前写入的key-value数据。进一步地,存储引擎可以从静态快照包括的多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,存储引擎可以先确定位于该目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围;以及,确定该若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与该目标key对应的key-value数据;若是,则可以将该目标key-value数据作为遍历查询结果。
在以上技术方案中,本申请首先将LSM树中的每个存储层都划分成了与多个哈希取值范围对应的多个存储空间,并且每个存储空间仅用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据。应理解,若两个key-value数据具有相同的key,则这两个key-value数据必然存储于与同一哈希取值范围对应的存储空间内。相应的,本申请在遍历LSM树的过程中,针对遍历到的任一层中的任意一个key-value数据,只需向上层查询与该key-value数据所在的哈希取值范围对应的存储空间内是否存在相同key的数据,若不存在,则说明当前遍历到的该key-value数据为与该key对应的最新版本数据,可以作为遍历查询结果。如此,本申请在保证遍历查询仅需返回当前所有的最新数据的前提下,缩小了查询范围,避免了反复读取每层的所有数据,极大程度上提升数据遍历查询的效率。
请参阅图1,图1是一示例性实施例提供的一种基于LSM树的数据遍历查询方法的流程示意图。该方法可以应用于数据库的存储引擎中,具体可以应用于基于完美哈希索引的采用LSM树组织数据的存储引擎中。如图1所示,该方法具体可以包括如下步骤S101-步骤S104。
步骤S101,响应于针对LSM树的遍历查询请求,获取所述LSM树在目标时刻的静态快照,所述静态快照中包括所述LSM树的多个存储层中存储的在所述目标时刻前写入的key-value数据;其中,所述LSM树的每个存储层包括与不同的哈希取值范围对应的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据。
需要说明的是,LSM树通常包括用于存储key-value数据的多个存储层,其中,该多个存储层具体可以包括内存和磁盘中的多个文件层。
在一示出的实施方式中,内存中可以包括多个内存表,具体可以包括支持读写的内存表MemTable和只读的内存表ImmuMemTable。在本申请中,该多个内存表也可以分别视作LSM树中的多个存储层,在进行遍历查询时需要先依次遍历内存中的MemTable和ImmuMemTable等,具体可参考后续实施例的描述。
在一示出的实施方式中,磁盘中的多个文件层具体可以包括Level 0-Level N层,N为大于或者等于1的整数。一般情况下,磁盘中各个文件层的存储容量从Level 0层至Level N层可以逐渐增大,每一层的存储容量可以是上一层的2倍、4倍或者8倍,等等,本说明书对此不做具体限定。
综上,在本申请中,LSM树的多个存储层可以依次包括:内存中的MemTable、ImmuMemTable,以及磁盘中的Level 0层、Level 1层、Level 2层,等等。
应理解,在LSM树的存储结构中,最新的数据通常会先写入内存的MemTable中,当MemTable中的数据累积到一定的规模后,可以将MemTable转化为ImmuMemTable,再将其中的数据写入磁盘的Level 0层。进一步地,当Level 0层的数据积累到一定规模之后,再将Level 0层的数据合并至Level1层,以此类推,此处不再展开赘述。
在一示出的实施方式中,本申请针对LSM树中的每个存储层,可以采用哈希的方式对数据进行分片组织。具体地,本申请可以将每个存储层划分为与不同的哈希取值范围(HashRange)对应的多个存储空间。其中,每个存储空间可以用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据。示例性的,所谓key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据,可以是指:将key的哈希值与预设值进行取模运算之后,得到的数值在与该存储空间对应的哈希取值范围之内的key-value数据。示例性的,上述取模运算的预设值可以是512、1024或者2048,等等,具体可以根据每个存储层实际的数据量大小来设置,本说明书对此不做具体限定。
在一示出的实施方式中,若当前存储层是内存中的内存表,则与不同的哈希取值范围对应的多个存储空间具体可以是内存空间中的多个子空间。在一示出的实施方式中,若当前存储层是磁盘中的文件层,则与不同的哈希取值范围对应的多个存储空间具体可以是文件层中的多个哈希文件。
在一示出的实施方式中,请参阅图2,图2是一示例性实施例提供的一种哈希取值范围的示意图。图2中以LSM树的多个存储层分别包括MemTable、Level 0层、Level 1层和Level 2层为例。
如图2所示,本申请可以将内存中的MemTable划分为与4个哈希取值范围对应的4个存储空间。其中,0~255为第1个哈希取值范围, 256~511为第2个哈希取值范围,512~767为第3个哈希取值范围,768~1023为第4个哈希取值范围。示例性的,若新写入的key-value数据的key的哈希值为1028,其与1024进行取模运算后得到的数据值为4,则可以将该key-value数据写入与0~255哈希取值范围对应的存储空间中。
如图2所示,本申请可以将磁盘中的Level 0层划分为与4个哈希取值范围对应的4个哈希文件。其中,0~255为第1个哈希取值范围, 256~511为第2个哈希取值范围,512~767为第3个哈希取值范围,768~1023为第4个哈希取值范围。相应的,当MemTable被写满后,位于MemTable的0~255哈希取值范围内的key-value数据在写入Level 0层时,具体可以写入Level 0层中与0~255哈希取值范围对应的哈希文件中(即第1个哈希文件),且写入时可以与该哈希文件中存储的key-value数据进行合并,等等,此处不再展开详述,本申请对LSM树中各层次的文件合并方式不作特别限定。
如图2所示,由于Level 1层的数据规模大于Level 0层,因此本申请可以将Level1层划分为与16个哈希取值范围对应的16个哈希文件。其中,0~63为第1个哈希取值范围,64~127为第2个哈希取值范围,128~191为第3个哈希取值范围,192~255为第4个哈希取值范围,256~319为第5个哈希取值范围,等等,具体可参见图2。
如图2所示,对于Level2层来说,由于其数据规模更大,本申请可以切分更多的哈希取值范围,从而确保单个哈希取值范围内的数据规模不会过大,即保证各层每个哈希文件大小相近。如图2所示,本申请可以将Level2层划分为与64个哈希取值范围对应的64个哈希文件。其中,0~15为第1个哈希取值范围,16~31为第2个哈希值范围,1008~1023为第64个哈希值范围,等等,具体可参见图2。
此外,针对磁盘中的各个文件层中包含的各个哈希文件,本申请可以为每个哈希文件中存储的key-value数据构建完美哈希索引。
在一示出的实施方式中,请参阅图3,图3是一示例性实施例提供的一种哈希文件的内部数据组织示意图。如图3所示,哈希文件中具体可以包括:完美哈希索引参数(PhCtxt)、多个完美哈希slot、与该多个完美哈希slot中保存的key-value数据中的key对应的哈希值。
其中,完美哈希索引参数可以用于计算与哈希文件中存储的多个key-value数据分别对应的哈希槽位(slot)以及完美哈希值等,以构建针对该多个key-value数据的完美哈希索引。
其中,多个完美哈希slot按序排列,且该多个slot中的至少部分slot中保存了对应的key-value数据,比如slot0中存储了KV0,slot1中存储了KV1,slot3中存储了KV3。如图3所示,slot2中的数据可以为空(empty),即哈希槽位的数量可以大于实际存储的key-value数据,以降低完美哈希的计算难度,等等,此处不再展开详述。
其中,多个哈希值的排列顺序可以与前述多个完美哈希slot一一对应,比如图3所示的多个哈希值依次包括与slot0中的KV0对应的哈希值H0,与slot1中的KV1对应的哈希值H1,与slot3中的KV3对应的哈希值H3。在一示出的实施方式中,每个哈希值的长度可以是32bit或者64bit等,本说明书对此不做具体限定。
需要说明的是,图3仅为示例性说明,在一些可能的实施方式中,每个哈希文件中还可以包含其他任何可能的数据,例如还可以包含每个完美哈希slot在文件中的偏移地址(offset),等等,本说明书对此不做具体限定。
下面,将基于以上论述的数据分层组织以及哈希取值范围划分的方案,对本申请提供的数据遍历方法进行阐述。
在一示出的实施方式中,存储引擎在执行数据遍历查询时可以从LSM树的多个存储层中的第1个存储层开始,依次遍历每个存储层中存储的key-value数据,并将遍历到的数据进行返回。
需要说明的是,对于LSM树的多层数据来说,同一个key可能在多个存储层中都包含数据。其中,MemTable中包含最新写入的数据,Level0层包含次新的数据,而Level1包含更旧的数据,Level2则包含最早写入的数据。
示例性的,以图2所示的哈希取值范围划分方式为例,对于用户输入的某个keyA,假设其对应的哈希值为15,与该keyA对应的最早写入的数据keyA,ValueA-Version1保存在Level2层与0-15哈希取值范围对应的第1个文件中。后面用户又针对该keyA更新了一个新的版本Version2,该数据keyA,ValueA-Version2则保存在Level1层的第1个文件中。而当前最新版本的数据keyA,ValueA-Version3则保存在Level0层的第1个文件中。如此,本申请在进行数据遍历查询时,只需要返回Level0层中保存的最新的Version3版本的数据即可,其他层中的旧版本数据在后续的文件合并(Compaction)中会被新版本数据给覆盖掉。
具体地,在一示出的实施方式中,响应于针对该LSM树的遍历查询请求,存储引擎可以先获取该LSM树在目标时刻的静态快照,或者说全局静态快照。其中,该静态快照中可以包括多个存储层中存储的在该目标时刻前写入的所有key-value数据,例如包含MemTable,ImmuMemTable以及Level0、Level1等各个文件层中存储的在该目标时刻前写入的所有key-value数据。
此外,在前台写入数据时,每条key-value数据都包含一个全局唯一且线性递增的系统序列号(Sequence Number,SeqNum)。在获取到静态快照后,实际内存的MemTable中的数据可能还在持续更新,也就是说全局的SeqNum还在持续递增,但是本申请后续的遍历过程中将不涉及任何SeqNum大于静态快照中的最大序列号(CurrentSeqNum)的key-value数据记录。
进一步地,存储引擎在获取到静态快照后,可以从该静态快照包括的多个存储层中的第1个存储层开始,依次遍历每个存储层中存储的key-value数据。
示例性的,存储引擎先遍历MemTable中与多个哈希取值范围对应的存储空间内存储的key-value数据。由于最新的数据会先写入MemTable,因此MemTable中存储的key-value数据均为最新版本的数据,存储引擎可以直接将在MemTable中遍历到的所有key-value数据(序列号均小于或等于CurrentSeqNum)作为遍历查询结果,并返回给用户。
进一步地,存储引擎在遍历完内存的MemTable之后,可以遍历内存中的ImmuMemTable。若内存中包含多个ImmuMemTable,则可以先遍历最新创建的ImmuMemTable,再遍历较早创建的ImmuMemTable,以此类推。
进一步地,在遍历完ImmuMemTable之后,存储引擎可以开始依次遍历磁盘中的Level 0层、Level 1层和Level 2层等。
步骤S102,从所述静态快照包括的所述多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,确定位于所述目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围。
在一示出的实施方式中,对于存储最新数据的MemTable之外的其他存储层,都需要先确定在当前存储层中遍历到的每一个key-value数据是否为最新版本的数据,即确定在当前存储层之上的若干个存储层中是否存有相同key的数据,从而保证遍历查询返回的数据均是当前最新版本的数据。
具体地,在一示出的实施方式中,针对当前遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,存储引擎需要确定位于当前目标存储层之上的若干个存储层中是否存储了与该目标key对应的key-value数据。
首先,存储引擎可以先确定位于该目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围。在一示出的实施方式中,与第一哈希取值范围相匹配的第二哈希取值范围可以包含该第一哈希取值范围,或者与该第一哈希取值范围相等。
需要说明的是,本申请中所指的“第一”和“第二”是为了区别不同的对象,例如除第一哈希取值范围之外的其他与之匹配的哈希取值范围均可称为第二哈希取值范围,“第一”和“第二”并不是特指某一对象,也不具有先后顺序关系。
示例性的,仍以图2所示的哈希取值范围划分方式为例,若当前遍历到的目标存储层为磁盘中的Level0层,且当前遍历到了Level0层中与0-255哈希取值范围(即上述第一哈希取值范围)对应的第1个哈希文件中的目标key-value数据,则可以先确定位于该Level0层之上的MemTable中与该0-255哈希取值范围相匹配的0-255哈希取值范围(即上述第二哈希取值范围)。
示例性的,仍以图2所示的哈希取值范围划分方式为例,若当前遍历到的目标存储层为磁盘中的Level2层,且当前遍历到了Level2层中与0-15哈希取值范围(即上述第一哈希取值范围)对应的第1个哈希文件中的目标key-value数据,则可以先确定位于该Level2层之上的MemTable中与该0-15哈希取值范围相匹配的0-255哈希取值范围(即上述第二哈希取值范围),以及进一步确定位于该Level2层之上的Level0层中与该0-15哈希取值范围相匹配的0-255哈希取值范围(即上述第二哈希取值范围),以及进一步确定Level1层中与该0-15哈希取值范围相匹配的0-63哈希取值范围(即上述第二哈希取值范围)。
步骤S103,确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据。
进一步地,存储引擎可以确定上述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内存储的key-value数据中,是否包含与该目标key对应的key-value数据。
具体地,在一示出的实施方式中,存储引擎可以先确定LSM树的第1个存储层(例如MemTable)包括的与该第二哈希范围对应的第二存储空间内存储的key-value数据中是否包含与上述目标key对应的key-value数据。
若不包含,则进一步确定第2个存储层(例如ImmuMemTable)包括的与该第二哈希范围对应的第二存储空间内存储的key-value数据中是否包含与该目标key对应的key-value数据,以此类推,直至该目标存储层的相邻上一个存储层。
在一示出的实施方式中,若上述若干个存储层中的任一存储层包括的第二存储空间内存储的key-value数据中包含与该目标key对应的key-value数据,说明上层中已包含与该目标key对应的最新版本数据,此时无需再向其他存储层查询是否包含目标key的数据,并且可以直接过滤掉该目标key-value数据,或者说忽略该目标key-value数据,转而进一步遍历该目标存储层中存储的其他key-value数据。
在一示出的实施方式中,在遍历磁盘中的文件层时,本申请可以通过哈希值比较的方式来确定各个文件层中是否包含目标key的数据,而不需要读取出实际的key-value数据来确定。
具体地,存储引擎可以先获取目标存储层中与第一哈希取值范围对应的第一哈希文件内存储的,与该目标key-value数据中的目标key对应的目标哈希值。以及,获取目标存储层之上的若干个文件层各自包括的与上述第二哈希取值范围对应的第二哈希文件内存储的,与多个key-value数据的key分别对应的多个哈希值。
进一步地,存储引擎可以依次确定该若干个文件层各自包括的第二哈希文件内存储的多个哈希值中是否包含上述目标哈希值。
在一示出的实施方式中,若每个文件层包括的第二哈希文件内存储的多个哈希值中均不包含上述目标哈希值,则可以确定位于该目标存储层之上的若干个文件层中均不包含与该目标key对应的key-value数据。
在一示出的实施方式中,若任一文件层包括的第二哈希文件内存储的多个哈希值中包含上述目标哈希值,考虑到哈希冲突的可能性,此时需要进一步获取该文件层包括的第二哈希文件内存储的与该目标哈希值对应的若干个key-value数据,并进一步确定该若干个key-value数据中是否包含与上述目标key对应的key-value数据。
可以理解的是,哈希文件中存储的key-value数据是编码后的数据,相应的,存储引擎在确定该若干个key-value数据中是否包含与目标key对应的key-value数据时,具体可以包括:对该若干个key-value数据进行解码,得到该若干个key-value数据中的若干个key,并确定该若干个key中是否包含该目标key。
示例性的,以当前遍历到了Level1层中与0-63哈希取值范围对应的第1个哈希文件中的key_a为例,该第1个哈希文件中存储的与key_a对应的哈希值可以为H0。存储引擎可以获取Level0层中与0-255哈希取值范围对应的第1个哈希文件中存储的多个哈希值。
在一示出的实施方式中,若该多个哈希值中不包含H0,则确定Level0层中不包含与key_a对应的key-value数据。
在一示出的实施方式中,若该多个哈希值中包含H0,则进一步从Level0层的第1个哈希文件中读取出与哈希值H0对应的至少一个key-value数据,并对该至少一个key-value数据进行解码,得到对应的至少一个key,并进一步确定该至少一个key中是否包含key_a。
如此,通过哈希值比较的方式,可以尽可能的避免读取实际的key-value数据并进行解码等较为复杂耗时的操作,进一步提升了数据遍历查询的效率。
步骤S104,若否,则将所述目标key-value数据作为遍历查询结果。
如上所述,如果位于目标存储层之上的若干个存储层各自包括的与第二哈希取值范围对应的第二存储空间内存储的key-value数据中,均不包含与该目标key对应的key-value数据,则可以确定当前遍历到的目标存储层中存储的该目标key-value数据是与该目标key对应的最新版本数据,进而可以将该目标key-value数据作为遍历查询结果。
在一示出的实施方式中,上述遍历查询请求中可以包含相应的查询条件,以对遍历到的数据进行筛选或者说过滤,从而获得满足用户查询需求的数据。
相应的,如果位于目标存储层之上的若干个存储层各自包括的与第二哈希取值范围对应的第二存储空间内存储的key-value数据中,均不包含与该目标key对应的key-value数据,本申请还可以进一步确定该目标key-value数据是否满足上述遍历查询请求中包含的查询条件;若是,则可以将该目标key-value数据作为遍历查询结果;若否,则过滤掉该目标key-value数据,并进一步遍历其他的key-value数据。
示例性的,以LSM树中存储的key-value数据为线上交易记录,且上述查询条件为交易金额大于500元为例,针对遍历到的每一层中的每一条key-value数据,在确定其上层中未存储相同key的数据后,可以进一步确定该key-value数据中包含的交易金额是否大于500元,若是,则可以将当前遍历到的该key-value数据作为遍历查询结果。如此,实现了通过遍历所有交易记录,从而筛选出其中交易金额大于500元的部分交易记录。
与上述方法流程实现对应,本说明书的实施例还提供了一种基于LSM树的数据遍历查询装置。请参阅图4,图4是一示例性实施例提供的一种基于LSM树的数据遍历查询装置的结构示意图,该装置40可以应用于基于LSM树的存储引擎,其中,LSM树包括多个存储层,每个存储层包括与不同的哈希取值范围对应的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据。如图4所示,该装置40包括:
静态快照获取单元401,用于响应于针对所述LSM树的遍历查询请求,获取所述LSM树在目标时刻的静态快照,所述静态快照中包括所述LSM树的多个存储层中存储的在所述目标时刻前写入的key-value数据;
第一确定单元402,用于从所述静态快照包括的所述多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,确定位于所述目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围;以及,
第二确定单元403,用于确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;
第一遍历查询结果获取单元404,用于若否,则将所述目标key-value数据作为遍历查询结果。
在一示出的实施方式中,所述遍历查询结果获取单元404,具体用于:
确定所述目标key-value数据是否满足所述遍历查询请求中包含的查询条件,若是,则将所述目标key-value数据作为遍历查询结果。
在一示出的实施方式中,key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据,包括:将key的哈希值与预设值进行取模运算之后,得到的数值在与该存储空间对应的哈希取值范围内的key-value数据。
在一示出的实施方式中,所述第二确定单元403,具体用于:
确定第1个存储层包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;
若否,则进一步确定第2个存储层包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据,以此类推,直至所述目标存储层的相邻上一个存储层。
在一示出的实施方式中,所述装置40还包括过滤单元405,用于:
若所述若干个存储层中的任一存储层包括的第二存储空间内存储了与所述目标key对应的key-value数据,则过滤掉所述目标key-value数据,并进一步遍历所述目标存储层中存储的其他key-value数据。
在一示出的实施方式中,所述LSM树包括的所述多个存储层包括:内存中的多个内存表,以及磁盘中的多个文件层。
在一示出的实施方式中,所述装置40还包括第二遍历查询结果获取单元406,用于:
针对遍历到的第1个存储层,将所述第1个存储层中存储的所有key-value数据作为遍历查询结果;其中,所述第1个存储层为所述内存的多个内存表中最新创建的内存表。
在一示出的实施方式中,所述磁盘中的每个文件层包括与不同的哈希取值范围对应的多个哈希文件,每个哈希文件用于存储:多个key-value数据、与所述多个key-value数据中的key分别对应的哈希值,以及与所述多个key-value数据对应的完美哈希参数;
其中,所述完美哈希参数用于计算与所述多个key-value数据中的key分别对应的完美哈希值,以构建针对所述多个key-value数据的完美哈希索引。
在一示出的实施方式中,所述目标存储层为所述磁盘中除第1个文件层之外的任一文件层,所述若干个存储层包括位于所述目标存储层之上的若干个文件层;所述第二确定单元403,具体用于:
获取所述目标存储层中的第一哈希文件内存储的与所述目标key-value数据中的目标key对应的目标哈希值;以及,
获取所述若干个文件层各自包括的与所述第二哈希取值范围对应的第二哈希文件内存储的与多个key-value数据的key分别对应的多个哈希值;
根据获取到的所述目标哈希值和所述多个哈希值,确定所述若干个文件层各自包括的第二哈希文件内存储的多个key-value数据中,是否包含与所述目标key对应的key-value数据。
在一示出的实施方式中,所述第二确定单元403,具体用于:
依次确定所述若干个文件层各自包括的第二哈希文件内存储的多个哈希值中是否包含所述目标哈希值;
若每个文件层包括的第二哈希文件内存储的多个哈希值中均不包含所述目标哈希值,则确定所述若干个文件层各自包括的第二哈希文件内不包含与所述目标key对应的key-value数据;
若任一文件层包括的第二哈希文件内存储的多个哈希值中包含所述目标哈希值,则进一步获取该文件层包括的第二哈希文件内存储的与该目标哈希值对应的若干个key-value数据;以及,
确定该若干个key-value数据中是否包含与所述目标key对应的key-value数据。
在一示出的实施方式中,存储的key-value数据为编码后的数据;所述第二确定单元403,具体用于:
对该若干个key-value数据进行解码,得到该若干个key-value数据中的若干个key,并确定该若干个key中是否包含所述目标key。
上述装置40中各个单元的功能和作用的实现过程具体详见上述图1-图3对应实施例的描述,在此不再进行赘述。应理解,上述装置40可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的处理器(CPU)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了CPU以及存储器之外,上述装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备、车载计算机或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机设备。请参阅图5,图5是一示例性实施例提供的一种计算机设备的结构示意图。图5所示的计算机设备中可以搭载有基于LSM树的存储引擎,其中,LSM树包括多个存储层,每个存储层包括与不同的哈希取值范围对应的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据。如图5所示,该计算机设备包括处理器1001和存储器1002,进一步还可以包括输入设备1004(例如键盘等)和输出设备1005(例如显示器等)。处理器1001、存储器1002、输入设备1004和输出设备1005之间可以通过总线或其他方式连接。如图5所示,存储器1002包括计算机可读存储介质1003,该计算机可读存储介质1003存储有能够由处理器1001运行的计算机程序。处理器1001可以是CPU,微处理器,或用于控制以上方法实施例执行的集成电路。处理器1001在运行存储的计算机程序时,可以执行本说明书实施例中基于LSM树的数据遍历查询方法的各个步骤,包括:响应于针对该LSM树的遍历查询请求,获取所述LSM树在目标时刻的静态快照,所述静态快照中包括所述LSM树的多个存储层中存储的在所述目标时刻前写入的key-value数据;从所述静态快照包括的所述多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,确定位于所述目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围;以及,确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;若否,则将所述目标key-value数据作为遍历查询结果,等等。
对上述基于LSM树的数据遍历查询方法的各个步骤的详细描述请参见之前的内容,此处不再进行赘述。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中基于LSM树的数据遍历查询方法的各个步骤。具体请参见上述图1-图3对应实施例的描述,此处不再进行赘述。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
在一个典型的配置中,终端设备包括一个或多个CPU、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (15)

1.一种基于LSM树的数据遍历查询方法,其特征在于,所述LSM树包括多个存储层,每个存储层包括与不同的哈希取值范围对应的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据;所述方法包括:
响应于针对所述LSM树的遍历查询请求,获取所述LSM树在目标时刻的静态快照,所述静态快照中包括所述LSM树的多个存储层中存储的在所述目标时刻前写入的key-value数据;
从所述静态快照包括的所述多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,确定位于所述目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围;以及,
确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;
若否,则将所述目标key-value数据作为遍历查询结果。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标key-value数据作为遍历查询结果,包括:
确定所述目标key-value数据是否满足所述遍历查询请求中包含的查询条件,若是,则将所述目标key-value数据作为遍历查询结果。
3.根据权利要求1所述的方法,其特征在于,key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据,包括:将key的哈希值与预设值进行取模运算之后,得到的数值在与该存储空间对应的哈希取值范围内的key-value数据。
4.根据权利要求1所述的方法,其特征在于,所述确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据,包括:
确定第1个存储层包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;
若否,则进一步确定第2个存储层包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据,以此类推,直至所述目标存储层的相邻上一个存储层。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述若干个存储层中的任一存储层包括的第二存储空间内存储了与所述目标key对应的key-value数据,则过滤掉所述目标key-value数据,并进一步遍历所述目标存储层中存储的其他key-value数据。
6.根据权利要求1所述的方法,其特征在于,所述LSM树包括的所述多个存储层包括:内存中的多个内存表,以及磁盘中的多个文件层。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
针对遍历到的第1个存储层,将所述第1个存储层中存储的所有key-value数据作为遍历查询结果;其中,所述第1个存储层为所述内存的多个内存表中最新创建的内存表。
8.根据权利要求6所述的方法,其特征在于,所述磁盘中的每个文件层包括与不同的哈希取值范围对应的多个哈希文件,每个哈希文件用于存储:多个key-value数据、与所述多个key-value数据中的key分别对应的哈希值,以及与所述多个key-value数据对应的完美哈希参数;
其中,所述完美哈希参数用于计算与所述多个key-value数据中的key分别对应的完美哈希值,以构建针对所述多个key-value数据的完美哈希索引。
9.根据权利要求8所述的方法,其特征在于,所述目标存储层为所述磁盘中除第1个文件层之外的任一文件层,所述若干个存储层包括位于所述目标存储层之上的若干个文件层;所述确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据,包括:
获取所述目标存储层中的第一哈希文件内存储的与所述目标key-value数据中的目标key对应的目标哈希值;以及,
获取所述若干个文件层各自包括的与所述第二哈希取值范围对应的第二哈希文件内存储的与多个key-value数据的key分别对应的多个哈希值;
根据获取到的所述目标哈希值和所述多个哈希值,确定所述若干个文件层各自包括的第二哈希文件内存储的多个key-value数据中,是否包含与所述目标key对应的key-value数据。
10.根据权利要求9所述的方法,其特征在于,所述根据获取到的所述目标哈希值和所述多个哈希值,确定所述若干个文件层各自包括的第二哈希文件内存储的多个key-value数据中,是否包含与所述目标key对应的key-value数据,包括:
依次确定所述若干个文件层各自包括的第二哈希文件内存储的多个哈希值中是否包含所述目标哈希值;
若每个文件层包括的第二哈希文件内存储的多个哈希值中均不包含所述目标哈希值,则确定所述若干个文件层各自包括的第二哈希文件内不包含与所述目标key对应的key-value数据;
若任一文件层包括的第二哈希文件内存储的多个哈希值中包含所述目标哈希值,则进一步获取该文件层包括的第二哈希文件内存储的与该目标哈希值对应的若干个key-value数据;以及,
确定该若干个key-value数据中是否包含与所述目标key对应的key-value数据。
11.根据权利要求9所述的方法,其特征在于,存储的key-value数据为编码后的数据;所述确定该若干个key-value数据中是否包含与所述目标key对应的key-value数据,包括:
对该若干个key-value数据进行解码,得到该若干个key-value数据中的若干个key,并确定该若干个key中是否包含所述目标key。
12.一种基于LSM树的数据遍历查询装置,其特征在于,所述LSM树包括多个存储层,每个存储层包括与不同的哈希取值范围对应的多个存储空间;每个存储空间用于存储key的哈希值与该存储空间对应的哈希取值范围相匹配的key-value数据;所述装置包括:
静态快照获取单元,用于响应于针对所述LSM树的遍历查询请求,获取所述LSM树在目标时刻的静态快照,所述静态快照中包括所述LSM树的多个存储层中存储的在所述目标时刻前写入的key-value数据;
第一确定单元,用于从所述静态快照包括的所述多个存储层中的第1个存储层开始遍历,针对遍历到的目标存储层中与第一哈希取值范围对应的第一存储空间内存储的目标key-value数据,确定位于所述目标存储层之上的若干个存储层中与该第一哈希取值范围相匹配的第二哈希取值范围;以及,
第二确定单元,用于确定所述若干个存储层各自包括的与该第二哈希取值范围对应的第二存储空间内是否存储了与所述目标key对应的key-value数据;
第一遍历查询结果获取单元,用于若否,则将所述目标key-value数据作为遍历查询结果。
13.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1至11任意一项所述的方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序/指令,所述计算机程序/指令被处理器执行时实现如权利要求1至11任意一项所述的方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现如权利要求1至11任意一项所述的方法。
CN202410217427.0A 2024-02-27 2024-02-27 一种基于lsm树的数据遍历查询方法及相关设备 Pending CN117785890A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410217427.0A CN117785890A (zh) 2024-02-27 2024-02-27 一种基于lsm树的数据遍历查询方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410217427.0A CN117785890A (zh) 2024-02-27 2024-02-27 一种基于lsm树的数据遍历查询方法及相关设备

Publications (1)

Publication Number Publication Date
CN117785890A true CN117785890A (zh) 2024-03-29

Family

ID=90385274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410217427.0A Pending CN117785890A (zh) 2024-02-27 2024-02-27 一种基于lsm树的数据遍历查询方法及相关设备

Country Status (1)

Country Link
CN (1) CN117785890A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153707A (zh) * 2017-05-12 2017-09-12 华中科技大学 一种针对非易失内存的哈希表构建方法及系统
WO2019144100A1 (en) * 2018-01-22 2019-07-25 President And Fellows Of Harvard College Key-value stores with optimized merge policies and optimized lsm-tree structures
CN112000846A (zh) * 2020-08-19 2020-11-27 东北大学 基于gpu分组lsm树索引的方法
CN113821171A (zh) * 2021-09-01 2021-12-21 浪潮云信息技术股份公司 一种基于哈希表与lsm树的键值存储方法
CN113961514A (zh) * 2021-12-20 2022-01-21 支付宝(杭州)信息技术有限公司 数据查询方法及装置
CN114328545A (zh) * 2022-03-03 2022-04-12 北京蚂蚁云金融信息服务有限公司 数据存储及查询方法、装置及数据库系统
WO2022246953A1 (zh) * 2021-05-25 2022-12-01 南京大学 一种面向lsm树的键值存储方法和存储系统
CN116303580A (zh) * 2023-05-06 2023-06-23 支付宝(杭州)信息技术有限公司 数据查询方法、装置及数据库系统
CN116909939A (zh) * 2023-07-04 2023-10-20 浙江大学 基于lsm树的键值分离存储引擎垃圾回收方法、系统及设备
CN117348804A (zh) * 2023-09-27 2024-01-05 北京智融云河科技有限公司 面向数联网监管系统的分层存储方法、系统及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153707A (zh) * 2017-05-12 2017-09-12 华中科技大学 一种针对非易失内存的哈希表构建方法及系统
WO2019144100A1 (en) * 2018-01-22 2019-07-25 President And Fellows Of Harvard College Key-value stores with optimized merge policies and optimized lsm-tree structures
CN112000846A (zh) * 2020-08-19 2020-11-27 东北大学 基于gpu分组lsm树索引的方法
WO2022246953A1 (zh) * 2021-05-25 2022-12-01 南京大学 一种面向lsm树的键值存储方法和存储系统
CN113821171A (zh) * 2021-09-01 2021-12-21 浪潮云信息技术股份公司 一种基于哈希表与lsm树的键值存储方法
CN113961514A (zh) * 2021-12-20 2022-01-21 支付宝(杭州)信息技术有限公司 数据查询方法及装置
CN114328545A (zh) * 2022-03-03 2022-04-12 北京蚂蚁云金融信息服务有限公司 数据存储及查询方法、装置及数据库系统
WO2023165272A1 (zh) * 2022-03-03 2023-09-07 蚂蚁云创数字科技(北京)有限公司 数据存储及查询
CN116303580A (zh) * 2023-05-06 2023-06-23 支付宝(杭州)信息技术有限公司 数据查询方法、装置及数据库系统
CN116909939A (zh) * 2023-07-04 2023-10-20 浙江大学 基于lsm树的键值分离存储引擎垃圾回收方法、系统及设备
CN117348804A (zh) * 2023-09-27 2024-01-05 北京智融云河科技有限公司 面向数联网监管系统的分层存储方法、系统及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JUNGHYUN LEE; TAEHYEON KWON; MINJUN SEO; SUNGWON JUNG: "Hierarchical Quadrant Spatial LSM Tree for Indexing Blockchain-Based Geospatial Point Data", IEEE ACCESS, 20 October 2023 (2023-10-20), pages 2169 - 3536 *
吕萌;华文镝;谢平: "基于LSM树的键值存储系统技术研究综述", 计算机科学, 31 August 2023 (2023-08-31), pages 1 - 15 *
英昌甜;王维庆;于炯;卞琛;国冰磊;祁雷;: "内存计算环境下基于索引结构的内存优化策略", 新疆大学学报(自然科学版), no. 01, 29 January 2018 (2018-01-29), pages 17 - 25 *

Similar Documents

Publication Publication Date Title
US10878052B2 (en) Blockchain-based cross-chain data operation method and apparatus
CN110149803B (zh) 数据存储方法、系统及终端设备
CN108280229B (zh) 内存数据读写方法和装置
CN113961514B (zh) 数据查询方法及装置
CN107015985B (zh) 一种数据存储与获取方法及装置
CN111324665B (zh) 一种日志回放方法及装置
CN113220685B (zh) 智能合约存储内容的遍历方法及装置、电子设备
CN111737265B (zh) 区块数据访问方法、区块数据存储方法及装置
CN112988761B (zh) 区块链数据存储方法及装置、电子设备
CN114064979A (zh) 一种加速获取raid的存储数据的方法、计算机及存储介质
CN107092624B (zh) 数据存储方法、装置及系统
CN117785890A (zh) 一种基于lsm树的数据遍历查询方法及相关设备
CN113779286B (zh) 管理图数据的方法及装置
CN112988911B (zh) 区块链数据存储方法及装置、电子设备
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN112131226A (zh) 索引获得方法、数据查询方法、及相关装置
CN112988910A (zh) 区块链数据存储方法及装置、电子设备
CN117785889A (zh) 一种针对图数据库的索引管理方法及相关设备
CN111459949B (zh) 针对数据库的数据处理方法、装置及设备和索引更新方法
US20150278117A1 (en) Method and apparatus method and apparatus for controlling access to a hash-based disk
CN117891414A (zh) 一种基于完美哈希的数据存储方法及相关设备
CN117406919A (zh) 一种基于lsm树的数据存储方法及相关设备
CN117056542A (zh) 一种海量文件归档及智能调度方法、设备、介质
CN115729471A (zh) 一种重删查询方法、装置、设备和存储介质
CN117806567A (zh) 数据处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination