低磁盘空间的水平压缩策略

时间:2015-04-22 11:17:31

标签: cassandra cql cassandra-2.1

我们的Cassandra 1.1.1服务器采用Leveled Compaction Strategy。

系统正常工作,以便进行读取和删除操作。每半年我们删除大约一半的数据,同时有新数据进入。有时会发生磁盘使用率高达75%的情况,而我们知道真实数据占用了40-40%的其他空间被墓碑占用。为了避免磁盘溢出,我们通过将所有SSTables丢弃到0级来强制压缩我们的表。为此我们删除.json清单文件并重新启动Cassandra节点。 (gc_grace选项没有帮助,因为只有在填充级别后才开始压缩)

从Cassandra 2.0开始,清单文件已移至sstable文件本身:https://issues.apache.org/jira/browse/CASSANDRA-4872

我们正在考虑迁移到Cassandra 2.x,而我们担心我们不会再有这样的可能性来强制进行压平。

我的问题是:我们怎样才能实现我们的表具有磁盘空间限制,例如150GB? (超过限制时,它会自动触发压缩)。问题主要是关于Cassandra 2.x.虽然Cassandra 1.1.1的任何替代解决方案也是受欢迎的。

1 个答案:

答案 0 :(得分:0)

似乎我自己找到了答案。

  • 从2.x版开始有工具sstablelevelreset,它与清单文件的删除一样进行类似的级别重置。该工具位于Cassandra发行版的工具目录中,例如Apache的卡桑德拉-2.1.2 /工具/ bin中/ sstablelevelreset。

  • 从Cassandra 1.2(https://issues.apache.org/jira/browse/CASSANDRA-4234)开始,有针对Leveled Compaction Strategy的墓碑移除支持,它支持tombstone_threshold选项。它可以在表格中设置最大的墓碑比例。