【エスエステーブル】
SSTable とは?
最終更新:
💡 キー順に並べ、完成後は直接書き換えないデータ
決めた比較順で整列したキーと値を、完成後に直接書き換えない形で保存するデータ構造。LSM系のストレージで使われ、更新はメモリや新しいファイルへ書き、後で統合する。形式や並び順は実装によって異なる。
📌 このページのポイント
- キーと値を整列して保存し、索引などで対象を探す
- 完成したデータは直接更新せず、新しい版を別に保存する
- 統合で不要な版を整理するが、削除できる条件がある
- 書き込み、読み取り、統合のコストは実装と用途で変わる
SSTableってどんなもの?
キーと値を決めた順に並べて保存したものだよ。辞書のように対象を探す手がかりを持つ。ただし必ずアルファベット順ではなく、比較方法は実装次第。Cassandraでは複数のファイルで一つのSSTableを構成するので、常に単一ファイルとも限らないね
書き換えないなら、更新はどうするの?
完成したSSTableを直接直す代わりに、更新をメモリ上の表などへ保存し、後で別のSSTableを書き出すよ。読むときはメモリと関連するSSTableの情報を合わせ、版や時刻などのルールで値を決める。新しいファイルの名前だけで優先するわけではないんだ
それだけで必ず速くなる?
メモリに貯めたデータをまとめて書く設計に使えるけれど、どんな読み書きでも必ず高速になるわけではないよ。複数の保存先を調べる読み取りや、後からデータを統合する処理の負担もある。索引やBloomフィルターなどの探し方も実装に関係するんだ
統合すると古いデータは全部消せる?
コンパクションでは複数のSSTableを読み、新しい保存データを作るよ。不要な古い版は整理できるが、削除の印をすぐ消せるとは限らない。例えばCassandraでは、他の複製先へ削除を伝えるための待ち期間や、関連するデータの統合条件を考えるんだ
図では何を示しているの?
appleの値を100から150へ更新した、単純化した例だよ。元の表は直接書き換えず、別の表と合わせて150を残す。実際には並び順や版のルールがあり、読み取り中の処理や保存する過去の版も考える。全製品が同じ形式や同じ順序で検索するという図ではないね
まとめ:ざっくりこれだけ覚えればOK!
「SSTable」って出てきたら「キー順に整列し、完成後は直接書き換えない保存データ」と思えばだいたいOK!
📖 おまけ:英語の意味
「SSTable (Sorted String Table)」 = ソート済み文字列テーブル
💬 Sorted String Tableという名前で、キーを決めた比較順に並べて保存する仕組みだよ。名前にStringがあっても、必ず人間の辞書のアルファベット順という意味ではないんだ