概览

不熟悉的术语:
* 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