如何删除 Cassandra 中的计数器列?

How to delete Counter columns in Cassandra?

我知道 Cassandra 拒绝计数器类型的 TTL。那么,删除旧计数器的最佳做法是什么?例如旧视图计数器。

我应该创建 cron 作业来删除旧计数器吗?

从计数器 table 中删除单独的聚簇行或分区可能不是一个好的做法,因为您删除的键不能再次使用。如果应用程序试图递增已删除行中的计数器,这可能会产生错误,因为递增不会发生。如果您在每次创建新计数器时都使用唯一键,那么也许您可以摆脱它。

因此,更好的方法可能是截断或删除整个 table,以便之后您可以重新使用密钥。为此,您需要将计数器分成多个 table,例如每个月一个,以便您可以在不再相关时截断或删除整个 table。您可以有一个定期运行的 cron 作业,并从 x 个月前删除计数器 table。

不用担心自己处理这种情况,cassandra 会为您处理,您只需删除它并继续使用。

此类情况下的一般准则: 确保定期运行压实,运行每"gc_grace_seconds"修复一次,以免增加磁盘使用情况和分布式删除。