【发布时间】:2021-02-24 19:00:00
【问题描述】:
我们实际上使用的是 scylla,但我仍然在标题中包含“cassandra”,因为问题也应该与它相关。
我们有一个没有 TTL(数据永不过期)的时间序列工作负载。对于上下文,表模式大致如下所示:
CREATE TABLE events (
entity INT,
time_partition TIMESTAMP,
event_time TIMESTAMP,
a TEXT,
b TEXT,
c TEXT,
PRIMARY KEY((entity, time_partition), event_time)
);
其中time_partition 与event_time 相同,但总是被截断为一个小时,因此相同entity 和同一小时内的事件会转到同一个分区。
我试图弄清楚我们应该使用什么压缩策略。起初我认为我们应该使用TimeWindowCompactionStrategy (TWCS):如果时间窗口是 1 天,这基本上意味着我们将有每天的 sstables,这对我来说很有意义;但后来我发现各种文档都说 TWCS 不适合永不过期的数据。例如。 this doc on datastax.com 说:
不适合没有 TTL 工作负载的数据,因为存储会无限增长。
尽管存储确实会“无限制地”增长,因为我们不想删除旧数据,但其他策略不也是一样吗?如果我们从不删除数据,这意味着它会继续增长。这只是我们如何组织这个不断增长的数据集的问题,我不确定为什么 TWCS 不适合。 大量文件有问题吗?例如。如果我们将窗口设为 1 天,那么 10 年的数据将大约是 3650 个文件。
希望有任何建议。
【问题讨论】:
标签: cassandra partitioning scylla