Cassandra"default_time_to_live"属性不会删除数据

Mar*_*ark 5 database cql ttl cassandra

我创建了一个像这样的表:

CREATE TABLE IF NOT EXISTS metrics_second(
  timestamp timestamp,
  value counter,
  PRIMARY KEY ((timestamp))
) WITH default_time_to_live=1;
Run Code Online (Sandbox Code Playgroud)

并插入一些数据,如:

UPDATE metrics_second SET value = value + 1 WHERE timestamp = '2015-01-22 17:43:55-0800';
Run Code Online (Sandbox Code Playgroud)

执行时SELECT * FROM metrics_second我总是看到数据,即使在一分钟左右之后,尽管default_time_to_live表的属性设置为一秒.这是为什么?

Mar*_*ark 5

正如@RussS 所证实的那样,不幸的是,当存在计数器时,Cassandra 不支持表或行上的 TTL。

即使default_time_to_live在创建表时设置了 且没有返回错误,Cassandra 也不会强制执行 TTL。

  • 仅供参考-我创建了一个 JIRA 票证,要求在将 TTL 添加到计数器表时发出警告或错误消息:https://issues.apache.org/jira/browse/CASSANDRA-8678 (3认同)