RocksDB 是由 Facebook 基于 LevelDB 开发的一款提供键值存储与读写功能的 LSM-tree 架构引擎。

用户写入的键值对会先写入磁盘上的 WAL (Write Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类存储引擎更高的写吞吐。

内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分 SST 合并到下一层,每一层的数据是上一层的 10 倍(因此 90% 的数据存储在最后一层)。

RocksDB 允许用户创建多个 ColumnFamily ,这些 ColumnFamily 各自拥有独立的内存跳表以及 SST 文件,但是共享同一个 WAL 文件,这样的好处是可以根据应用特点为不同的 ColumnFamily 选择不同的配置,但是又没有增加对 WAL 的写次数。

TiKV使用RocksDB,参考

https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview

  

SSTable

 

参考:浅析RocksDB的SSTable格式

相关文章:

  • 2021-04-02
  • 2021-06-05
  • 2022-12-23
  • 2022-01-05
  • 2022-01-21
  • 2021-07-03
  • 2021-10-10
  • 2022-01-11
猜你喜欢
  • 2022-03-01
  • 2021-09-23
  • 2021-07-27
  • 2021-12-27
  • 2021-05-10
  • 2021-09-09
相关资源
相似解决方案