当前位置: 首页 > 专利查询>湖南大学专利>正文

键值存储系统、垃圾回收方法技术方案

技术编号:34011458 阅读:32 留言:0更新日期:2022-07-02 14:41
本发明专利技术公开了一种键值存储系统、垃圾回收方法,键值存储系统包括:持久内存,设有第一存储区域和第二存储区域;所述第一存储区域用于存储键值对的值;所述第二存储区域用于存储键值对的键以及键对应的地址;动态随机存取存储器,内设有B+树、内存表;所述B+树用于存储所述键值对的最新的索引值;所述内存表用于存储所述键值对的键以及键对应的地址。本发明专利技术直接使用持久内存来代替磁盘存储数据,利用了持久内存容量大,速度快的特点,构建了一个基于持久内存的高性能键值存储系统。内存的高性能键值存储系统。内存的高性能键值存储系统。

【技术实现步骤摘要】
键值存储系统、垃圾回收方法


[0001]本专利技术涉及键值存储技术,特别是一种键值存储系统、垃圾回收方法。

技术介绍

[0002]键值存储是最简单的数据库类型之一,具有查询速度快、存放数据量大、支持高并发等优点,并逐渐成为了各数据中心有效支持各种数据密集型应用的基本组件。近年来,新兴的存储技术,如持久内存,具有字节可寻址、非易失等特点,为高性能键值存储的构建这一目标带来了巨大的机遇:PCM,ReRAM以及最近发布的Optane DC持久内存,都能够提供数据持久性,同时实现与内存相当的性能。这些持久内存具有与内存相当的读取延迟,与内存相比有更高的写入延迟(7

22倍)、更高的密度(1.5

2.7)以及更低的带宽(5

10)和更低的耐久{10^4

10^7}。持久内存为实现高性能的键值存储提供了新的机会。已经有许多基于日志结构合并树(LSM

Tree)的键值存储设计。
[0003]现有的基于持久内存的研究主要存在几个问题:
[0004]首先,由于一开始设计的键值存储是针对于内存进行优化的,当将其使用在持久内存中时,效率开始变低下,并且浪费了大量的空间和带宽。
[0005]其次,还有部分研究将持久内存与固态硬盘和机械硬盘等磁盘共存,数据仍存储在磁盘上,而将新的持久性存储器当作中间层或者平滑层作为一个大的内存写缓冲区或读缓存来提高系统性能。这不能完全的利用持久内存来获得高性能。
[0006]现有的键值存储具有固有的读写放大结构,在LSM

Tree中,一个插入的键值对需要不断的合并排序并写入磁盘,并通过后台压缩向最高级别移动,对于一个n级的LSM

Tree,它的写放大率(写到磁盘的数据总量与用户要求数据量之间的比)可以高达10n,这大大影响了持久内存设备的寿命,因为持久内存设备的擦写次数比其他硬盘低了好几个数量级。对于读取操作,在一般情况下,LSM

Tree也需要搜索多个文件,这也大大影响了系统的性能。

技术实现思路

[0007]本专利技术所要解决的技术问题是,针对现有技术不足,提供一种键值存储系统、垃圾回收方法,利用持久内存提高系统性能。
[0008]为解决上述技术问题,本专利技术所采用的技术方案是:一种键值存储系统,包括:
[0009]持久内存,设有第一存储区域和第二存储区域;所述第一存储区域用于存储键值对的值;所述第二存储区域用于存储键值对的键以及键对应的地址;
[0010]动态随机存取存储器,内设有B+树、内存表;所述B+树用于存储所述键值对的最新的索引值;所述内存表用于存储所述键值对的键以及键对应的地址。
[0011]本专利技术将LSM树的多级压缩到单级,消除了LSM树中存在的级之间的compact操作(此操作具有很大的写放大),使用键值分离减少了大值时的数据写入量,内存中存储B+树减小了查询时的读取放大。
[0012]所述第二存储区域采用LSM

