CN114691041A - 键值存储系统、垃圾回收方法 - Google Patents
键值存储系统、垃圾回收方法 Download PDFInfo
- Publication number
- CN114691041A CN114691041A CN202210293809.2A CN202210293809A CN114691041A CN 114691041 A CN114691041 A CN 114691041A CN 202210293809 A CN202210293809 A CN 202210293809A CN 114691041 A CN114691041 A CN 114691041A
- Authority
- CN
- China
- Prior art keywords
- key
- sstable
- value
- tree
- memory
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000004064 recycling Methods 0.000 title claims description 6
- 230000015654 memory Effects 0.000 claims abstract description 75
- 230000002085 persistent effect Effects 0.000 claims abstract description 38
- 230000008569 process Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000011084 recovery Methods 0.000 abstract description 5
- 230000003321 amplification Effects 0.000 description 15
- 238000003199 nucleic acid amplification method Methods 0.000 description 15
- 238000007906 compression Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000010410 layer Substances 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种键值存储系统、垃圾回收方法,键值存储系统包括:持久内存,设有第一存储区域和第二存储区域;所述第一存储区域用于存储键值对的值;所述第二存储区域用于存储键值对的键以及键对应的地址;动态随机存取存储器,内设有B+树、内存表;所述B+树用于存储所述键值对的最新的索引值;所述内存表用于存储所述键值对的键以及键对应的地址。本发明直接使用持久内存来代替磁盘存储数据,利用了持久内存容量大,速度快的特点,构建了一个基于持久内存的高性能键值存储系统。
Description
技术领域
本发明涉及键值存储技术,特别是一种键值存储系统、垃圾回收方法。
背景技术
键值存储是最简单的数据库类型之一,具有查询速度快、存放数据量大、支持高并发等优点,并逐渐成为了各数据中心有效支持各种数据密集型应用的基本组件。近年来,新兴的存储技术,如持久内存,具有字节可寻址、非易失等特点,为高性能键值存储的构建这一目标带来了巨大的机遇:PCM,ReRAM以及最近发布的Optane DC持久内存,都能够提供数据持久性,同时实现与内存相当的性能。这些持久内存具有与内存相当的读取延迟,与内存相比有更高的写入延迟(7-22倍)、更高的密度(1.5-2.7)以及更低的带宽(5-10)和更低的耐久{10^4-10^7}。持久内存为实现高性能的键值存储提供了新的机会。已经有许多基于日志结构合并树(LSM-Tree)的键值存储设计。
现有的基于持久内存的研究主要存在几个问题:
首先,由于一开始设计的键值存储是针对于内存进行优化的,当将其使用在持久内存中时,效率开始变低下,并且浪费了大量的空间和带宽。
其次,还有部分研究将持久内存与固态硬盘和机械硬盘等磁盘共存,数据仍存储在磁盘上,而将新的持久性存储器当作中间层或者平滑层作为一个大的内存写缓冲区或读缓存来提高系统性能。这不能完全的利用持久内存来获得高性能。
现有的键值存储具有固有的读写放大结构,在LSM-Tree中,一个插入的键值对需要不断的合并排序并写入磁盘,并通过后台压缩向最高级别移动,对于一个n级的LSM-Tree,它的写放大率(写到磁盘的数据总量与用户要求数据量之间的比)可以高达10n,这大大影响了持久内存设备的寿命,因为持久内存设备的擦写次数比其他硬盘低了好几个数量级。对于读取操作,在一般情况下,LSM-Tree也需要搜索多个文件,这也大大影响了系统的性能。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种键值存储系统、垃圾回收方法,利用持久内存提高系统性能。
为解决上述技术问题,本发明所采用的技术方案是:一种键值存储系统,包括:
持久内存,设有第一存储区域和第二存储区域;所述第一存储区域用于存储键值对的值;所述第二存储区域用于存储键值对的键以及键对应的地址;
动态随机存取存储器,内设有B+树、内存表;所述B+树用于存储所述键值对的最新的索引值;所述内存表用于存储所述键值对的键以及键对应的地址。
本发明将LSM树的多级压缩到单级,消除了LSM树中存在的级之间的compact操作(此操作具有很大的写放大),使用键值分离减少了大值时的数据写入量,内存中存储B+树减小了查询时的读取放大。
所述第二存储区域采用LSM-Tree的Level 0层;所述键以及键对应的地址存储于Level 0层的多个SSTable中。本发明将LSM树的多层次结构压缩为单层,使系统无需压缩操作,减小了整个系统的写放大。
为了保证元数据不会随系统掉电而丢失,所述持久内存内还设有元数据管理区,用于存储键值对的元数据信息。
在该存储系统查找数据的过程包括:在动态随机存取存储器的内存表中搜索键k,若键不存在,则在不可变内存表中搜索,若键不存在,则在B+树中搜索,若搜索到键,则根据键对应的地址从第一存储区域中获得对应的值,并终止查找;若未找到键,则返回未找到结果至客户端。本发明减少了读放大,LSM树需要查找DRAM以及磁盘上的所有的LEVEL,本发明只需要查找DRAM中的MEMTABLE和B+树。
在该存储系统写入数据的过程包括:
向第一存储区域写入键值对中的值,并返回写入值的位置信息,将位置信息代替值,形成键—位置信息对,即(键,位置信息);
将键—位置信息对写入写前日志内;
将键—位置信息对写入内存表中,并返回当前操作结果。
实际工作中,键值中值的长度大于位置信息的长度,使用位置信息来替代键可以减小写放大。
当写入数据时,若内存表满,则将当前内存表设置为不可变内存表,并在动态随机存取存储器中新建一内存表接受数据写入;将所述不可变内存表中的数据同时写入第二存储区以及B+树内。将数据先写入较快的内存中,然后后续批量写入第二存储区以及B+树之中,提高了写入吞吐量。
作为一个发明构思,本发明还提供了一种垃圾回收方法,适用于本发明的上述键值存储系统;包括以下步骤:
初始化合并候选集;
若第二存储区中的任意一个SSTable中的有效项(即SSTable中的某一键值对当前为最新值,也即没有被更新或者删除的键值对)与该SSTable中键值项的总数之比达到设定的阈值,则将该SSTable加入所述合并候选集;
当所述合并候选集中的SSTable数量达到预设阈值时,将该合并候选集中的所有SSTable合并为一个SSTable。
本发明的垃圾回收方法减少了SSTable数量,保持数据的有序。且程序可以在后台运行,不影响系统性能。
将合并候选集中的所有SSTable合并为一个SSTable的具体实现过程包括:
1)遍历所述合并候选集中的SSTable列表,若所述SSTable列表中没有有效键值项(在将DRAM中的内容刷入PM中时,如果当前键值对有旧值,则将旧值标记为无效),则直接将该SSTable列表从合并候选集中移除;
2)若合并候选集中的SSTable列表变为空,则直接结该合并进程;否则,对经步骤1)处理后得到的SSTable列表进行整体排序,并构建一个遍历合并候选集中所有的SSTable中的所有键值对的迭代器;
3)扫描迭代器,对每一个键值对,在B+树中搜索,若按键搜索到的值与当前键值对匹配,则将该键值对写入新建的SSTable,并更新将B+树中的内容;
4)SSTable写入完成,删除合并候选集中的SSTable,将新建的SSTable以及被删除的SSTable数据增量更新至持久内存的元数据管理区,并清空当前合并候选集。
基于有效键值率的垃圾回收可以提高垃圾回收效率,减少了数据写入量(如果多个SSTable都是有效项,全部需要重写,增加了写放大)。
与现有技术相比,本发明所具有的有益效果为:
1.本发明直接使用持久内存来代替磁盘存储数据,利用了持久内存容量大,速度快的特点,构建了一个基于持久内存的高性能键值存储系统。
2.现有的基于LSM-Tree的系统具有极高的读写放大,这大大影响了持久内存的寿命。基于此,本发明结合利用了LSM-Tree的高写吞吐的优点和B+树索引搜索快的优点。本发明在LSM-Tree的基础上压缩多级结构到单级,保持高吞吐的同时极大的减小了LSM-Tree架构由压缩产生的写放大。本发明对持久内存中的数据建立了一个B+树索引,减小其读放大并保持其高读吞吐,这样在延长了持久内存使用寿命的同时,还提高了系统的吞吐量。本发明键值分离的存储结构,减少了数据写入的总量以及内存中B+树的大小,进一步减小了系统的写放大。
3.与其他基于持久内存的系统相比,本发明极高的降低了系统的读写延时以及提高了吞吐量。
4.本发明实现了垃圾回收策略,提高了持久内存的空间利用率。
5.本发明实现了系统崩溃后恢复功能。
附图说明
图1为本发明实施例存储系统结构图;
图2为本发明实施例数据布局原理图。
具体实施方式
本发明系统架构图如图1,将所有持久数据存储在了持久内存当中,并包括以下几个部分:
1.压缩LSM-Tree的多级结构到单级。本发明去掉了LSM-Tree的层次结构,只保留了无序的Level 0,将所有刷到持久内存中的数据全部置于Level 0的SSTable中,这使得数据库不需要频繁的向高层进行压缩操作,极大的减小了存储系统中数据的写放大。取消等级并没有直接提升数据库性能,而是通过消除系统中昂贵的操作(压缩过程)来去掉一些冗余的过程(LSM树架构中有许多级,并且需要不断的从上级往下级合并写入。将LSM树的多级压缩到单级后,消除了LSM树中存在的级之间的compact操作,此操作具有很大的写放大),从而使系统性能受益于此。
2.在内存中维护了一颗B+树。在进行读取操作时,如果内存中读取失败,就需要在整个Level 0中进行搜索,由于Level 0中的SSTable之间是无序存储的,所以需要扫描所有的SSTable来进行查找,这产生了极大的读放大。为了解决这个问题,本发明在内存中维护了一颗B+树,其中存储了所有在Level 0中KV项(键值对)的最新值。这样,在进行读取操作时,本发明首先和LSM-Tree一样在内存中对MemTable(内存表)和Immutable MemTable(不可变内存表)进行搜索,如未找到,则只需对B+树进行搜索,而不需要扫描各个等级中的SSTable,这减小了系统中的读取放大。
3.键值分离的设计。由于B+树存储在内存中,为了节省内存的空间,本发明对系统中的键值对做了一个键值分离的设计,即把值写在一个专门的值追加日志里,而使用更短的地址来对其进行代替保存,这样,B+树中只保存键和对应值的地址。在本发明的实验中,数据布局如图2,为了使地址长度尽可能小,地址由6字节的值地址以及2字节的SSTable池号组成,6字节的值地址包括2字节的池号和4字节的偏移量,,其中,前六字节用于定位值,后两个字节用于对SSTable中的有效值进行统计。值日志中的值项由4字节的值大小和值内容组成。在实际场景中,值大小在大部分情况下都大于8字节。所以使用键值分离既减少了内存中保存的数据量,也减少了B+树平衡时的数据写入量。
4.垃圾回收算法。由于所有的SSTable都保存在Level 0中,如果没有合适的垃圾回收机制,在更新密集的工作负载中,将会有许多失效的键值对占据持久内存空间,导致持久内存的利用率降低。为了解决这个问题,系统提供了一个SSTable合并操作来对Level 0进行垃圾回收。对于合并操作,系统维护了一个关于SSTable的合并候选集,在系统启动时,配置了一个后台进程来维护这个集合并当Level 0中的元数据发生变化时(刷入操作)进行判断,当单个SSTable满足条件时,将其加入合并候选集之中,在系统中,将SSTable加入合并候选集的条件为单个SSTable中的有效项与总数之比达到设定的阈值(例如50%)。当候选集的大小达到预先设定的阈值(例如阈值设定为2)时,启动SSTable之间的合并。
合并过程由后台程序完成。算法1描述了合并过程。第一行到第六行首先检查了合并候选集中的SSTable是否包含了有效键值项,如果SSTable中全为无效项,则可以直接将该SSTable所属池回收,并无需其他改动。由于单个SSTable中的键值对是有序的,在10行和第11行,本发明使用归并排序的方式将多个SSTABLE进行排序并创建一个可以遍历所有键值项的迭代器。13行到20行是对每个键值项的处理,从伪代码中本发明可以看出,对于当前键值对,本发明首先在B+树中进行搜索,如果当前项存在且最新的地址与当前处理项的地址相同,则证明该项为有效项,然后将其写入新的SSTable,当键值项被写入一个新的SSTable中时,B+树中对应项存储的SSTable号就发生了变化,这样就会导致系统的数据错误,所以,本发明在将项写入新的SSTable的同时更新图2中所示的地址的loc部分以保持树中的数据正确。本发明对迭代器中的所有项做相同的操作。21行和22行为一些元数据的更新,包括SSTable的增加与删除,元数据的保存,合并候选集的更新以及旧空间的回收等。由于本发明的算法在合并SSTable的时候就更新了B+树中的数据,所以如果在合并的过程中有对新SSTable的有效项的修改,也会使得元数据不对,为了解决这个问题,本发明在更新元数据时,增加了一个检查操作,即如果在合并过程中发生了对新增的SSTable的写入,本发明将记录这些操作,并且会在21行的InstallMergeResult()函数(函数输入为被合并后删除的以及新增的SSTable,输出为是否成功,成功表示元数据更新完成,失败重试)中对对应的元数据进行计算处理。
算法1:输入:候选SSTable(满足合并条件的SSTable)
步骤1:首先遍历候选SSTable列表,如果该列表中没有有效键值项,则直接将其从候选列表中移除。
步骤2:如果候选列表中SSTable变为空,则直接结束该合并进程。
步骤3:由于SSTable中的键值项都是有序排列的,所以对候选SSTable列表使用归并排序将其整体排序,并构建一个可以遍历这些项的迭代器。
步骤4:扫描迭代器,对每一个键值对,在全局B+树中搜索,如果按键搜索到的值与当前键值对相等,则将该键值对写入新SSTable并将B+树中的内容更新。
步骤5:SSTable写入完成,删除候选集中的SSTable,将新建SSTable以及被删除的SSTable数据增量更新至元数据管理,并清空当前合并候选集。
本发明存储系统包括的操作流程由图1中的有向箭头表示,包括以下操作:
GET(k)为获取数据库内键为k的值。当一个给定键k的GET操作传入时,本发明的系统PMDB按顺序执行GET①,GET②和GET③。GET①在当前MemTable中进行搜索,如果键不存在,则执行GET②,GET②对IMMTABLE进行搜索,如果键不存在,则执行GET③。GET③在B+树中搜索。若上述三个过程中任意一个过程成功找到了k,则根据读取到的地址从值区域中获取到对应值并返回结果给客户端并终止后续查找过程。若三个过程都未找到K,则返回给客户端未找到。在整个GET操作的执行过程中,PMDB在不读取任何SSTable的情况下向客户端返回结果。
PUT(k,v)表示对键值对(k,v)的写入操作,插入一个键值对时,如果系统中不存在此键k,执行插入insert,存在执行更新update。当一个给定键值对(k,v)的PUT操作传入时,PMDB内部的数据流在图中表示为①-⑤。①表示当系统接受到一个给定键值对(k,v)的PUT操作,②和③向值区域中写入键值对中的v并返回写入值的位置信息address,将address代替v进行后续操作。④为将(k,address)写入写前日志,以在系统突发崩溃时进行故障恢复。⑤将(k,address)写入内存中的MEMTABLE并返回当前操作结果。
图1中⑥-⑧为后台进程,当MEMTABLE满时,⑥将MEMTABLE设置为IMMUTABLE并新建一个MEMTABLE继续接受写入。当系统中存在IMMTABLE时,则会触发对IMMTABLE的持久化操作,即⑦以SSTABLE的形式将其flush至持久内存中的LEVEL0中并同时写入内存中的B+树之中。当LEVEL0中的SSTABLE有过多的无效项时,则触发⑧SSTABLE的合并过程,将多个无效项数目超过预设阈值的SSTABLE合并为一个,以此来提高持久内存的空间利用率。
DELETE(k)通过在PUT中设置v为删除标记来实现。
本发明在一个真实的持久性存储器上实现了PMDB。实验结果表明,与LevelDB相比,PMDB提高了读写吞吐量,当值大小为100字节、1KB、4KB和16KB时,读取吞吐量分别比LevelDB快0.11、0.84、3.17倍和9.69倍,写入吞吐量分别比LevelDB快0.06、9.96倍、44倍和83倍。与LevelDB相比,PMDB还具有较低的写入放大率和较少的数据写入。
Claims (8)
1.一种键值存储系统,其特征在于,包括:
持久内存,设有第一存储区域和第二存储区域;所述第一存储区域用于存储键值对的值;所述第二存储区域用于存储键值对的键以及键对应的地址;
动态随机存取存储器,内设有B+树、内存表;所述B+树用于存储所述键值对的最新的索引值;所述内存表用于存储所述键值对的键以及键对应的地址。
2.根据权利要求1所述的键值存储系统,其特征在于,所述第二存储区域采用LSM-Tree的Level 0层;所述键以及键对应的地址存储于Level 0层的多个SSTable中。
3.根据权利要求1所述的键值存储系统,其特征在于,所述持久内存内还设有元数据管理区,用于存储键值对的元数据信息。
4.根据权利要求1所述的键值存储系统,其特征在于,在该存储系统查找数据的过程包括:
在动态随机存取存储器的内存表中搜索键k,若键不存在,则在不可变内存表中搜索,若键不存在,则在B+树中搜索,若搜索到键,则根据键对应的地址从第一存储区域中获得对应的值,并终止查找;若未找到键,则返回未找到结果至客户端。
5.根据权利要求1所述的键值存储系统,其特征在于,在该存储系统写入数据的过程包括:
向第一存储区域写入键值对中的值,并返回写入值的位置信息,将位置信息代替值,形成键—位置信息对;
将键—位置信息对写入写前日志内;
将键—位置信息对写入内存表中,并返回当前操作结果。
6.根据权利要求2所述的键值存储系统,其特征在于,当写入数据时,若内存表满,则将当前内存表设置为不可变内存表,并在动态随机存取存储器中新建一内存表接受数据写入;将所述不可变内存表中的数据同时写入第二存储区以及B+树内。
7.一种垃圾回收方法,适用于权利要求1~6之一所述键值存储系统;其特征在于,包括以下步骤:
初始化合并候选集;
若第二存储区中的任意一个SSTable中的有效项与该SSTable中键值项的总数之比达到设定的阈值,则将该SSTable加入所述合并候选集;
当所述合并候选集中的SSTable数量达到预设阈值时,将该合并候选集中的所有SSTable合并为一个SSTable。
8.根据权利要求7所述的垃圾回收方法,其特征在于,将合并候选集中的所有SSTable合并为一个SSTable的具体实现过程包括:
1)遍历所述合并候选集中的SSTable列表,若所述SSTable列表中没有有效键值项,则直接将该SSTable列表从合并候选集中移除;
2)若合并候选集中的SSTable列表变为空,则直接结该合并进程;否则,对经步骤1)处理后得到的SSTable列表进行整体排序,并构建一个遍历合并候选集中所有的SSTable中的所有键值对的迭代器;
3)扫描迭代器,对每一个键值对,在B+树中搜索,若按键搜索到的值与当前键值对匹配,则将该键值对写入新建的SSTable,并更新将B+树中的内容;
4)SSTable写入完成,删除合并候选集中的SSTable,将新建的SSTable以及被删除的SSTable数据增量更新至持久内存的元数据管理区,并清空当前合并候选集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210293809.2A CN114691041B (zh) | 2022-03-24 | 2022-03-24 | 键值存储系统、垃圾回收方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210293809.2A CN114691041B (zh) | 2022-03-24 | 2022-03-24 | 键值存储系统、垃圾回收方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114691041A true CN114691041A (zh) | 2022-07-01 |
CN114691041B CN114691041B (zh) | 2024-10-22 |
Family
ID=82138151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210293809.2A Active CN114691041B (zh) | 2022-03-24 | 2022-03-24 | 键值存储系统、垃圾回收方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691041B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756341A (zh) * | 2023-01-09 | 2023-03-07 | 苏州浪潮智能科技有限公司 | 固态硬盘的垃圾回收方法、装置、电子设备及存储介质 |
CN117131012A (zh) * | 2023-08-28 | 2023-11-28 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170212680A1 (en) * | 2016-01-22 | 2017-07-27 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
CN110109927A (zh) * | 2019-04-25 | 2019-08-09 | 上海新炬网络技术有限公司 | 基于LSM树的Oracle数据库数据处理方法 |
US20200134100A1 (en) * | 2018-10-31 | 2020-04-30 | EMC IP Holding Company LLC | Storing metadata in a cuckoo tree |
CN111309270A (zh) * | 2020-03-13 | 2020-06-19 | 清华大学 | 一种持久性内存键值存储系统 |
-
2022
- 2022-03-24 CN CN202210293809.2A patent/CN114691041B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170212680A1 (en) * | 2016-01-22 | 2017-07-27 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
US20200134100A1 (en) * | 2018-10-31 | 2020-04-30 | EMC IP Holding Company LLC | Storing metadata in a cuckoo tree |
CN110109927A (zh) * | 2019-04-25 | 2019-08-09 | 上海新炬网络技术有限公司 | 基于LSM树的Oracle数据库数据处理方法 |
CN111309270A (zh) * | 2020-03-13 | 2020-06-19 | 清华大学 | 一种持久性内存键值存储系统 |
Non-Patent Citations (1)
Title |
---|
王洋洋;韦皓诚;柴云鹏;: "基于SSD-SMR混合存储的LSM树键值存储系统的性能优化", 计算机科学, no. 07, 15 July 2018 (2018-07-15) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756341A (zh) * | 2023-01-09 | 2023-03-07 | 苏州浪潮智能科技有限公司 | 固态硬盘的垃圾回收方法、装置、电子设备及存储介质 |
CN115756341B (zh) * | 2023-01-09 | 2023-04-07 | 苏州浪潮智能科技有限公司 | 固态硬盘的垃圾回收方法、装置、电子设备及存储介质 |
CN117131012A (zh) * | 2023-08-28 | 2023-11-28 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
CN117131012B (zh) * | 2023-08-28 | 2024-04-16 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114691041B (zh) | 2024-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10496283B2 (en) | Adaptive prefix tree based order partitioned data storage system | |
US11100071B2 (en) | Key-value store tree data block spill with compaction | |
CN111399777B (zh) | 一种基于数据值分类的差异化键值数据存储方法 | |
US8949247B2 (en) | Method for dynamic updating of an index, and a search engine implementing the same | |
US10915546B2 (en) | Counter-based compaction of key-value store tree data block | |
US8745012B2 (en) | Log-structured store for streaming data | |
US8037112B2 (en) | Efficient access of flash databases | |
US11657092B2 (en) | Data tree with order-based node traversal | |
CN114691041B (zh) | 键值存储系统、垃圾回收方法 | |
US6654868B2 (en) | Information storage and retrieval system | |
CN113196259A (zh) | 使用以选择性数据存储格式进行日志记录的键值存储 | |
EP2147380A1 (en) | System and method of managing indexation of flash memory | |
CN105912687A (zh) | 海量分布式数据库存储单元 | |
CN112732725B (zh) | 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 | |
CN113553476A (zh) | 一种利用哈希减少写停顿的键值存储方法 | |
CN113253926A (zh) | 提升新型存储器的查询和存储性能的存储内索引构建方法 | |
CN116701440B (zh) | 一种布谷鸟过滤器及数据插入、查询、删除方法 | |
Jensen et al. | Optimality in external memory hashing | |
CN116382588A (zh) | 一种基于学习索引的LSM-Tree存储引擎读放大问题优化方法 | |
CN112463837B (zh) | 一种关系型数据库数据存储查询方法 | |
CN115599288A (zh) | 一种全局优化的键值存储方法及装置 | |
CN113703668B (zh) | 固态硬盘的信息查询方法、系统、电子设备及存储介质 | |
Jin et al. | Dynamic regulation of index implementation for flash memory storages | |
CN116401416A (zh) | 支持无锁化并发访问的持久可变基数树访问系统 | |
Macyna et al. | Flash-aware Clustered Index for Mobile Databases |
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 | ||
GR01 | Patent grant |