cassandra - 改变 Cassandra 表属性“default_time_to_live”的幕后会发生什么?
问题描述
我阅读了许多关于“default_time_to_live”属性的文档和博客,但我不确定如果我在 Cassandra 集群中具有 TB 数据的现有表上“更改”此属性,它会产生什么影响?这是否会影响通过“UPDATE”查询设置了 TTL 的现有数据,或者幕后究竟发生了什么。
此属性是否仅影响该表的元数据,并且仅适用于设置该属性后将被索引的行?
ALTER TABLE test WITH default_time_to_live = 86400;
解决方案
如果你还记得,SSTables 是不可变的——一旦写入磁盘,它们就永远不会再改变。
当您更改表的默认 TTL 时,新的过期时间将仅适用于新的 mutation。Cassandra 不会将新的 TTL 追溯应用于已写入磁盘的数据,因此现有的 SSTables 不会更改。
如果要更新现有数据的 TTL,则需要编写 ETL 应用程序(最好是 Spark 作业)。干杯!
推荐阅读
- laravel - Laravel 和 Redis - 尽管超时设置为 1800 秒,但作业在 10 分钟后被终止
- javascript - 如何将事件处理程序分配给自定义元素
- batch-file - CD 到 cmd 中的卷序列号 (VSN)
- pointers - Golang time.Tick 当其他 goroutine 新建一个结构并且该结构具有 []byte 切片时阻塞
- node.js - 需要帮助在 Node js 中编辑 MongoDB 文档
- c# - MongoDB 中序列化和反序列化结构的解决方法
- c++ - std::chrono::duration::max() 不适用于线程支持库
- php - PHP正则表达式来屏蔽多个电子邮件
- jquery - 如何在 bootstrap-datepicker 中设置修复日期?
- python - 可以选择在 Python 的 Twisted 中加载缓存 URL 的代理服务器