私はすべての挿入操作がコミットログに最初に来て、Memtable
秒後、それはSSTable
に圧縮されることを理解します。列を更新するとSSTableが変更されますか?
SSTable
に圧縮した後、既存の列の更新操作を実行します。 SSTable
を変更してその列の値を更新する必要がありますか?
私はすべての挿入操作がコミットログに最初に来て、Memtable
秒後、それはSSTable
に圧縮されることを理解します。列を更新するとSSTableが変更されますか?
SSTable
に圧縮した後、既存の列の更新操作を実行します。 SSTable
を変更してその列の値を更新する必要がありますか?
http://wiki.apache.org/cassandra/MemtableSSTableは言う:
フラッシュたら、SSTableファイルは不変です。それ以上の書き込みは実行できません。
更新された値はcommitlogとmemtableに書き込まれ、最終的に新しいSSTableオンディスクにフラッシュされます。その後、このSSTableは他のSSTableとマージされ、新しいより大きなSSTableを作成することができます(古いものは破棄されます)。これが圧縮段階です。
フォローアップの質問に答える:はい、いいえ - あなたの値は圧縮されるまで異なるSSTablesで終わることがありますが、圧縮が完了するまで待つ必要はありません。あなたの価値の様々なバージョンがタイムスタンプされているので、カサンドラは最新のものを返すことができます。