我每天都将时间序列数据存储在 cassandra 中。我们希望每天存档/清除超过 2 天的数据。我们使用 Hector API 来存储数据。有人可以建议我每天删除数据超过 2 天的 cassandra 数据的方法吗?对 cassandra 行使用 TTL 方法是不可行的,因为删除数据的天数是可配置的。现在表中没有时间戳列。我们计划添加时间戳列。但问题是,不能在 where 子句中单独使用时间戳,因为这个新列不是主键的一部分。请提供您的建议。
问问题
1885 次
3 回答
2
TTL 是正确的答案,每个使用的突变都有一个内部时间戳,因此您无需添加一个。手动清除几乎不是一个好主意。您可能需要对数据模型进行一些处理,请查看 datastax academy 的时间序列示例
此外,thrift 已被冻结两年,现已正式弃用(在 4.0 中删除)。Hector 和其他节俭客户不再真正维护(见这里)。使用 CQL 和 java 驱动程序将提供更好的结果,同时也有更多的资源可供学习。
于 2016-01-28T16:51:34.213 回答
0
我看不出是什么阻止您使用 TTL 方法。
不仅可以在定义模式时使用 TTL,还可以在使用 datastax cassandra 驱动程序将数据保存到表中时使用。
因此,实际上您可以为每一行设置单独的 TTL,由您的 java 代码配置。
此外,正如 Chris 已经提到的,TTL 使用内部时间戳。
于 2016-01-28T18:19:58.277 回答
0
严格根据您的描述,我认为唯一的解决方案是添加该timestamp
列并在其上添加二级索引。
然而,这是一个巨大的指标,表明您的数据模型远未适应这种情况。
强调我最初的评论:
您的模型是否适应/设计了其他东西?因为这看起来不像 Cassandra 中的时间序列数据:类似时间戳的列应该是集群键的一部分。
于 2016-01-28T22:56:14.883 回答