2011-07-03 17 views
2

私はすべての挿入操作がコミットログに最初に来て、Memtable秒後、それはSSTableに圧縮されることを理解します。列を更新するとSSTableが変更されますか?

SSTableに圧縮した後、既存の列の更新操作を実行します。 SSTableを変更してその列の値を更新する必要がありますか?

答えて

3

http://wiki.apache.org/cassandra/MemtableSSTableは言う:

フラッシュたら、SSTableファイルは不変です。それ以上の書き込みは実行できません。

更新された値はcommitlogとmemtableに書き込まれ、最終的に新しいSSTableオンディスクにフラッシュされます。その後、このSSTableは他のSSTableとマージされ、新しいより大きなSSTableを作成することができます(古いものは破棄されます)。これが圧縮段階です。

1

フォローアップの質問に答える:はい、いいえ - あなたの値は圧縮されるまで異なるSSTablesで終わることがありますが、圧縮が完了するまで待つ必要はありません。あなたの価値の様々なバージョンがタイムスタンプされているので、カサンドラは最新のものを返すことができます。

関連する問題