如何在cassandra表上执行碎片整理

时间:2015-01-02 03:52:25

标签: python cassandra defragmentation

我正在玩Python和一些NoSql DB来创建文件存储(主要是因为内置复制),我尝试使用MongoDB及其工作,但由于"写贪婪" MongoDB的本质我转移到cassandra并实现了同样的事情。虽然它的工作,我想知道(指向哪些文档会很好)如何对cassandra中的数据进行碎片整理。我将用例子解释这个,比如我上传200 MB文件,然后上传20 MB文件。现在cassandra的数据大小约为220MB。如果我去删除200MB文件,那么我也看到数据大小约为200MB,因此无法获得空间。在mongoDB中有一个获取命令(重新使用相同的空间用于新文件)我想知道在cassandra中可以实现的相同。我很困惑b / w compress&压实。

为了存储数据,我正在分割文件,然后存储为" blob"在表格中。

1 个答案:

答案 0 :(得分:0)

Cassandra使用名为compaction的过程清除已删除和过期的数据。

虽然您可以使用nodetool compact强制自己进行压缩,但我不建议这样做,因为最好调整压缩并让它在后台发生。

由于cassandra有一个名为'gc_grace_seconds'的配置属性,可以防止被删除的数据(带有墓碑)被删除,直到gc_grace_seconds通过,这可能无法完全解决问题。默认值为10天,但您可以将其配置为较小的值,或者将其设置为0以一起禁用逻辑删除。