【问题标题】:Will Minor Compactions in Cassandra remove elapsed TTL recordsCassandra 中的 Minor Compactions 是否会删除经过的 TTL 记录
【发布时间】:2016-11-02 17:44:05
【问题描述】:

下面是我正在使用的表架构。 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 中,则墓碑将通过 Minor Compaction 过期。"

这是否也适用于具有 TTL 的数据?

【问题讨论】:

    标签: cassandra cassandra-2.1


    【解决方案1】:

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

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

    【讨论】:

    • TTLed 数据与删除标记不同 - 它们不是为 gcgs 保留的,它们可以立即清理。
    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    相关资源
    最近更新 更多