卡桑德拉数据上的TTL去除剂

时间:2018-12-10 22:09:18

标签: cassandra datastax cql datastax-enterprise datastax-java-driver

我有一个方案,应用程序将数据插入(5)(TTL)为5天的Cassandra表中。此外,我还具有(GC_GRACE_SECONDS)5天,以便一旦开始压缩就可以驱逐墓碑。

现在,我有一个场景,其中一张桌子我需要将数据保留60天。我已更改了应用程序写入,以将新数据的TTL更新为60天。但是我正在寻找一种可以更改现有数据的TTL(从5天到60天)的解决方案。

出于某种原因,我尝试了Instaclustr / TTLRemover,但该代码对我们不起作用。 我们正在使用Apache Cassandra 3.11.3。

2 个答案:

答案 0 :(得分:0)

只是为了澄清参数:

default_time_to_live :TTL(生存时间)以秒为单位,其中禁用零。最大可配置值为630720000(20年)。如果该值大于零,则为整个表启用TTL,并且将过期时间戳记添加到每一列。每次更新数据时都会计算一个新的TTL时间戳,并且在所有数据过期后将删除该行。 默认值:0(禁用)。

gc_grace_seconds :在数据被标记为墓碑(删除标记)之后的秒数,之后才有资格进行垃圾收集。默认值:864000(10天)。默认值允许Cassandra有时间在删除之前最大化一致性。 注意:宽限期内的墓碑记录不包括在提示或批量突变中。

根据您的情况,您可以将TTL和gc_grace_seconds更新为60天,以使新数据在60天后过期。但是,由于您现有的数据已经用ttl标记为5天,因此不会用新的ttl更新,而是将在5天内删除。据我所知,无法为现有数据更新ttl。

答案 1 :(得分:0)

我们可以通过两种方式设置TTL:1)来自查询2)在表上。 只需在该表上更新TTL或使用新的TTL值重新插入查询即可。