我有一个使用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个马厩(一天一匹)。我需要7天的数据,所以我想使用ttl和gc_grace_seconds,但是Cassandra doe不支持有计数器列的表上的ttl。
我的另一个选择是使用一些作业来删除7天以上的数据,但是我知道这对我的性能不好,因为TWCS:http://www.redshots.com/cassandra-twcs-must-have-ttls/
我应该如何从这样的表中删除旧数据?
发布于 2022-01-26 08:03:10
我知道我正在重新提出一个老问题,但我遇到了一个类似的问题,我写了一个工具来帮助解决这个问题。在每个节点上,您必须:
困难的部分是知道哪个SSTables包含您不再感兴趣的日期范围。Cassandra附带了一个工具sstablemetadata,它显示SSTable元数据,包括Min/Max时间戳。
sstablemetadata速度慢,输出很难处理。相反,尝试ls-sstm,它输出关于Cassandra表目录:https://github.com/lokkju/cassandra-tools/blob/main/ls-sstm.sh中每个SSTable的格式良好的表格数据。
https://stackoverflow.com/questions/59772940
复制相似问题