前文说过,RocksDB 是一个有 kv 接口的存储引擎库,并且 kv 是任意大小的字节流。
我们看看 RocksDB 的官方架构图:
上面的图中涉及到了几个 RocksDB 特有的东西,例如 MemTable,SST file,WAL(Write Ahead Log) 和 MANIFEST,其中 MemTable,SST file 和 WAL 是 RocksDB 中最基础的三个结构。
-
这里简单说下上面提到的几个概念:
memtable 是一个内存中的数据结构,RocksDB 先将数据库写操作写入 memtable,然后再 flush memtable 中的内容到 SST 文件中。
SST 文件是 RocksDB 存储数据的最终文件,即存在磁盘上的数据文件,默认的 SST 文件格式是 Block-based Table。
WAL(Write Ahead Log) 顾名思义,是一个写前日志。写操作除了会写入 memtable,还会写入 WAL。WAL 用于在数据库故障时恢复 memtable 中的数据。
MANIFEST 是 RocksDB 存储其状态改变的事务日志文件中,RocksDB 重启时,会通过 MANIFEST 中的内容,将 RocksDB 恢复到最后已知的一致性状态。
如果你对这些结构尚不了解,建议搭配下面几篇文章一同查看 RocksDB 架构图,不然一些概念会比较模糊。
至于 SST 文件,没什么好说的,就是存储最终数据的,你可以看看其默认的存储格式分析 RocksDB — Block-based Table 浅析。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GuKaifeng's Blog!
评论(延迟加载 / 需要可访问 GitHub Issues)