如何对 cassandra 进行碎片整理 table

how to perform defragmentation on cassandra table

我正在使用 Python 和一些 NoSql 数据库来创建文件存储(主要是因为内置复制),我尝试使用 MongoDB 并且它可以工作但是由于 "Write Greedy" MongoDB 的性质我搬到了 cassandra 并实现了同样的事情。在它工作的同时,我想知道(向我指出可以的文档)如何对 cassandra 中的数据进行碎片整理。我将举例说明这一点,假设我上传了 200 MB 的文件,然后是 20 MB 的文件。现在 cassandra 中的数据大小约为 220MB。如果我去删除 200MB 的文件,那么我也会看到数据大小约为 200MB,因此 space 不会恢复。在 mongoDB 中有一个获取命令(对新文件重新使用相同的 space)我想知道在 cassandra 中如何实现相同的。我感到困惑 b/w 压缩和压缩。

为了存储数据,我将文件分成了一部分,然后在 table 中存储为 "blob"。

Cassandra 使用名为 compaction.

的进程清理已删除和过期的数据

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

这可能无法完全解决问题,因为 cassandra 有一个名为 'gc_grace_seconds' 的配置 属性,它可以防止标记为已删除(带有逻辑删除)的数据在 gc_grace_seconds 通过之前被删除。默认值为 10 天,但您可以将其配置为较小的值,甚至将其设为 0 以一起禁用逻辑删除。