假设我在second-1处插入了一列,而在second-2处插入了另一列。表的默认TTL设置为10秒,例如:
问题1 :10秒后数据1和数据2将被删除,10秒后数据1将被删除,11秒后数据2被删除(因为它插入第2秒) ?
问题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处的页面
他们说"整张桌子"这让我很困惑。为表格设置TTL
CQL表定义支持default_time_to_live属性, 它将特定的TTL应用于表中的每一列。之后 default_time_to_live TTL值已经超过,Cassandra墓碑 整个桌子。使用此方法将此默认TTL应用于CQL中的表 CREATE TABLE或ALTER TABLE
答案 0 :(得分:2)
表级别的TTL与值级别的TTL没有任何不同:它指定每行的默认 TTL时间。
TTL指定必须在多长时间后将值视为过时并因此删除。参考点是INSERT / UPDATE时间戳,因此如果您在09:53:01插入/更新行:
您可以通过在查询中指定USING TTL X
子句来覆盖默认 TTL时间,其中X是您的新TTl值。
请注意,明智地使用TTL 而不是会导致墓碑问题。并且还要注意TTL的使用有一些怪癖。有关详细信息,请查看this最近的答案。
答案 1 :(得分:1)
问题1答案:数据1将在10之后删除,数据2将在11 秒后删除
问题2答案: Cassandra使用表格的ttl插入每一列,因此每列都将在插入时间+ ttl到期。