据我了解,Cassandra 计数器应该有助于避免 select count(*) 的成本。只要我不将 TTL 放在我想要计数的项目上,效果就很好。不过,使用 TTL 会使项目一旦开始过期就会被过度计数。有什么策略来处理这个问题吗?手动删除旧记录(以及计数器减量)是此用例的唯一方法吗?
最佳答案
如果您想使用计数器来跟踪表中的行数,您可能不希望使用 TTL 以随机方式使行过期。
您可以做的是以某种方式(例如按天)对数据进行分区,并为每一天保留一个计数器。然后设置 TTL,以便给定日期的所有行同时过期(或者您可以使用 DELETE 删除整个分区)。当那一天到期时,您会将那天的计数器设置回零。那么,您的总行数将是所有日计数器的总和。
关于Cassandra 使用 TTL 计算项目插入(集群键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664480/