使用B+树优化LSM树的Tiering merge策略的读取速度

这篇博文介绍了如何通过结合LSM树和Copy-On-Write B+Tree来优化Tiering merge策略,提高读取速度。论文《Jungle》提出的方法在保持写放大控制的同时,提升了读取吞吐量。
摘要由CSDN通过智能技术生成

使用B+树优化LSM树的Tiering merge策略的读取速度

内容简介

本博文主要内容为自己对一篇论文的理解,论文将LSM树和B+Tree这两种在数据存储中最为经典高效的数据结构进行结合,使用B+树优化LSM树的Tiering merge策略的读取速度。实验结果表明,所设计的数据结构和策略可以在与tiering merge策略达到相同抑制写放大的水平的情况下,提高其读取的吞吐量。

论文信息

Jungle: Towards Dynamically Adjustable Key-Value Store by Combining LSM-Tree and Copy-On-Write B+Tree

Jung-Sang Ahn (junahn@ebay.com),
Mohiuddin Abdul Qader, Woon-Hak Kang, Hieu Nguyen, Guogen Zhang, and Sami Ben-Romdhane
Platform Architecture & Data Infrastructure, eBay Inc.
USENIX HotStorage 2019

背景

LSM-Tree

LSM树首先在内存中缓冲所有写操作,然后将它们刷新到磁盘,并使用顺序I/O合并它们。这种设计带来了许多优点,包括优越的写性能、高的空间利用率、可调性以及简化并发控制和恢复。

基本概念

image-20220402155924366

LSM-Tree中的数据采用了分层(level)存储的设计,每个level中有若干个范围不重合的run,每个run中的数据有序,并且每个run有最大存储空间的限制。通常来说,高层级的level中run的范围更小,level中含有更多的run。层级level存储的数据呈指数增长。

写操作

以一个具体操作为例:

image-20220402161326832

当log中的数据存满后,将会写入到level中。写入操作为找到level-0中范围存在重叠的run,并与之进行归并操作,删除重复元素。

image-20220402161414576

由于当前level-0存在的run的数量超过了限制(4 > 2),因此需要选择一些run往高层级的level进行迁移。

image-20220402162250041

如选择了level-0中的run3,它将与level-1中与它范围区间有交集的run进行merge。

image-20220402162540023

merge后level-1的run也超出了限制,因此,选择run往高层level进行merge的操作还会继续。

通过这个例子能直观的感受到,当低层级run的数量和run中数据的数量接近或达到限制时,写操作可能会导致多个层级的run进行更新操作,并且越往高层级走,涉及到run的数量越多,造成了大量数据的读写操作。这个现象被称为写放大。

读操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值