Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 在一个节点或所有节点中调用主压缩_Cassandra - Fatal编程技术网

Cassandra 在一个节点或所有节点中调用主压缩

Cassandra 在一个节点或所有节点中调用主压缩,cassandra,Cassandra,大家好。我还是卡桑德拉的不速之客,所以请容忍我 我的问题是,当我运行主压缩时,我是必须在所有节点中运行它,还是只需要在一个节点中运行它,这将在所有剩余节点中触发主压缩?如果使用nodetool compact它将仅在运行nodetool的cassandra节点上执行主压缩。我将避免在生产中一次对所有节点进行大型压缩,因为压缩会影响性能。您还应该有充分的理由进行大规模压缩,因为这是一项昂贵的操作,而且在大多数用例中都不会这样做。您的数据模型听起来非常像队列,这是众所周知的cassandra反模式

大家好。我还是卡桑德拉的不速之客,所以请容忍我


我的问题是,当我运行主压缩时,我是必须在所有节点中运行它,还是只需要在一个节点中运行它,这将在所有剩余节点中触发主压缩?

如果使用
nodetool compact
它将仅在运行nodetool的cassandra节点上执行主压缩。我将避免在生产中一次对所有节点进行大型压缩,因为压缩会影响性能。您还应该有充分的理由进行大规模压缩,因为这是一项昂贵的操作,而且在大多数用例中都不会这样做。

您的数据模型听起来非常像队列,这是众所周知的cassandra反模式


一般来说,如果你想让你的数据一次只活5分钟,强迫大的压缩可能是你能做的最差的事情-理想的是你想使用TTLS,或者可能降低你的GCGS非常低,考虑使用日期分层压缩而不是大小分层或水平化,因此,可以快速高效地删除整个SSTABLE。

我们的用例是使用cassandra存储数据,我们使用这些数据来验证我们处理的事务。我们的应用程序只需要不超过5分钟的数据。我们在验证完成后立即删除该数据。我们的用例会产生很多墓碑,这就是为什么我们考虑安排常规的主要压缩。您是否考虑过使用TTLs()并将gc_grace_seconds设置为0,而不是显式删除您的数据?通过这种方式,您将没有墓碑,过期的数据将更快地消失(但仍会保留一段时间)。另一个需要研究的是最近引入的日期分层压缩策略(),它根据突变的创建时间将突变保存在一起。