LSMツリー(えるえすむつりー)
最終更新:2026/4/27
LSMツリーは、ログ構造化マージツリーを意味し、データベースやファイルシステムにおけるデータ構造の一種である。
ポイント
LSMツリーは、書き込み性能を重視した構造であり、大量の書き込み処理を効率的に行うために用いられる。読み込み性能は、構造の最適化によって改善される。
LSMツリーとは
LSMツリー(Log-Structured Merge-Tree)は、書き込み処理を最適化するために設計されたデータ構造です。従来のB-treeなどのデータ構造が読み込み性能を重視するのに対し、LSMツリーは書き込み性能を最優先に考えられています。
LSMツリーの構造
LSMツリーは、複数のレベルから構成されます。最も上のレベルは、メモリ上に保持される書き込みバッファ(MemTable)です。データはまずこのMemTableに書き込まれます。MemTableが一定のサイズに達すると、ソートされ、ディスク上のSorted String Table (SSTable) にフラッシュされます。
SSTableは、キーでソートされたデータが格納されたファイルです。複数のSSTableが存在し、それぞれが異なるレベルに配置されます。レベルが下がるほど、SSTableの数は増え、データのバージョンも古くなります。
LSMツリーの動作
データの読み込み時には、まずMemTableを検索し、次に各レベルのSSTableを順番に検索します。書き込み時には、まずMemTableに書き込み、MemTableが一杯になるとSSTableにフラッシュします。複数のSSTableが存在する場合、定期的にマージ処理が行われ、重複したデータを削除し、SSTableの数を減らします。
LSMツリーの利点と欠点
利点:
- 高い書き込み性能
- 大量の書き込み処理に適している
- SSDなどのフラッシュメモリとの相性が良い
欠点:
- 読み込み性能がB-treeに比べて低い場合がある
- マージ処理によるオーバーヘッド
- データのバージョン管理が複雑
LSMツリーの応用例
LSMツリーは、以下のようなデータベースやファイルシステムで利用されています。
- LevelDB
- RocksDB
- Cassandra
- HBase