概览
不熟悉的术语:
* SSTable
SSTable 就是由内存中的数据不断导出并进行 Compaction 操作后形成的,而且 SSTable 的所有文件是一种层级结构,第一层为Level 0,第二层为Level 1,依次类推,层级逐渐增高。
SSTable 中的文件(后缀为.sst)是 key 有序的,就是说在文件中小 key 记录排在大 key 记录之前,除了 level 0,各个 level 的 SSTable 都是如此。
- Manifest 文件
记录key 文件在哪一层、文件名、开始结束的key 。 下面是参考链接中给出的一个很直观的图:
-
Current 文件
记录Manifest 文件名。
为啥需要?因为在 LevleDB 的运行过程中,随着 compaction 的进行,SSTable 文件会发生变化,会有新的文件产生,老的文件被废弃,manifest 也会跟着反映这种变化,此时往往会新生成 manifest 文件来记载这种变化,而 current 则用来指出哪个 manifest 文件才是我们关心的那个 manifest文件。 -
层级如何划分?
-
如何做compaction ?
参考资料
https://blog.csdn.net/H514434485/article/details/103546949