Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于时间戳列的时序数据cassandra数据清除_Cassandra_Archiving_Purge - Fatal编程技术网

基于时间戳列的时序数据cassandra数据清除

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

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

TTL是正确答案,使用的每个突变都有一个内部时间戳,因此您不需要添加一个。手动清除几乎从来都不是一个好主意。您可能需要在数据模型上做一些工作


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

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

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

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


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

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

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

强调我最初的评论:


您的模型是否根据其他内容进行了调整/设计?因为这看起来不像Cassandra中的timeseries数据:类似时间戳的列应该是集群键的一部分


您的模型是否根据其他内容进行了调整/设计?因为这看起来不像Cassandra中的timeseries数据:类似时间戳的列应该是集群键的一部分。我假设他的意思是“TTL的值”将在创建后确定。最疯狂的是时间戳不是一个聚类键。。。