我正在为我的应用程序使用Cassandra数据库,我正在为每个请求设置一个TTL。出于测试目的,我正在使用另一个数据库(相同的模式,但在本地),我愿意保留数据,我想知道是否有一种方法来覆盖ttl,我不知道,通过在创建时将其设置为默认值桌子或类似的东西。
谢谢。
答案 0 :(得分:0)
我认为它不适合这个方向;因为您在CQL中指定TTL而不是在表级别。
http://cassandra.apache.org/doc/latest/cql/dml.html
如果表具有default_time_to_live,则TTL为0将删除插入或更新值的TTL。 TTL为null相当于插入TTL为0。
CQL TTL会覆盖默认值。如果你在表级有9999 TTL,在CQL中使用50;将使用50。
请参阅此处 - http://www.mail-archive.com/user@cassandra.apache.org/msg50873.html
答案 1 :(得分:0)
为特定列设置TTL
使用CQL设置数据的TTL。
要更改特定列的TTL,必须重新插入数据 用新的TTL。 Cassandra用新的TTL插入了该列, 用旧TTL替换旧值(如果存在)。
为表格设置TTL
CQL表定义支持default_time_to_live属性, 它将特定的TTL应用于表中的每一列。之后 default_time_to_live TTL值已经超过,Cassandra墓碑 整个桌子。使用此方法将此默认TTL应用于CQL中的表 CREATE TABLE或ALTER TABLE。
如果您的表在本地环境中使用的TTL值不等于0
ALTER TABLE table_name
WITH default_time_to_live= 0
这会改变表级TTL。
如果设置了列级别TTL,则更改代码以插入带有0或更高TTL的记录。