2016-06-30 41 views
1

以下は私が使用しているテーブルスキーマです。カサンドラのバージョンは、継続的に挿入されますと同じ(得意先、ユーザー)レコードの場合2.1Cassandraのマイナーコンパクションは、経過したTTLレコードを削除します

CREATE TABLE metadata ( customerid int, user text, messageid text, subject text, PRIMARY KEY ((customerid, user), messageid)) WITH CLUSTERING ORDER BY (messageid ASC) AND compaction = {'class':'org.apache.cassandra.db.compaction.LeveledCompactionStrategy', 'sstable_size_in_mb' : '4'} AND gc_grace_seconds = 172800 ;

です。挿入中はTTLを設定します.TTLは最小14日で、常にgc_grace_secondsより大きくなります。

更新や削除は行われません。

同じ(customerid、user)の場合、複数のSSTableファイルにデータを格納できます。

LCS圧縮が実行されている間に、圧縮されていない他のSSTableファイルに同じパーティションキーのデータがあっても経過したレコードは削除されます。私が読んカサンドラメールアーカイブの1、

で「行の全ての断片が圧縮されているSSTablesに含まれている場合墓石はマイナー圧縮によって期限切れになります。

は、TTLとのデータのため、この適用されますまた?

答えて

0

テーブル「メタデータ」の行全体を挿入します。更新や手動による削除はないと言われていたので、行全体は1つのSSTableにのみ存在するはずです。したがって、軽度のコンパクションでは、それぞれの行はSSTableから削除されます。

参考までに、TTLは14日間です。あなたのデータは、14日後に墓石としてマークされます。あなたのgc_grace_secondsは172800(2日間)です。だから、次の2日間は墓石が存在します。したがって、16日が最初から期限切れになると、次の小規模または大規模な圧縮によってデータが削除されます。

+0

TTLedデータは、削除マーカーと同じ墓碑ではありません.GCGでは保持されません。すぐに消去することができます。 –

関連する問題