土法炼钢兴趣小组的算法知识备份

从零写一个 LSM-Tree 存储引擎

目录

这个系列用 5 篇文章,从零实现一个可运行的 LSM-Tree KV 存储引擎。不是照搬 LevelDB 的代码,而是从设计决策出发,搞清楚每个组件为什么长这样,然后亲手写一遍。最后用 Rust 重写核心模块,用数据说话。

适合谁读:对数据库内核、存储引擎、系统编程感兴趣的工程师。假设你熟悉 C 语言和基本数据结构,不假设数据库内核背景。


系列目录

第 1 篇:LSM-Tree 全景:为什么要先写日志再排序

从一个问题出发:B-Tree 的随机写太慢,有没有办法把随机写变成顺序写?

第 2 篇:WAL + MemTable:崩溃了也不丢数据

内存很快但断电就没了,磁盘持久但随机写太慢。WAL 和 MemTable 解决这个矛盾。

第 3 篇:SSTable + Bloom Filter:磁盘上的有序表

MemTable 写满后要 flush 到磁盘。怎么存才能既省空间又查得快?

第 4 篇:Compaction:LSM-Tree 的心脏手术

SSTable 只增不删,读放大和空间放大会持续恶化。Compaction 是 LSM-Tree 活下去的关键。

第 5 篇:完整引擎 + Rust 重写对比

把所有组件组装成完整引擎,然后用 Rust 重写,用 benchmark 说话。


延伸阅读

如果你读完这个系列还想继续深挖:


By .