如何更新Cassandra DB中现有记录的生存时间(TTL)?

Ani*_*hav 9 database

由于Cassandra DB提供了一个选项来设置生存时间(TTL)值,以便根据记录设置的TTL值自动删除记录.我有一个案例,用户可以更改数据到期日期,意味着用户可以在任何时间更改数据到期日期.

案件:

  1. 假设默认有效期= 10天.
  2. 然后插入一些设置TTL的记录10天.
  3. 用户2天后更改有效期至30天.
  4. 但是,在10天TTL期间插入的先前数据会在10天而不是30天后自动删除.

要求:每当用户通过UI更改过期时间时,我们都希望更改数据库中的TTL.是否有任何选项可以更新Cassandra DB中的记录的TTL.

Ani*_*hav 10

我在这个问题上做了一些研发,并得出以下几点.

  1. 我们可以为Cassandra DB中的任何记录增加TTL,但它需要使用单个记录的更新查询重置所有字段.
  2. 我们不能不惜任何代价减少任何记录的TTL.即使您使用较少的TTL值更新记录,记录仍将保留在数据库中,直到最大TTL值为旧或新.更新的价值.


Car*_*ini 5

您可以执行“假更新”

INSERT INTO ttl_example (k, v) VALUES ('somekey', 'somevalue') USING TTL 60;
UPDATE ttl_example USING TTL 200 SET v = 'somevalue' WHERE k = 'somekey';
Run Code Online (Sandbox Code Playgroud)

执行第二条语句后,TTL 将为 200 秒。

HTH, 卡罗

  • 谢谢....它的工作原理。但是我的表有 20 多列,所以在进行假更新时,我必须首先获取所有数据,然后需要在更新查询中进行设置。由于实际表包含 10000+ 数据,这是一个非常耗时的过程。有没有更短的方法来做到这一点?我只需要一个简单的方法就可以完成一个查询。 (2认同)