Tree DS BST/AVL/Red-Black/B-Tree 1960-2026(ツリーデータ構造)
Tree Data Structure 1960-2026。Binary Search Tree BST 1960年代 (左<根<右・O(log n) 平均・O(n) 最悪skewed)・AVL Tree (Adelson-Velsky+Landis Soviet 1962・Self-balancing・Heightバランス±1・回転Rebalance Rotation)・Red-Black Tree (Rudolf Bayer 1972 Symmetric Binary B-Tree→Leonidas Guibas+Robert Sedgewick 1978命名・Java TreeMap+C++ std::map+std::set+Linux Kernel CFS Scheduler)・Splay Tree (Sleator+Tarjan 1985 Self-adjusting)・B-Tree (Bayer+McCreight 1972 Boeing研究所・DB Index+File System)+B+Tree (Leaves only Data)+B*Tree (Knuth)・Treap (Aragon+Seidel 1989 Random Priority)・Trie Prefix Tree (Edward Fredkin 1960・String検索)+Patricia Trie+Radix Tree+Adaptive Radix Tree ART (2013)・Skip List (William Pugh 1990・Random Linked List)・KD-Tree (Bentley 1975 Spatial)・LSM-Tree Log-Structured Merge (RocksDB+Cassandra+ScyllaDB)・¥0 標準, 2026年Red-Black+B+Tree+LSM-Tree主流 (DB+OS基盤)。
概要
木構造は、1970年代から現在に至るまで、データベース、ファイルシステム、オペレーティングシステムの核を成してきた。
- BST(Binary Search Tree) は、左子<根<右子という順序を保ち、平均 O(log n) の探索時間を実現するが、最悪で O(n) になる。
- AVL Tree(1962年)は、左右の高さ差を ±1 に制限し、回転でバランスを保つ。
- Red‑Black Tree(1972年)は、色付きノードで高さを 2 log n に抑え、Java の TreeMap、C++ の std::map などで採用。
- B‑Tree / B+‑Tree(1972年)は、内部ノードに複数キーを保持し、ディスク I/O を最小化。B+‑Tree は葉だけにデータを保持し、順序付き走査が高速。
- LSM‑Tree(2000年代初頭)は、書き込みをログに集約し、後でマージして検索性能を確保。RocksDB、Cassandra、ScyllaDB で実装。
- Trie / Patricia Trie / Radix Tree / ART(2013年)は、文字列検索に特化し、Adaptive Radix Tree は 64‑bit アドレス空間を効率的に扱う。
2025‑2026 年の動向としては、Red‑Black + B+‑Tree + LSM‑Tree の組み合わせが、クラウドネイティブデータベースとファイルシステムの両面で主流となっている。特に、分散ストレージでは LSM‑Tree が書き込みスループットを大幅に向上させ、B+‑Tree が読み取り性能を補完している。
主な特徴・仕組み
| 構造 | 平均探索時間 | 最悪探索時間 | 主なバランス手法 | 主な用途 |
|---|---|---|---|---|
| BST | O(log n) | O(n) | なし | 学習・小規模 |
| AVL | O(log n) | O(log n) | 回転(左・右) | 高速検索が必要な場面 |
| Red‑Black | O(log n) | O(log n) | 色付き回転 | Java、C++ 標準ライブラリ |
| B‑Tree | O(log n) | O(log n) | ページ分割・統合 | データベースインデックス |
| B+‑Tree | O(log n) | O(log n) | 同上 | ファイルシステム、検索 |
| LSM‑Tree | O(log n) + log k | O(log n) | マージ | 書き込み集約型データベース |
| Trie | O( | key | ) | O( |
| ART | O( | key | ) | O( |
- 回転:AVL では 1 回転で高さを 1 だけ減らし、Red‑Black では 2 回転で高さを 2 だけ減らす。
- マージ:LSM‑Tree では k 個のレベルを 1 つに統合し、I/O を 1/2 に抑える。
- 葉のみデータ:B+‑Tree は内部ノードにキーのみを保持し、葉のリンクで範囲検索が高速。
具体例・対応製品 (テーブル必須)
| 製品名 | タイプ | 発売年 | 主な数値スペック |
|---|---|---|---|
| Oracle Database 23c | B+‑Tree + LSM‑Tree | 2024 | 最大 64 TB、平均深さ 12、書き込みスループット 1 Mops |
| PostgreSQL 15 | B+‑Tree | 2023 | 最大 32 TB、平均深さ 10、インデックスサイズ 0.8×データサイズ |
| RocksDB 8.7 | LSM‑Tree | 2025 | 最大 128 GB、平均深さ 8、書き込みスループット 2 Mops |
| ScyllaDB 4.0 | LSM‑Tree + B+‑Tree | 2024 | 最大 256 TB、平均深さ 9、レイテンシ 0.3 ms |
| Linux kernel 6.5 | Red‑Black Tree | 2026 | 最大 1 Mノード、平均深さ 17、カーネルスケジューラで使用 |
| Apache Cassandra 4.1 | LSM‑Tree | 2025 | 最大 512 TB、平均深さ 10、書き込みスループット 3 Mops |
| Redis 7.2 | Red‑Black Tree + Hash | 2025 | 最大 4 GB、平均深さ 15、レイテンシ 0.1 ms |
| MongoDB 7.0 | B+‑Tree | 2025 | 最大 64 TB、平均深さ 11、インデックスサイズ 1.2×データサイズ |
| Microsoft SQL Server 2026 | B+‑Tree | 2026 | 最大 128 TB、平均深さ 12、書き込みスループット 1.5 Mops |
| Amazon DynamoDB | LSM‑Tree | 2026 | 最大 256 PB、平均深さ 9、レイテンシ 0.2 ms |
選び方・注意点
- 書き込み頻度
- 高頻度書き込みなら LSM‑Tree が有利。マージ処理が遅延書き込みを行うため、スループットが高い。
- 低頻度なら B+‑Tree が読み取り性能を最大化。
- データサイズとページサイズ
- 1 GB 以上のデータベースでは、ページサイズ 4 KB 以上を採用すると I/O が減少。
- 範囲検索の頻度
- 頻繁に範囲検索を行う場合は B+‑Tree の葉リンクが有効。
- メモリ使用量
- AVL は高さ制御でノード数が増えるが、Red‑Black は 1 bit で色情報を保持。
- 並列性
- Red‑Black Tree はロックフリー実装が難しいため、スレッド数が多い環境では LSM‑Tree が適している。
関連用語との違い
- Skip List:確率的にレベルを割り当て、平均 O(log n) で検索。木構造と比較して実装が簡単だが、確率的に最悪ケースが発生する。
- KD‑Tree:多次元空間での最近傍検索に特化。木構造は 2 次元以上で分割が必要。
- Trie:文字列キーに最適化。キー長が長いとメモリオーバーヘッドが増える。
- B‑Tree vs B+‑Tree:B‑Tree は内部ノードにデータも保持し、検索が高速だが範囲検索は非効率。B+‑Tree は内部ノードにキーのみを保持し、葉のみでデータを保持するため、範囲検索が高速。
よくある質問 (FAQ)
Q1. LSM‑Tree のマージが頻繁に発生すると、読み取り性能が低下しませんか?
A1. マージはバックグラウンドで行われ、読み取りは最新レベルのデータを参照するため、ほぼ影響はありません。必要に応じて「コンパクト」操作でレベルを統合し、読み取りキャッシュを最適化します。
Q2. Red‑Black Tree でのバランス調整はどのくらいコストがかかりますか?
A2. 1 回の挿入・削除で最大 2 回の回転と 1 回の色変更が必要です。これらは 1–2 CPU サイクル程度で済むため、現代のプロセッサではほとんど無視できます。
Q3. B+‑Tree の葉ノードはどのように連結されていますか?
A3. 葉ノードは双方向リンクで連結され、範囲検索や順序走査が O(log n + k) で実行可能です。リンクは 8 byte で済むため、メモリオーバーヘッドは最小限です。
まとめ
木構造は、データベースやファイルシステムの性能を左右する重要な要素である。
- BST は教育用途に適し、AVL と Red‑Black は高速検索を保証。
- B‑Tree / B+‑Tree はディスク I/O を抑え、LSM‑Tree は書き込み集約でスループットを向上。
- 2025‑2026 年では、Red‑Black + B+‑Tree + LSM‑Tree の組み合わせが、クラウドベースのデータベースとファイルシステムで主流となっている。
- 選択は、書き込み頻度、データサイズ、範囲検索の必要性、メモリ使用量、並列性などを総合的に判断することが鍵である。