论文阅读(6):rlsm

2018 IEEE

Nae Young Song and Heon Young Yeom

Dept. of Computer Science and Engineering

Seoul National University

Efficient key-value stores with Ranged Log-structured Merge Trees

 

摘要:针对的还是LSM的写放大问题,提出了ranged lsm,简化了存储的逻辑结构,保持数据在无序状态。另外,通过把磁盘上的数据分为不交叠的多个文件来防止读性能下降。在hbase上实现的。

性能参数:减少了3x的写放大(与原始数据量).内存开销也下降24%.

 

相关工作:LSMtrie,构建基于hash的trie结构替代tree,减少compact中的重排开销。

LWC(15)建议轻量级的compact,append data按照key range,同步合并元数据。

pebblesdb使用guard来维持datarange,尽管guard内部可能无序。

14,15,16,20,21,23针对compact的过程进行了优化。

本文思路:磁盘上只有两级的sstable文件,一级是flushedfile,一级是compactedfile。另外,使用基于hash的数据结构避免compact过程中的开销,通过append来完成compact。根据它的datarange选择一个file insert进去。

 

rlsm系统设计:

1.rlsm:

rlsm不要求数据严格有序,hash key在hash表中存储对应的数据,当内存buffer满了之后,按照hashed的顺序被flush到文件(flushedfile)中。

将compact过程中的文件分为victim和target。然后只有victim的数据被加载到内存并重写到target。

因为flushedfile是range交叠的,会造成严重的写放大,所以需要compact,根据每个文件的keyrange。

rlsm中每个文件都会记录最大和最小的key。compact过程中,victim中每个kv对都会append到keyrange包括k的target文件中(这样说,target应该是keyrange不交叠吧)。数据在文件级别是有序的,即使内部是无序的。(感觉和pebblesdb很像,只是这个有序和无序的界限不一样,一个是文件级别(rlsm),一个是guard文件区间(pebblesdb))。生成的文件叫做compactedfile。

没太弄明白,内存中为什么要按照hashtable来存放kv而不是跳表结构。(好像是,如果通过keyrange确定key在这个文件中后,将文件加载到内存,可以通过hash来快速查找kv对)

 

compact有几种情况:

1.l1层没有文件,那么直接把l0层文件down到l1层。

2.l1层有文件,优先选择unionset,然后是按照density(kvnum/maxkey-minkey)

(1)vimcim 的keyrange在targetkeyrange范围内,直接append,不用修改元数据。

(2)对密度大的victim,kv更聚集,很可能会compact到一个文件中。

文件的负载均衡:

在compact过程中,很可能不同compactedfile到后期大小差别很大,从而在读取时造成巨大的差异。

策略是,当文件大小超出限制时,自动分区。使用的线性选择算法(24),对列表数据重排找到第k小的数据。时间复杂度为o(n)。

除了partition,还有merge操作。

猜测,垃圾回收也是在partition的迭代每个kv过程中完成的。

添加数据:

内存中用hash表存放key时,数据的文件偏移也会存放到hash表中key的对应位置,然后持久化到fileinfo块中,其中还包括元数据(maxkey,minkey)。

数据索引策略,l0层使用布隆过滤器,因为键值是交叠的。

l1层使用索引树,每个node代表一个compactedfile。因为files间的keyrange不交叠,可以使用二叉搜索树快速查找文件。

 

evaluation:基本没看点查询以及范围查询的性能比较。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值