如何在Cassandra sstable上设置TTL

如何在Cassandra sstable上设置TTL,cassandra,Cassandra,我们正在使用Cassandra 3.10和6节点集群 最近,我们注意到我们的数据量急剧增加,每个节点每天大约4GB。 我们希望实施更积极的保留策略,将压缩更改为1小时窗口大小的TWCS,并设置几天TTL,这可以通过表属性实现 由于ETL应该是一个缓慢的过程,以减轻Cassandra的工作负载,因此在TTL完成之前,它可能不会完成所有数据的提取,因此我想知道ETL过程是否有一种方法在完成提取后在整个SSTable上设置TTL=0?TTL=0被读取为墓碑。下一次压缩时,它将被写入墓碑或清除,具体取决

我们正在使用Cassandra 3.10和6节点集群

最近,我们注意到我们的数据量急剧增加,每个节点每天大约4GB。 我们希望实施更积极的保留策略,将压缩更改为1小时窗口大小的TWCS,并设置几天TTL,这可以通过表属性实现


由于ETL应该是一个缓慢的过程,以减轻Cassandra的工作负载,因此在TTL完成之前,它可能不会完成所有数据的提取,因此我想知道ETL过程是否有一种方法在完成提取后在整个SSTable上设置TTL=0?

TTL=0被读取为墓碑。下一次压缩时,它将被写入墓碑或清除,具体取决于您的gc_恩典。除了写墓碑的开销之外,删除或创建包含必要墓碑的sstables可能比重写所有现有sstables更容易。范围或点墓碑是否更有效取决于您的版本和模式


一个可能最简单的选择是一起实际使用不同的压缩策略,或者像这样的自定义策略。然后,您可以只清除已处理压缩的数据。这在很大程度上取决于您的模式,即标记已处理或未处理的内容有多困难。

您还应该在表和查询级别上设置TTL 0。一旦TTL过期,数据将转换为墓碑。根据gc_grace_seconds值,下一次压缩将清除所有墓碑。您也可以运行主要的压缩来清除墓碑,但基于压缩策略,在cassandra中不建议这样做。如果STC至少需要50%的磁盘才能正常运行压缩。

感谢您的回复,但根据it自述,它支持c*2.X