LSMツリーとは?
えるえすえむつりー
LSMツリーとは、書き込みを高速化するために設計されたデータ構造で、NoSQLデータベースなどで広く採用されているストレージエンジンの基盤技術です。
LSMツリー(Log-Structured Merge-Tree)は、書き込み操作を効率化するために設計されたデータ構造です。従来のB木ベースのデータベースはランダム書き込みが多く、HDDのシーク時間がボトルネックになりがちでした。LSMツリーはこの問題を解消するために、書き込みを一度メモリ上に集約してから順次ディスクへフラッシュするアプローチを採用しています。
LSMツリーの動作は大まかに以下の流れです。
- 書き込みはまずMemTable(メモリ上のソート済みバッファ)に追記される
- MemTableが一定サイズに達するとSSTable(Sorted String Table)としてディスクに書き出される
- 定期的にバックグラウンドで複数のSSTがコンパクション(マージ)され、重複や削除済みエントリが整理される
この仕組みにより、書き込みはほぼシーケンシャルI/Oで完結し、非常に高いスループットを実現します。一方、読み取り時は複数のSSTを参照する必要があるため、BloomFilterやインデックスを活用して読み取り効率を高める工夫が必要です。
LSMツリーはLevelDB、RocksDB、Apache Cassandra、HBase、ScyllaDBなどの著名なNoSQLデータベースのストレージエンジンとして採用されています。大量の書き込みが発生するログ収集やIoTデータ蓄積のユースケースで特に威力を発揮します。
使い方・例文
SNSのタイムライン投稿やIoTセンサーのデータ収集のように、秒間数万件の書き込みが求められるシステムでは、LSMツリーを基盤にしたCassandraやRocksDBが採用されることが多いです。
この用語をシェア
最終更新: