Cassandra 将 TTL 添加到现有条目

Nic*_*ert 3 ttl cassandra cqlsh cassandra-2.0

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

当前场景(Cassandra 2.0.11):

桌子:

CREATE TABLE external_users (
  external_id text,
  type int,
  user_id text,
  PRIMARY KEY (external_id, type)
) 
Run Code Online (Sandbox Code Playgroud)

目前,该表中有 ~40mio 条目,我想添加一个 TTL,例如 86 400 秒(1 天)。对于使用 TTL(86400) 或更新当前条目的新条目没有问题,但是我如何为每个现有条目应用 ttl?

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

提前致谢

shu*_*tty 5

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

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