一种键值存储引擎合并策略转换方法、系统、介质及设备技术方案

技术编号:37517139 阅读:10 留言:0更新日期:2023-05-12 15:38
本发明专利技术公开了一种键值存储引擎合并策略转换方法、系统、介质及设备,Size Compaction的触发优先于Seek Compaction,当SSTable k有概率触发Seek Compaction时,在进行上一层的Size Compaction时,Size Compaction的起始键优先选择SSTable k的键范围,然后将Size Compaction需要的包含SSTable k的SSTable读取到内存中进行合并,最后将新生成的SSTable重新写回磁盘,新生成SSTable中的SSTable k被标记淘汰。本发明专利技术可以减少数据中心键值存储引擎中Seek Compaction的触发次数,从而优化系统I/O延迟,提升系统的稳定性。提升系统的稳定性。提升系统的稳定性。

【技术实现步骤摘要】
一种键值存储引擎合并策略转换方法、系统、介质及设备


[0001]本专利技术属于计算机系统架构
,具体涉及一种键值存储引擎合并策略转换方法、系统、介质及设备。

技术介绍

[0002]基于日志结构合并树(LSM

Tree)的键值存储系统自提出以来便广受关注,LSM

Tree可以看成是日志结构的改进,它解决了日志结构查询性能差,空间利用率低的缺点。LSM

Tree目前广泛应用于NoSQL存储系统,它是在日志结构(Log

Structure)的基础上结合B

Tree结构设计而成,旨在为记录插入(和删除)率很高的数据库提供低成本索引。与B

Tree之类的传统访问方法相比,LSM

Tree使用一种延迟更新和批量写入的方法,大大减少了磁盘臂的移动,因此LSM树最适合应用在产生大量插入(删除)操作的场景中。
[0003]LevelDB是Google公司开源的单机键值存储引擎,LevelDB应用了LSM

Tree策略,并作了一些改进。LevelDB内存组件使用跳表(Skip Table)来组织,内存中维护了两个跳表,一个只读(Immutable),一个可修改(Memtable);磁盘中的组件使用SSTable组织,SSTable大致可以划分为数据存储区和数据管理区两个部分,数据管理区通过Bloom Filter(布隆过滤器)来加速查找。每个级别Li中所有文件都是有大小限制的,并且随着级别数的增加而增加了十倍。写入过程分为五步:
[0004]1)先将键值对存储在日志文件中,以防数据丢失;
[0005]2)将键值对存储在内存中的可修改跳表中;
[0006]3)如果可修改跳表达到最大限制,LevelDB将创建新的可修改跳表,旧的跳表变为只读跳表。
[0007]4)在后台,合并操作线程将只读跳表刷新到磁盘上,在L0级生成一个新的SSTable文件(通常约为2MB)。
[0008]5)如果Li级达到大小限制,合并操作线程将从Li中选择一个文件,将所有与Li+1重叠的文件合并排序,并生成新的Li+1SSTable文件。查找操作中,LevelDB首先搜索内存中的跳表,如果不存在则依次查找L0至L6。
[0009]LevelDB通过频繁的合并操作对数据进行合并,并将合并后的数据重新写回到对应的层级中。合并操作可以对冗余的键值对进行合并,一方面可以清理过期数据,释放磁盘存储空间,另一方面可以维护数据的有序性,改善读性能,但同样频繁的合并操作也会造成严重的延迟。LevelDB中的合共策略分为两种,一种是Minor Compaction,该合并操作会将Immutable Memtable转化为SSTable,并持久化到硬盘;另一种是Major Compaction,该合并操作是对SSTable进行合并,通过删除无效数据释放空间,从而保证各层级数据量的均衡以适当提升读性能。Major Compaction的过程其本质是一个多路归并,这个过程既包含大量的磁盘读开销,也有大量的磁盘写开销。
[0010]Major Compaction分为两类,一类是Size Compaction,该策略会计算每层(除Level0外)文件的总数据量,并根据此数据量计算得到一个分数,系统会按分数大小给每个
层级排序,如果有得分大于1,也就是说文件总数据量超过阈值,那么在合适的时机(例如写操作)就会触发Size Compaction。另一类是Seek Compaction,Seek Compaction是用来解决频繁未命中带来的读延迟增大问题,例如在某次查找过程中,在Level i层的SSTable里未命中,但是在Level i+1的SSTable里命中了,就认为Level i的SSTable触发了一次Seek缺失,当该SSTable未命中次数达到一定数量时,就会将其与下一层进行合并。
[0011]由上面的描述可以看出,Seek Compaction策略与读延迟息息相关,通过Seek Compaction可以减少未命中的情况,然而在实际测试中,Seek Compaction同样也会带来其他影响。Size Compaction的时间一般在0.5s以下,而当触发Seek Compaction时,其时间远超Size Compaction。而且在实际键值存储领域读负载通常占据了绝对地位,其读写比通常为30∶1,因此Seek Compaction的影响在键值存储领域内是不可忽视的。

