我正在为我的应用程序使用Cassandra数据库,并且我正在为每个请求设置一个TTL。出于测试目的,我正在使用另一个数据库(相同的模式,但在本地),我愿意保留数据,我想知道是否有一种方法来覆盖ttl,我不知道,通过将它设置为默认值,而创建表或类似的东西。覆盖TTL Cassandra
谢谢。
我正在为我的应用程序使用Cassandra数据库,并且我正在为每个请求设置一个TTL。出于测试目的,我正在使用另一个数据库(相同的模式,但在本地),我愿意保留数据,我想知道是否有一种方法来覆盖ttl,我不知道,通过将它设置为默认值,而创建表或类似的东西。覆盖TTL Cassandra
谢谢。
设置一个TTL为特定的列
使用CQL来设置数据的TTL。
要更改特定列的TTL,必须用新的TTL重新插入数据 。 Cassandra用新的TTL插入列, 用旧的TTL替换旧值(如果存在)。
设置一个TTL为表
的CQL表定义支持default_time_to_live属性, 施加一个特定的TTL于表中的每一列。在 default_time_to_live的TTL值已经超过,卡桑德拉墓碑 整个表。使用 CREATE TABLE或ALTER TABLE将此默认TTL应用于CQL中的表。
如果你的表有使用
ALTER TABLE table_name
WITH default_time_to_live= 0
TTL值在本地环境不等于0,这将改变表TTL电平。
如果设置列级别TTL,则更改代码以将记录插入0或更高的TTL。
我不认为它在这个方向工作;因为你在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/[email protected]/msg50873.html
例如,在我创建表,如果我默认TTL设置为9999和我使用的2 TTL哪一个将应用于插入数据? –
虽然插入数据ttl应用于列级别,所以在该列将被删除后...即,如果所有数据插入的ttl为2,它将被应用 –