2017-03-24 46 views
0

我正在为我的应用程序使用Cassandra数据库,并且我正在为每个请求设置一个TTL。出于测试目的,我正在使用另一个数据库(相同的模式,但在本地),我愿意保留数据,我想知道是否有一种方法来覆盖ttl,我不知道,通过将它设置为默认值,而创建表或类似的东西。覆盖TTL Cassandra

谢谢。

回答

0

设置一个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。

Details

+0

例如,在我创建表,如果我默认TTL设置为9999和我使用的2 TTL哪一个将应用于插入数据? –

+0

虽然插入数据ttl应用于列级别,所以在该列将被删除后...即,如果所有数据插入的ttl为2,它将被应用 –