[VLDB'21] Constructing and Analyzing the LSM Compaction Design Space 论文阅读
#1. 引言
基于日志布局合并 (LSM) 的键值存储 LSM 树如今被广泛用作现代 NoSQL 键值存储的存储层. LSM 树采用 out-of-place 范式来实现快速数据写入. 传入的键值对被缓冲在主存中, 并定期刷新到持久存储中, 形成 sorted immutable runs. 随着磁盘上 run 数量的增加, 它们会被排序合并, 从而构建更少但更长的 sorted runs. 这个过程被称为 Compaction. 为了便于快速查询, LSM 树使用辅助的内存数据结构 (Bloom Filter 和 Fence Pointer) 辅助减少每次查询执行的平均磁盘 I/O 次数. 由于这些优势, LSM 树被多个生产级键值存储系统采用, 包括 Google 的 LevelDB 和 BigTable、Facebook 的 RocksDB、阿里巴巴的 X-Engine、MongoDB 的 WiredTiger、Cockroach Labs 的 CockroachDB、LinkedIn 的 Voldemort、Amazon 的 DynamoDB、Apache 的 AsterixDB、Cassandra、HBase、Accumulo 以及 Yahoo 的 bLSM 和 cLSM. 基于 LSM 树的学术系统包括 Monkey、SlimDB、Dostoevsky、LSM-Bush、Lethe、Silk、LSbM-tree、SifrDB 和 Leaper.