LSM树日志结构合并树

学习这件事要一点一滴积累,不可心急。

1、LSM树,它是一种数据结构。英文全称,The Log-Structured Merge Tree,翻译为日志结构合并树

2、LSM树并不像B+树、红黑树一样是一颗严格的树状数据结构。

3、HBase、Cassandra、RocksDB和LevelDB这样的Nosql数据库,以及Prometheus,其底层的存储引擎都是基于LSM树。

4、那么多数据结构,LSMTree应该是最年轻的一个,它在1996年被设计出来。

5、LSM树的核心特点是利用顺序写来提高写性能,但因为分层的设计会稍微降低读性能,但是通过牺牲小部分读性能换来高性能写,使得LSM树成为非常流行的存储结构。

6、LSM树是一个横跨内存和磁盘的,包含多颗"子树"的一个森林。

7、LSM树有以下三个重要组成部分:MemTable、Immutable MemTable和SSTable(Sorted String Table)

8、LSM树的Compact策略:size-tiered 策略 和leveled策略

9、LSM树的优点是写入速度快,因为利用了磁盘的顺序写,所以才让Nosql数据库性能比关系型数据库要好。

Nosql存储系统多是 Key-Value结构,最主要功能只有两个:put 和 get

10、LSM树 提供了 排序能力。

11、LSM树是一个多层结构,自上而下存储的数据越来越多。

c0层(内存里)是默认有序的,这个顺序就是key的字典顺序

c1-cN层在磁盘上,每一层都安装key的字典顺序排列。

 

12、c0层数据写入达到阈值时,会c0层数据会合并到c1层,合并的过程叫compaction。

13、LSM会在compaction中自动删除早期的key 。compaction是个异步的过程,不会影响写入性能

14、从c0到cN数据越来越旧,查询时候是先查c0层,然后c1再c2.,逐层查找。

15、针对读的优化,不同的nosql数据库对其采用不同的方案进行了优化处理,这个和LSM树无关。

16、总结:LSM树的结构就像多层喷泉,上层满了,就会溢出到下一层。

17、LSM的合并compaction在不同的nosql数据库中的落地实践是不一样的。

参考:

LSM树详解 - 知乎

深入浅出分析LSM树(日志结构合并树) - 知乎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值