【问题标题】:cassandra data purging for time series data based on timestamp column基于时间戳列的时间序列数据的 cassandra 数据清除
【发布时间】:2016-01-28 13:08:15
【问题描述】:

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

【问题讨论】:

  • 你的模型是否适应/设计了别的东西?因为这看起来不像 Cassandra 中的时间序列数据:类似时间戳的列应该是集群键的一部分。

标签: cassandra archiving purge


【解决方案1】:

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

thrift 也被冻结了两年,现已正式弃用(在 4.0 中删除)。 Hector 和其他节俭客户不再真正维护 (see here)。使用 CQL 和 java 驱动程序将获得更好的结果,同时也有更多的资源可供学习。

【讨论】:

    【解决方案2】:

    我看不出是什么阻止您使用 TTL 方法。

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

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

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

    【讨论】:

    • 我以为他的意思是“TTL的值”将在创建后决定。疯狂的部分是时间戳不是集群键......
    【解决方案3】:

    严格根据您的描述,我认为唯一的解决方案是添加 timestamp 列并在其上添加二级索引。

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

    强调我最初的评论:

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

    【讨论】:

      猜你喜欢
      • 2014-05-07
      • 2011-01-13
      • 2017-08-19
      • 2013-04-17
      • 2012-11-05
      • 1970-01-01
      • 2013-08-02
      • 2014-11-18
      相关资源
      最近更新 更多