技术实现思路

[0012]本专利技术所要解决的技术问题在于针对上述现有技术中的不足,提供一种键值存储引擎合并策略转换方法、系统、介质及设备,通过合并操作转换减少Seek Compaction触发次数,解决系统I/O延迟高的技术问题。
[0013]本专利技术采用以下技术方案:
[0014]一种键值存储引擎合并策略转换方法,Size Compaction的触发优先于Seek Compaction,当SSTable k有概率触发Seek Compaction时,在进行上一层的Size Compaction时,Size Compaction的起始键优先选择SSTable k的键范围,然后将Size Compaction需要的包含SSTable k的SSTable读取到内存中进行合并,最后将新生成的SSTable重新写回磁盘,新生成SSTable中的SSTable k被标记淘汰。
[0015]具体的,针对不同层级赋予不同的权值,根据累计未命中次数确定SSTable是否触发Seek Compaction。
[0016]进一步的,对应SSTable的层级命中次数权值W
hit
为:
[0017][0018]其中,MaxByteforLevel为层级大小,Access Frequency为层级访问频率,Level
weight
为对应因素权值。
[0019]具体的,当正在写入的SSTable对下层键范围重叠的SSTable数据量超过20MB,停止对该SSTable的写入。
[0020]进一步的,每一个SSTable的键范围对应下层10个SSTable。
[0021]进一步的,键范围的权值W
key
为:
[0022][0023]其中,OverlapNumber为SSTable的键覆盖范围,SSTableSize为文件大小,Overlap
weight
为对应因素权值。
[0024]具体的,当SSTable的未命中数达到n倍默认未命中次数时,如果仍未进行Compaction操作,启用Seek Compaction操作,默认未命中次数为100,n为2。
[0025]第二方面,本专利技术实施例提供了一种键值存储引擎合并策略转换系统,包括:
[0026]优先模块,设定Si本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种键值存储引擎合并策略转换方法,其特征在于,Size Compaction的触发优先于Seek Compaction,当SSTable k有概率触发Seek Compaction时,在进行上一层的Size Compaction时,Size Compaction的起始键优先选择SSTable k的键范围,然后将Size Compaction需要的包含SSTable k的SSTable读取到内存中进行合并,最后将新生成的SSTable重新写回磁盘,新生成SSTable中的SSTable k被标记淘汰。2.根据权利要求1所述的键值存储引擎合并策略转换方法,其特征在于,针对不同层级赋予不同的权值,根据累计未命中次数确定SSTable是否触发Seek Compaction。3.根据权利要求2所述的键值存储引擎合并策略转换方法,其特征在于,对应SSTable的层级命中次数权值W
hit
为:其中,MaxByteforLevel为层级大小,Access Frequency为层级访问频率,Level
weight
为对应因素权值。4.根据权利要求1所述的键值存储引擎合并策略转换方法,其特征在于,当正在写入的SSTable对下层键范围重叠的SSTable数据量超过20MB,停止对该SSTable的写入。5.根据权利要求4所述的键值存储引擎合并策略转换方法,其特征在于,每一个SSTable的键范围对应下层10个SSTable。6.根据权利要求4所述的键值存储引擎合并策略转换方法,其特征在于,键范围的权值W
...

【专利技术属性】
技术研发人员:伍卫国郑旭达张驰段克强
申请(专利权)人:西安交通大学
类型:发明
国别省市:

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

1