2015-06-02 78 views
1

如何更新整个表并为每个条目设置TTL?Cassandra将TTL添加到现有条目

当前情况下(卡桑德拉2.0.11):

表:

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

目前有〜在此表中40mio条目,我想补充一个TTL为让说86400秒(1天)。 使用TTL(86400)或更新当前条目的新条目没有问题,但是我如何为每个已存在的条目应用ttl?

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

感谢

回答

1

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

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

+0

有没有办法删除TTL = null的所有条目? @shutty –

+0

有没有简单的方法:只需遍历所有行,并删除与ttl = 0。 – shutty

+0

有没有办法在cqlsh中做到这一点? –