【エスエステーブル】

SSTable とは?

最終更新:
💡 キー順に並べ、完成後は直接書き換えないデータ

決めた比較順で整列したキーと値を、完成後に直接書き換えない形で保存するデータ構造。LSM系のストレージで使われ、更新はメモリや新しいファイルへ書き、後で統合する。形式や並び順は実装によって異なる。

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

参考資料

← 用語集にもどる