据我了解,Cassandra计数器应该有助于避免选择count(*)的开销。只要不将TTL放在我要计数的项目上,效果就很好。但是,使用TTL会使物品一旦过期就被过度计数。有什么策略可以解决这个问题?手动删除旧记录(以及计数器递减)是此用例的唯一方法吗?

最佳答案

如果要使用计数器来跟踪表中的行数,则可能不希望使用TTL以随机方式使行到期。

您可以做的是以某种方式(例如,按天)对数据进行分区,并每天保留一个计数器。然后设置TTL,以使给定日期的所有行同时到期(或者您可以使用DELETE删除整个分区)。当天到期后,您可以将当天的计数器设置回零。这样,您的总行数就是所有日计数器的总和。

关于cassandra - Cassandra 计数带TTL的项目(集群键)的插入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31664480/

10-10 17:30
查看更多