Cassandra中的Minor Compactions将删除已过去的TTL记录

时间:2016-06-30 14:36:16

标签: cassandra cassandra-2.1

下面是我正在使用的表模式。 Cassandra版本是2.1

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 ;

对于相同的(customerid,user)记录将连续插入。插入时我们设置的TTL最少为14天,并且总是大于gc_grace_seconds。

没有更新或删除。

对于相同的(customerid,user),我们可以在多个SSTable文件中包含数据。

当LCS压缩运行时,即使其他未压缩的SSTable文件具有相同分区键的数据,它是否会丢弃已经过的记录。在我读过的一个cassandra邮件档案中,

如果正在压缩的SSTables中包含该行的所有片段,那么Tombstones将通过Minor Compaction过期。

这适用于带TTL的数据吗?

1 个答案:

答案 0 :(得分:0)

您将为表格"元数据"插入整行。正如您所提到的,没有更新和手动删除,整个行应该只驻留在一个SSTable中。因此,在进行轻微压缩时,相应的行将从SSTable中删除。

仅供参考,您的TTL为14天。您的数据将在14天后标记为墓碑。你的gc_grace_seconds是172800(2天)。所以墓碑将在未来2天内存在。因此,一旦从开始到期16天,下一个次要或主要压缩将删除数据。