【发布时间】:2017-12-07 23:03:24
【问题描述】:
所以我知道由于设计原因 TTL 不适用于计数器,我已经阅读了 https://issues.apache.org/jira/browse/CASSANDRA-2103 以及其他一些关于此的 SO 问题,但似乎没有明确的答案(除非我遗漏了一些完全合理):
我们如何优雅地处理 Cassandra 中的计数器过期?
示例用例:特定日期的页面浏览量。
为此,我们可能有一个表格,例如
CREATE TABLE 页面浏览量(页面 varchar、日期 varchar、查看次数计数器、PRIMARY KEY(page, date));
一年后,我们在某一天获得了多少观看次数的信息并不是很相关(相反,我们可能已将其汇总到一个观看/月表或类似的表格中),我们不希望在其中保留不必要的数据我们的数据库无缘无故。通常我们会为此设置一个 TTL 并让 Cassandra 为我们处理 - 优雅!但是由于我们不允许对计数器表使用 TTL,所以这不是一个选项..
您也不能只运行 delete from pageviews where date > 'xxxx' 因为这两个键都必须在 where 子句中定义。 您首先需要先查询所有页面,然后发出单独的删除,这是不可扩展的。 有什么合适的方法可以实现吗?
【问题讨论】:
标签: select cassandra counter ttl