我正在为我的应用程序使用Cassandra数据库,并且我正在为每个请求设置一个TTL。为了测试目的,我使用了另一个数据库(相同的模式,但在本地),并且我愿意保留数据,我想知道是否有一种方法可以覆盖ttl,我不知道,方法是在创建表或类似的东西时将其设置为默认值。
谢谢。
发布于 2017-03-24 12:41:51
为特定列设置TTL 使用CQL为数据设置TTL。 若要更改特定列的TTL,必须使用新的TTL重新插入数据。Cassandra使用新的TTL在列的上方,如果存在旧的TTL,则将旧值替换为旧的TTL。 为表设置TTL CQL表定义支持default_time_to_live属性,该属性将特定的TTL应用于表中的每一列。在default_time_to_live TTL值被超过之后,卡桑德拉墓碑整张表。使用CREATE或ALTER将此默认TTL应用于CQL中的表。
如果表的TTL值在本地环境中不等于0,则使用
ALTER TABLE table_name
WITH default_time_to_live= 0
这将更改表级别TTL。
如果设置了列级TTL,请更改代码以插入0或更高的TTL记录。
发布于 2017-03-24 11:05:15
我不认为它是朝这个方向工作的;因为您是在CQL中指定TTL,而不是在表级别。
http://cassandra.apache.org/doc/latest/cql/dml.html
如果表具有default_time_to_live,则TTL为0将删除插入或更新的值的TTL。TTL为null相当于插入TTL为0。
CQL重写默认设置。如果您在表级别有9999 TTL,并在CQL中使用50,则使用50。
请参阅这里- http://www.mail-archive.com/user@cassandra.apache.org/msg50873.html
https://stackoverflow.com/questions/42997099
复制相似问题