如何使用TWCS和计数器列从Cassandra表中删除数据?

如何使用TWCS和计数器列从Cassandra表中删除数据?,cassandra,Cassandra,我有一个使用TWCS的表,其中包括一个计数器列: create table sensors_by_time ( group text, // sensor group date date, // bucketing id text, // sensor id count counter, // detected count primary key

我有一个使用TWCS的表,其中包括一个计数器列:

create table sensors_by_time (
            group text,     // sensor group
            date date,       // bucketing
            id text,        // sensor id 
            count counter,  // detected count
        primary key ((group, date), id))
        WITH CLUSTERING ORDER BY (id DESC)
        AND compaction = {
            'compaction_window_size': '24',
            'compaction_window_unit': 'HOURS',
            'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy'}
一周后,我有7张sstables(每天1张)。我需要7天的数据,所以我想使用ttl和gc_grace_seconds,但Cassandra doe不支持在带有计数器列的表上使用ttl

我的另一个选择是使用一些作业来删除超过7天的数据,但我知道这对我的性能不好,因为TWCS:


我应该如何从这样的表中删除旧数据?

尝试使用gc\u grace\u seconds=0而不在表中添加TTL?并使用删除查询进行删除?这不是一个问题,因为删除的是已经压缩的数据(因为它属于以前的时间窗口)?所以你说的是gc_grace_seconds=0,压缩后数据仍然存在?假设我的窗口是一天,我想在7天后删除它。现在我有了一些数据,在24小时压缩后,我会将最后24小时的数据写入一个不可变的sstable。一周后,我将对所有超过一周的数据运行delete命令。墓碑将在另一个窗口中创建,因此我不确定gc宽限时间将有何帮助?如果您的窗口为24小时,则在压缩后,我不认为会保留任何数据。