开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

开源RocksDB类数据库参考架构

组件场景

RocksDB是基于LSM-Tree设计的KV数据存储引擎,写吞吐极高、读性能强、压缩比高,适用于写密集、高并发、需要本地持久化的场景,其LSM-Tree的存储引擎模型,使其硬盘写大量为顺序IO,具有对机械盘友好的特点。

架构原理

图1 RocksDB架构图
表1 模块信息

模块名称

作用说明

WAL(Write-Ahead Log)

数据写入Memtable前,先在WAL日志上记录,避免宕机丢数据,保证已返回成功的写入不丢失。

Manifest Log

保存数据库的元数据信息,包括当前有哪些SSTable文件、每个文件属于哪一层(L0到Ln)、它们的键值范围、哪些文件是新生成的、哪些将被删除,同时还支持多版本和多列族(ColumnFamily)的管理。

Memtable

内存里的跳表(SkipList),所有写入先写这里,顺序写、极快。写满后变成Immutable Memtable,后台刷盘。

Immutable Memtable

Memtable写入内容达到一定容量后,memtable转化为只读的Immutable Memtable,等待被flush到持久化层的L0层。

SSTable(Sorted String Table)

磁盘上有序、不可变的KV文件,按key排序,支持二分查找,多层结构:L0、L1、L2…。

Compaction

把多层/重复/过期/删除的数据合并,删掉旧版本,让数据保持有序、减少读放大。

Block Cache

内存中的读缓存,缓存磁盘SSTable文件中的数据块,减少磁盘I/O、提升读性能、降低延迟。