美文网首页
简要介绍LSM树

简要介绍LSM树

作者: 十毛tenmao | 来源:发表于2021-06-20 23:50 被阅读0次

    LSM(Log Structured Merged Tree)树一般用在写多读少的场景,比如日志类型的数据,是HBase、 Cassandra、 LevelDB、 RocksDB 以及 ClickHouse MergeTree 等流行的 NoSQL 数据库的底层数据结构

    核心思想

    • WAL保证数据持久性
    • 数据写入内存,达到阈值后再批量写入磁盘
    • 数据的所有操作:增删改全部作为顺序写,追加写的方式,大大提升写入性能
    • 顺序追加写会形成很多无用的数据,需要异步实现数据压缩和整理

    核心原理

    这张经典图片来自 Flink PMC 的 Stefan Richter 在Flink Forward 2018演讲的PPT typical LSM backed system SSTable (Sorted String Table)

    LSM-Tree的优点和缺点

    与B-tree系列数据结构相比,LSM的写性能提升10作用倍,读性能降低10倍左右(但是使用布隆过滤器Bloom Filter可以改进读性能,特别是针对不存在的key的读取性能的改进)

    写入流程

    • 写入WAL(Write Ahead Logging)保证数据持久性
    • 写入Active MemTable
    • 如果Active MemTable写满,则变成Immutable MemTable,再一步写入到磁盘中的SSTable,同时生成一个新的Active MemTable
    • 更新索引
    • 更新布隆过滤器

    读取流程

    • 读取MemTable,如果读取到则返回
    • 读取布隆过滤器,如果没有,则返回
    • 如果布隆过滤器存在,则使用索引定位SSTable
    • 如果索引不存在,则返回空值
    • 如果存在则加载索引值对应的SSTable,读取指定的值

    数据合并流程

    因为LSM都是追加写入SSTable,哪怕是删除操作都是追加一个标识,所以经过一段时间的操作后,就会存在很多重复的key以及被删除的key,所以还需要进行数据合并,减少资源占用以及提供查询性能

    参考

    相关文章

      网友评论

          本文标题:简要介绍LSM树

          本文链接:https://www.haomeiwen.com/subject/cyjeyltx.html