![](https://file.jishuzhan.net/article/1702614321101541378/144303a75b994e0e9505e32b210ea0bc.png)
SSTables 可以类比Kafka:将数据按键排序写入磁盘,并分为多个段,组织段的稀疏索引,并定期合并段文件(kafka因为不存在重复数据,所以不需要合并)
LSM-Tree是基于SSTables的:在内存中维护两个Tree(交替工作),当Tree的大小达到一定的阈值之后,写操作转移到另一个tree,并将当前tree写入磁盘,形成一个SSTables实例,当读的时候,先从内存实例中查找,然后依次从磁盘的SSTables查找,并且写的时候为了避免宕机,会先写一个顺序预写日志(这也是Rockes和Level-DB的视线)
![](https://file.jishuzhan.net/article/1702614321101541378/3e0c5d283369472db5e5fa0cf5553d66.png)