基于时间戳列的时序数据cassandra数据清除
我每天都将时间序列数据存储在cassandra中。我们希望每天归档/清除超过2天的数据。我们正在使用Hector API来存储数据。如果数据超过2天,有人能建议我每天删除cassandra数据的方法吗?对cassandra行使用TTL方法是不可行的,因为删除数据的天数是可配置的。现在表中没有timestamp列。我们计划添加时间戳列。但问题是,不能在where子句中单独使用timestamp,因为这个新列不是主键的一部分。基于时间戳列的时序数据cassandra数据清除,cassandra,archiving,purge,Cassandra,Archiving,Purge,我每天都将时间序列数据存储在cassandra中。我们希望每天归档/清除超过2天的数据。我们正在使用Hector API来存储数据。如果数据超过2天,有人能建议我每天删除cassandra数据的方法吗?对cassandra行使用TTL方法是不可行的,因为删除数据的天数是可配置的。现在表中没有timestamp列。我们计划添加时间戳列。但问题是,不能在where子句中单独使用timestamp,因为这个新列不是主键的一部分。 请提供您的建议。TTL是正确答案,使用的每个突变都有一个内部时间戳,因此
请提供您的建议。TTL是正确答案,使用的每个突变都有一个内部时间戳,因此您不需要添加一个。手动清除几乎从来都不是一个好主意。您可能需要在数据模型上做一些工作
此外,thrift已经被冻结两年,现在正式被弃用(在4.0中删除)。赫克托和其他节俭客户不再真正得到维护()。使用CQL和java驱动程序将获得更好的结果,同时提供更多可供学习的资源。我看不出是什么阻止您使用TTL方法 TTL不仅可以在定义模式时使用, 而且,在使用datastax cassandra驱动程序将数据保存到表中时 因此,实际上,您可以为每一行使用单独的TTL,由java代码配置
此外,正如Chris已经提到的,TTL为此使用内部时间戳。严格地根据您所描述的,我认为唯一的解决方案是添加
时间戳
列并在其上添加二级索引
然而,这是一个巨大的指标,表明您的数据模型远远不能适应这种情况
强调我最初的评论:
您的模型是否根据其他内容进行了调整/设计?因为这看起来不像Cassandra中的timeseries数据:类似时间戳的列应该是集群键的一部分
您的模型是否根据其他内容进行了调整/设计?因为这看起来不像Cassandra中的timeseries数据:类似时间戳的列应该是集群键的一部分。我假设他的意思是“TTL的值”将在创建后确定。最疯狂的是时间戳不是一个聚类键。。。