Cassandra将TTL添加到现有条目中

时间:2015-06-02 08:44:37

标签: cassandra cassandra-2.0 cqlsh ttl

如何更新整个表并为每个条目设置TTL?

当前场景(Cassandra 2.0.11):

表:

CREATE TABLE external_users (
  external_id text,
  type int,
  user_id text,
  PRIMARY KEY (external_id, type)
) 

目前这个表中有大约40个条目,我想添加一个TTL,比如86 400秒(1天)。 使用USING TTL(86400)或UPDATE当前条目的新条目没有问题,但是如何为每个现有条目应用ttl?

我的想法是选择所有数据并使用一个小脚本更新每一行。我只是想知道是否有更简单的方法来实现这一点(因为即使批量更新,这也需要一段时间,并且是一项很大的努力)

提前致谢

1 个答案:

答案 0 :(得分:4)

无法改变C *中现有数据的TTL。 TTL只是一个内部列属性,它与所有其他列数据一起写入不可变的SSTable。来自the docs的引用:

  

如果要更改过期数据的TTL,则必须使用新的TTL重新插入数据。在Cassandra中,数据的插入实际上是插入或更新操作,具体取决于是否存在先前版本的数据。

相关问题