目录
前言
Pebble/RocksDB 作为一款高性能 kv 数据库,被 cockroachdb 等 NewSQL 数据库作为存储引擎。Pebble/RocksDB 的高性能一方面得益于其架构,另外与底层的 sst 文件高效的读也不无关系。为什么 sst 文件具有高效的读操作呢?那么从下面三个问题展开本文:
1、sst 文件结构是怎样的?
2、sst 文件怎么写?
3、sst 文件怎么读?
SST 文件结构
由图可见,sst 文件由 Footer 与 Block 两块组成,其中 Footer 可以理解为文件加载的引导数据(Block 的元数据),Block 用来存放 sst 文件的数据与元数据,具体可以分为四种:
名称 | 占用空间 | 作用 |
Data Block | 多个 Block | 存放用户的数据,kv 对 |
Index Block | 一个 Block | Data Block 的索引 |
Meta Block | 多个 Block | 存放 BloomFilter、Properity、RangeDel 等元数据 |
Metaindex Block | 一个 Block | Meta Block 的索引 |