【问题标题】:What happens behind the scenes on altering Cassandra table property "default_time_to_live"?改变 Cassandra 表属性“default_time_to_live”的幕后会发生什么?
【发布时间】:2021-07-09 20:31:28
【问题描述】:
我阅读了许多关于“default_time_to_live”属性的文档和博客,但我不确定如果我在 Cassandra 集群中具有 TB 数据的现有表上“更改”此属性,它会产生什么影响?这是否会影响通过“UPDATE”查询设置了 TTL 的现有数据,或者幕后究竟发生了什么。
此属性是否仅影响该表的元数据,并且仅适用于设置该属性后将被索引的行?
ALTER TABLE test WITH default_time_to_live = 86400;
【问题讨论】:
标签:
cassandra
cassandra-3.0
【解决方案1】:
如果您还记得,SSTable 是不可变的——一旦写入磁盘,它们就再也不会改变了。
当您更改表的默认 TTL 时,新的过期时间将仅适用于 新的突变。 Cassandra 不会对已写入磁盘的数据追溯应用新的 TTL,因此现有的 SSTables 不会改变。
如果要更新现有数据的 TTL,则需要编写 ETL 应用程序(最好是 Spark 作业)。干杯!