基于时间戳列

时间:2016-01-28 13:08:16

标签: cassandra archiving purge

我每天都会在cassandra中存储时间序列数据。我们希望每天存档/清除超过2天的数据。我们使用Hector API来存储数据。有人建议我每天删除数据超过2天的cassandra数据的方法吗?使用TTL方法进行cassandra行是不可行的,因为删除数据的天数是可配置的。现在表中没有时间戳列。我们计划添加时间戳列。但问题是,单独的时间戳不能在where子句中使用,因为这个新列不是主键的一部分。 请提供您的建议。

3 个答案:

答案 0 :(得分:2)

TTL是正确的答案,每个使用的突变都附有一个内部时间戳,因此您不需要添加一个。手动清除几乎从来都不是一个好主意。您可能需要稍微处理一下数据模型check the datastax academy examples for time series

此外,节俭已被冻结两年,现已正式弃用(4.0中删除)。 Hector和其他节俭客户端不再被维护(see here)。使用CQL和Java驱动程序可以获得更好的结果,同时可以学习更多资源。

答案 1 :(得分:0)

我不知道是什么阻止你使用TTL方法。

不仅可以在定义模式时使用TTL, 而且在使用datastax cassandra驱动程序将数据保存到表中时。

所以,实际上你可以为每一行设置单独的TTL,由你的java代码配置。

另外,正如Chris已经提到的,TTL使用内部时间戳。

答案 2 :(得分:0)

严格基于您所描述的内容,我认为唯一的解决方案是添加timestamp列并在其上添加辅助索引。

然而,这是一个巨大的指标,您的数据模型远未适应这种情况。

强调我最初的评论:

  

您的模型是否适应/设计为其他东西?因为这看起来不像Cassandra中的时间序列数据:像列这样的时间戳应该是聚类键的一部分。