Tree的Level 0层;所述键以及键对应的地址存储于Level 0层的多个SSTable中。本专利技术将LSM树的多层次结构压缩为单层,使系统无需压缩操作,减小了整个系统的写放大。
[0013]为了保证元数据不会随系统掉电而丢失,所述持久内存内还设有元数据管理区,用于存储键值对的元数据信息。
[0014]在该存储系统查找数据的过程包括:在动态随机存取存储器的内存表中搜索键k,若键不存在,则在不可变内存表中搜索,若键不存在,则在B+树中搜索,若搜索到键,则根据键对应的地址从第一存储区域中获得对应的值,并终止查找;若未找到键,则返回未找到结果至客户端。本专利技术减少了读放大,LSM树需要查找DRAM以及磁盘上的所有的LEVEL,本专利技术只需要查找DRAM中的MEMTABLE和B+树。
[0015]在该存储系统写入数据的过程包括:
[0016]向第一存储区域写入键值对中的值,并返回写入值的位置信息,将位置信息代替值,形成键—位置信息对,即(键,位置信息);
[0017]将键—位置信息对写入写前日志内;
[0018]将键—位置信息对写入内存表中,并返回当前操作结果。
[0019]实际工作中,键值中值的长度大于位置信息的长度,使用位置信息来替代键可以减小写放大。
[0020]当写入数据时,若内存表满,则将当前内存表设置为不可变内存表,并在动态随机存取存储器中新建一内存表接受数据写入;将所述不可变内存表中的数据同时写入第二存储区以及B+树内。将数据先写入较快的内存中,然后后续批量写入第二存储区以及B+树之中,提高了写入吞吐量。
[0021]作为一个专利技术构思,本专利技术还提供了一种垃圾回收方法,适用于本专利技术的上述键值存储系统;包括以下步骤:
[0022]初始化合并候选集;
[0023]若第二存储区中的任意一个SSTable中的有效项(即SSTable中的某一键值对当前为最新值,也即没有被更新或者删除的键值对)与该SSTable中键值项的总数之比达到设定的阈值,则将该SSTable加入所述合并候选集;
[0024]当所述合并候选集中的SSTable数量达到预设阈值时,将该合并候选集中的所有SSTable合并为一个SSTable。
[0025]本专利技术的垃圾回收方法减少了SSTable数量,保持数据的有序。且程序可以在后台运行,不影响系统性能。
[0026]将合并候选集中的所有SSTable合并为一个SSTable的具体实现过程包括:
[0027]1)遍历所述合并候选集中的SSTable列表,若所述SSTable列表中没有有效键值项(在将DRAM中的内容刷入PM中时,如果当前键值对有旧值,则将旧值标记为无效),则直接将该SSTable列表从合并候选集中移除;
[0028]2)若合并候选集中的SSTable列表变为空,则直接结该合并进程;否则,对经步骤1)处理后得到的SSTable列表进行整体排序,并构建一个遍历合并候选集中所有的SSTable中的所有键值对的迭代器;
[0029]3)扫描迭代器,对每一个键值对,在B+树中搜索,若按键搜索到的值与当前键值对
匹配,则将该键值对写入新建的SSTable,并更新将B+树中的内容;
[0030]4)SSTable写入完成,删除合并候选集中的SSTable,将新建的SSTable以及被删除的SSTable数据增量更新至持久内存的元数据管理区,并清空当前合并候选集。
[0031]基于有效键值率的垃圾回收可以提高垃圾回收效率,减少了数据写入量(如果多个SSTable都是有效项,全部需要重写,增加了写放大)。
[0032]与现有技术相比,本专利技术所具有的有益效果为:
[0033]1.本专利技术直接使用持久内存来代替磁盘存储数据,利用了持久内存容量大,速度快的特点,构建了一个基于持久内存的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种键值存储系统,其特征在于,包括:持久内存,设有第一存储区域和第二存储区域;所述第一存储区域用于存储键值对的值;所述第二存储区域用于存储键值对的键以及键对应的地址;动态随机存取存储器,内设有B+树、内存表;所述B+树用于存储所述键值对的最新的索引值;所述内存表用于存储所述键值对的键以及键对应的地址。2.根据权利要求1所述的键值存储系统,其特征在于,所述第二存储区域采用LSM

Tree的Level 0层;所述键以及键对应的地址存储于Level 0层的多个SSTable中。3.根据权利要求1所述的键值存储系统,其特征在于,所述持久内存内还设有元数据管理区,用于存储键值对的元数据信息。4.根据权利要求1所述的键值存储系统,其特征在于,在该存储系统查找数据的过程包括:在动态随机存取存储器的内存表中搜索键k,若键不存在,则在不可变内存表中搜索,若键不存在,则在B+树中搜索,若搜索到键,则根据键对应的地址从第一存储区域中获得对应的值,并终止查找;若未找到键,则返回未找到结果至客户端。5.根据权利要求1所述的键值存储系统,其特征在于,在该存储系统写入数据的过程包括:向第一存储区域写入键值对中的值,并返回写入值的位置信息,将位置信息代替值,形成键—位置信息对;将键—位置信息对写入写前日志内;将键—位置信息对写入内存表中,并返回当前操作结果。6.根据权利要求2所述的键值存储系统,其特征在于,当写入数据时,若内存表满,则将当前内存表设置为不可变内...

【专利技术属性】
技术研发人员:胡玉鹏叶振宇伍麟珺旷文鑫肖雨婷
申请(专利权)人:湖南大学
类型:发明
国别省市:

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

1