很多的数据库现在都在使用LSM tree作为其核心结构,因为它可以提供非常高的写入吞吐量。一些分布式数据库比如Bigtable、HBase、LevelDB、SQLite4、Tarantool、RocksDB、WiredTiger(MongoDB新一代的引擎)、Apache Cassandra、InfluxDB、ScyllaDB、OceanBase,甚至一些MQ都在使用这个结构,比如pulsar。既然LSM tree这么厉害,我们就有必要深入学习一下。一个典型的基于LSM tree的系统应该包括如下组件。没错,通过本文你将了解到一个典型的LSM系统应该有的五脏六腑。
六大组件
WAL
MemTable
SSTable (Sorted Strings Table)
Compactor
Index
Bloom Filter