gab*_*ssi 4 cassandra cassandra-3.0
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)
INSERT INTO temp.test_ttl (key,value) VALUES ('k1','v1');nodetool flush tempsstabledump mc-1-big-Data.db

sstabledump mc-1-big-Data.db
尚未创建墓碑nodetool compact tempsstabledump mc-2-big-Data.db
该墓碑创建(而不是由于gc_grace_seconds下降压实)该测试是使用Apache Cassandra 3.0.13进行的
从示例中,我得出结论,default_time_to_live至少在3.0.13版中,不需要逻辑删除是不正确的。但是,这是一个非常简单的测试,我将对其进行强制压缩,nodetool compact因此我可能不会重新创建default_time_to_live魔术发挥作用的场景。
但是,如果没有墓碑,C *将如何删除?为什么与插入每个TTL使用不同的场景?
小智 5
当您在我们的博客(The Last Pickle Blog)上回答这个问题时,您被提到的那篇文档迷住了我。我可能对此回答得太快,即使我写了“探索”这件事,甚至说我没有明确尝试。
探索的另一个线索是,如果合适的话,可以使用TTL作为默认值。在表级别使用'default_time_to_live'设置的TTL 在C * 3.0 +中根本不会产生任何逻辑删除。尚未经过我的测试,但我读到了这件事。
所以我上面的句子是错误的。基本上,默认值可以在查询级别由TTL覆盖,并且我不知道Cassandra如何在没有逻辑删除的情况下进行处理。
从示例中,我得出结论,
default_time_to_live至少在3.0.13版中,不需要逻辑删除是不正确的 。
另外,很高兴看到您不相信我或Datastax文档,而是自己尝试了。这绝对是正确的方法。
但是,如果没有墓碑,C *将如何删除?为什么与插入每个TTL使用不同的场景?
是的,正是这样,
干杯。
阿兰·罗德里格斯(Alain Rodriguez)-@arodream-alain@thelastpickle.com法国/西班牙
最后的泡菜-Apache Cassandra Consulting http://www.thelastpickle.com
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |