假设我在 second-1 处插入一列,在 second-2 处插入另一列。表的默认 TTL 设置为 10 秒,例如:

问题 1 : 数据 1 和数据 2 将在 10 秒后删除还是数据 1 将在 10 秒后删除,数据 2 将在 11 秒后删除(因为它是在第二秒中插入的)?

问题 2 :是否可以在表级别设置 TTL,使表中的每个条目都以 FIFO 方式基于 TTL 到期? (data-1 将在 second-10 和 data-2 在 second-11 到期),在为每个数据点插入时没有指定 TTL? (应该能够在表级别指定吗?)

谢谢您的帮助 :)

编辑 :

https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html 的页面说



他们说“整张 table ”这让我很困惑。

最佳答案

表级别的 TTL 与值级别的 TTL 没有任何不同:它指定了每一行的默认 TTL 时间。

TTL 指定在多少秒后这些值必须被视为过时并因此被删除。引用点是 INSERT/UPDATE 时间戳,所以如果你在 09:53:01 插入/更新一行:

  • 的 TTL 为 10 秒,它将在 09:53:11 过期
  • 的 TTL 为 15 秒,它将在 09:53:16 过期
  • 的 TTL 为 0 秒,它永远不会过期

  • 您可以通过在查询中指定 USING TTL X 子句来覆盖默认 TTL 时间,其中 X 是您的新 TTl 值。

    请注意,明智地使用 TTL 而不是 会导致墓碑问题。还要注意,TTL 用法有一些怪癖。查看 this 最近的答案以获取更多详细信息。

    关于用于表行为的 cassandra TTL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41542865/

    10-16 02:43