Cassandra允许您为整个表设置default_time_to_live属性。标记有常规TTL的列和行如上所述进行处理;但是当记录超过表级TTL时,Cassandra会立即将其删除,而不会导致逻辑删除或压缩。
这里也回答
如果表上具有default_time_to_live,则超过此时间限制的行将立即删除,而不会写入逻辑删除。
并在LastPickle的帖子中有关删除和墓碑中进行了评论
探索的另一个线索是,如果合适的话,可以使用TTL作为默认值。在表级别使用'default_time_to_live'设置的TTL 在C * 3.0 +中根本不会产生任何逻辑删除。尚未经过我的测试,但我读到了这件事。
我已经做了我可以想象的最简单的测试LeveledCompactionStrategy:
CREATE KEYSPACE IF NOT EXISTS temp WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};
CREATE TABLE IF NOT EXISTS temp.test_ttl (
key text,
value text,
PRIMARY KEY (key)
) WITH compaction = { 'class': 'LeveledCompactionStrategy'}
AND default_time_to_live = 180;
Run Code Online (Sandbox Code Playgroud)