[VLDB]LSM-based storage techniques: a survey

LSM-based storage techniques: a survey

现如今,log-structured merge-tree(LSM- tree)广泛应用于现代NoSQL数据库底层,BigTable,HBase,LevelDB,RocksDB等.相比采用原地更新(in-place updates)的传统索引结构,LSM- tree 先buffer,Flush,merge ,异地更新(out-of-place update),有很多优点:优越的写性能,高空间利用率,可调节,简化并行控制和recovery。这篇文章基本涵盖LSM- tree 发展演进,基本知识和优化方向,现有研究工作分类。

1.背景
1.1 LSM- tree basic
索引更新
原地更新(in-place updates):B+-tree
优点:
--读优化:只保留一份最新的数据更新
缺点:
--牺牲写性能:更新引入随机写IO
--空间利用率低:更新和删除引发碎片化
异地更新(out-of-place update):LSM- tree
优点:
--优越写性能:顺序写
--简化recovery 过程
缺点:
--牺牲读性能
--需要额外数据重新组织的过程


image.png

顺序异地更新的机制,不是新的idea。
Differential files【1976】
--更新写到diff 文件中
--周期性的将diff 合并到main file 中
Postgres log-structured db【1980s】
--append writes --> sequential log以实现fast recovery。
--需要一个后台程序持续的回收过时的记录
LFS 之前的log- structured存储问题:
--查询性能低-
--空间利用率低
--很难调性能
LFS(log-structure file systems]【1991】

1.2 LSM- tree original design
LSM- tree【1996】
-- 合入merge 过程
--高写入性能
--查询性能
--空间利用率
original LSM-tree :
--包含一个部件序列:C0,C1,...Ck
--每个部件是一个B+-tree;
--新写请求,会先插入到C0;
-- 每当Ci 达到满的条件是,就做rolling merge,合并Ci 到Ci+1;
-- 也就是采用leveling merge 策略;
-- size ratio Ti = Ci + 1/Ci;
--所以Ti 一样,以优化写性能


image.png

1.3 现代的LSM- tree
现代的LSM- tree


image.png

SSTable


image.png

查询操作-解释了为什么需要merge 过程
image.png

合并操作

两种merge 机制- leveling 和tiering


image.png
image.png

合并开销与收益


image.png

1.4 well- known 优化
优化1-bloom filter
优化2-partition
1.5 并发控制和恢复

1.6 开销分析


image.png
  1. LSM- tree 改进


    image.png

    减少写放大
    优化merge 操作
    利用硬件
    自动调节

3.LSM- tree base 系统
LevelDB
2011年Google开源level DB
提供简单的KV 接口(puts,gets,scans)
采用partition leveling merge 策略
RocksDB
Facebook 2012 年Fork 自levelDB;
增加许多特性;
采用LSM- tree动机是很好的空间利用率
size =10的情况下,leveling merge策略下90% 的数据在最大的level

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 标题:一个针对基于LSM的NoSQL数据库上的辅助性索引的比较性研究本文是对NoSQL辅助索引技术的一个综述文章。...
    Caucher阅读 3,777评论 0 3
  • 思想:数据修改增量保持在内存中,达到限制后将修改操作批量写入到磁盘中,相比较于写入操作的高性能,读取需要合并内存中...
    hedgehog1112阅读 3,826评论 0 0
  • 背景 LSM树应用场景太多了,个人接触过的就有这些。。戳个FLAG,一定要弄明白。 HBASE LevelDB/R...
    苏柏亚的星空阅读 5,150评论 0 1
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,285评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 11,810评论 0 2