https://segmentfault.com/a/1190000039269078
https://zhuanlan.zhihu.com/p/181498475
day3
1.LSM-Tree 基本原理
全称:The Log-Structured Merge-Tree
LSM树会将所有的数据插入、修改、删除等操作保存在内存之中,当此类操作达到一定的数据量后,再批量地写入到磁盘当中。而在写入磁盘时,会和以前的数据做合并。在合并过程中,并不会像B+树一样,在原数据的位置上修改,而是直接插入新的数据,从而避免了随机写。
写入速度快,主要利用了磁盘的顺序写,pk掉了需要随机写入的 B-tree,适用于key-value存储系统。
2.LSM树的结构
LSM树的结构是横跨内存和磁盘的,包含memtable、immutable memtable、SSTable等多个部分。
memtable
在内存中的数据结构,用以保存最近的一些更新操作,当写数据到memtable中时,会先通过WAL的方式备份到磁盘中,以防数据因为内存掉电而丢失。
memtable可以使用跳跃表或者搜索树等数据结构来组织数据以保持数据的有序性。当memtable达到一定的数据量后,memtable会转化成为immutable memtable,同时会创建一个新的memtable来处理新的数据。
预写式日志(Write-ahead logging,WAL)是关系数据库系统中用于提供原子性和持久性(ACID属性中的两个)的一系列技术。在使用WAL的系统中,所有的修改在提交之前都要先写入log文件中。
immutable memtable
内存中是不可修改的数据结构,它是将memtable转变为SSTable的一种中间状态。目的是为了在转存过程中不阻塞写操作。写操作可以由新的memtable处理,而不用因为锁住memtable而等待。
SSTable (Sorted String Table)
为有序键值对集合,是LSM树组在