WAL:Write Ahead Log 写前日志,顺序日志文件

1 LSM tree的定义

LSM tree:
Log-Structured-Merge-Tree,日志结构合并树。

Log-Structured Merge-tree (LSM-tree) is a disk-based data structure designed to provide low-cost indexing for a file experiencing a high rate of record inserts (and deletes) over an extended period.

可以认为,LSM tree是内存的树磁盘文件的树的集合。
如LSM的内存中的memtable可以使用B+Tree实现、磁盘上面的每层sst文件也可以使用B+Tree实现。

2 LSM tree的组成

LSM tree包括三个部分:

  1. MemTable,
  2. Immutable MemTable,
  3. SSTable(Sorted String Table)

2.1 MemTable

MemTable 是内存中的数据结构,用于保存最近更新的数据,会按照 Key 有序地组织这些数据。
可以是红黑树、跳表等。

2.2 Immutable MemTable

内存数据持久化到磁盘时增加的缓存。

2.3 SSTable

有序键值对集合。文件结构基本思路就是先划分为数据块,然后再为数据块建立索引,索引项放在文件末尾。

当某层的SSTable数量大小达到阈值,会通过 Compact 策略将其转化到下一层。
有两种基本策略:

  1. size-tiered 策略
  2. leveled 策略

3 LSM tree的操作

利用顺序写来提高写性能,代价就是会稍微降低读性能(读放大),写入量增大(写放大)和占用空间增大(空间放大)。

3.1 LSM tree的插入、修改、删除

LSM 树的插入、修改、删除都是在 L0 层的树里操作,并记录记录项的时间戳。

3.2 LSM tree的查找

查找只需从 L0 层往下查,直到查到某个 key 的记录就可以了。

4 LSM tree的与B+tree对比

  1. LSM tree吞吐量高写入性能高;
    LSM 树不需要磁盘 IO,直接操作内存,单次插入耗时短,所以其写入的最大吞吐量是高于 B+ 树的。
  2. LSM tree查找效率低;
    查找时, LSM tree需要遍历所有层次的树,查找效率上要低于 B+ 树。
  3. 并发控制和故障恢复方面:

5 LSM tree的应用

LSM 树主要被用于 NoSql 数据库中,如 HBase、RocksDB、LevelDB 等。
TiDB 的底层存储也是用的 LSM 树。

6 小结

LSM tree特点:顺序写入、Compact 操作、读、写和空间放大。
LSM tree适用场景:对于写操作吞吐量要求很高、读操作吞吐量要就较高的场景,目前主要在 NoSql 数据库中用的比较多。

LSM tree(日志结构合并树)_笔记相关推荐

  1. LSM树日志结构合并树

    学习这件事要一点一滴积累,不可心急. 1.LSM树,它是一种数据结构.英文全称,The Log-Structured Merge Tree,翻译为日志结构合并树 2.LSM树并不像B+树.红黑树一样是 ...

  2. LSM树(日志结构合并树)总结-java版

    目录 为什么要有LSM树 数据库存储引擎索引的底层结构 BTree的随机写特点 LSM树的诞生背景 简介 LSM树与B树的差异 LSM树优化 LSM树基本原理 LevelDB中的LSM HBase中的 ...

  3. 数据结构(四)、LSM树(日志结构合并树)

    传统关系型数据库大都使用B-Tree或其变体作为存储结构,能够进行高效查找.但保存在磁盘中时它也有一个明显的缺陷,那就是逻辑上相离很近但物理却可能相隔很远,这就可能造成大量的磁盘随机读写.因此对于关系 ...

  4. 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree 日志结构合并树...

    LSM 树广泛用于数据存储,例如 RocksDB.Apache AsterixDB.Bigtable.HBase.LevelDB.Apache Accumulo.SQLite4.Tarantool.W ...

  5. 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree日志结构合并树...

    LSM 树广泛用于数据存储,例如 RocksDB.Apache AsterixDB.Bigtable.HBase.LevelDB.Apache Accumulo.SQLite4.Tarantool.W ...

  6. 【大数据哔哔集20210112】Sorry,Hbase的LSM Tree真的可以为所欲为!

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多惊喜 我们先抛出一个问题: LSM树是HBase里使用的非常有创意的一种数据结构.在有代表性的关系型数据 ...

  7. 电商数仓描述_笔记-尚硅谷大数据项目数据仓库-电商数仓V1.2新版

    架构 项目框架 数仓架构 存储压缩 Snappy与LZO LZO安装: 读取LZO文件时,需要先创建索引,才可以进行切片. 框架版本选型Apache:运维麻烦,需要自己调研兼容性. CDH:国内使用最 ...

  8. tidb mysql hbase_HBase/TiDB都在用的数据结构:LSM Tree,不得了解一下?

    LSM Tree(Log-structured merge-tree)广泛应用在HBase,TiDB等诸多数据库和存储引擎上,我们先来看一下它的一些应用: 参考资料[4]这么牛X的名单,你不想了解下L ...

  9. odoo tree视图过滤数据_数据存储结构 LSM Tree PK B TREE (从底层了解数据库设计)...

    随着使用数据库的深度和理解能力的提升,有一个问题硬件的提升,与数据量的变化是否对数据库底层的架构有冲击. 我们公认的BTREE B+TREE  是否还能面对现在的硬件的变化.  BTREE 到底是为那 ...

最新文章

  1. 理财周报,致歉还远远不够
  2. 为你的程序添加监听器
  3. Openwrt中ppp拨号总结
  4. hash hashcode变化_没想到 Hash 冲突还能这么玩,你的服务中招了吗?
  5. 【土地评价与土地管理】案例:兰州市榆中县农用地分等
  6. CodeForces 799B (B) T-shirt buying
  7. 数据 3 分钟 | 多家数据库厂商联合发布《分布式数据库发展路径研究》报告、巨杉数据库公布 2021 春季发布会时间...
  8. install常见问题
  9. Linux 英文版命令窗口,在LINUX命令行中翻译英文
  10. 展望2019年:未来一年的WordPress
  11. 知识图谱 | 从六个方面解析知识图谱的价值和应用
  12. SVL simulator 2021.3 Radar目标检测结果异常的解决方案
  13. Android中如何利用Minui显示PNG格式的图片
  14. 基于FPGA的贪吃蛇游戏设计(1)整体架构设计
  15. nextTick介绍
  16. linux mint19 无线网卡wifi速度慢解决办法
  17. 黑马培训有python吗
  18. react的版本操作
  19. 马克思主义理论-资本主义的发展及趋势
  20. 简单几步骤,裁剪多个视频画面大小

热门文章

  1. 【51单片机】七段数码管显示实验+详细讲解
  2. 推荐系统——Converged Recommendation System Based on RNN and BP Neural Networks
  3. 改变无数人命运的上证指数
  4. 计算机教学研修心得英语,2020英语教师继续教育学习心得体会范文(精选4篇)...
  5. 痞子衡嵌入式:恩智浦SDK驱动代码风格、模板、检查工具
  6. vue IE下验证码无法显示解决方法
  7. C/C++ 中三块难啃的硬骨头
  8. 第五课:状语和状语从句
  9. 【数据仓库学习】数据质量监控
  10. a 是指计算机的什么应用,计算机中AtoC是什么应用软件