如何使用TWCS和计数器列从Cassandra表中删除数据?
我有一个使用TWCS的表,其中包括一个计数器列:如何使用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
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小时,则在压缩后,我不认为会保留任何数据。