使用 Rust 语言从零开始构建一个简易的 LSM-Tree(Log-Structured Merge Tree) 存储引擎skyzh.github.io/mini-lsm/什么是 LSM,为什么选择 LSM?日志结构合并树(Log-structured Merge Tree,简称 LSM)是一种维护键值对的数据结构。该数据结构在分布式数据库系统中广泛应用,如 TiDB 和 CockroachDB,作为其底层存储引擎。基于 LevelDB 的 RocksDB 是 LSM 树存储引擎的一种实现。它提供了许多键值访问功能,并广泛用于许多生产系统中。通常来说,LSM 树是一种对附加操作友好的数据结构。将 LSM 与其他键值数据结构如红黑树(RB-Tree)和 B 树(B-Tree)进行比较会更直观。对于红黑树和 B 树,所有的数据操作都是原地进行的。也就是说,当你想要更新与某个键相关联的值时,存储引擎会用新值覆盖原有的内存或磁盘空间。但在 LSM 树中,所有的写操作(即插入、更新、删除)都是延迟应用到存储中的。引擎会将这些操作批量处理并写入到 SST(排序字符串表)文件中,并存储到磁盘。一旦数据被写入磁盘,引擎不会直接修改它们。只有在一个名为压缩(compaction)的特定后台任务中,引擎才会合并这些文件以应用更新和删除操作。本课程将教授你如何在 Rust 编程语言中构建基于 LSM 树的存储引擎。科技先锋官
