---
title: 开源RocksDB类数据库参考架构
description: "RocksDB是基于LSM-Tree设计的KV数据存储引擎，写吞吐极高、读性能强、压缩比高，适用于写密集、高并发、需要本地持久化的场景，其LSM-Tree的存储引擎模型，使其硬盘写大量为顺序IO，具有对机械盘友好的特点。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/twp/kunpengdbs_19_0035.html
sourcePath: /source/zh/kunpengdbs/twp/kunpengdbs_19_0035.html
indexId: e9037d149e8ea415401e4738abfe5bf3a51562b36d9375a2836bdebcddd2803849
---
# 开源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、提升读性能、降低延迟。 |
