1

我正在使用 Python 和一些 NoSql DB 来创建文件存储(主要是因为内置复制),我尝试使用 MongoDB 及其工作,但由于 MongoDB 的“写贪婪”性质,我搬到了 cassandra 并实现了相同的事物。虽然它工作,我想知道(指向我会很好的文档)如何对 cassandra 中的数据进行碎片整理。我将举例说明这一点,假设我上传了 200 MB 的文件,然后上传了 20 MB 的文件。现在 cassandra 中的数据大小约为 220MB。如果我去删除 200MB 的文件,那么我也会看到数据大小约为 200MB,因此不会获得空间。在 mongoDB 中有一个命令可以获取(重新使用相同的空间来存储新文件)我想知道如何在 cassandra 中实现相同的功能。我对黑白压缩和压缩感到困惑。

为了存储数据,我将部分拆分文件,然后在表中存储为“blob”。

4

1 回答 1

0

Cassandra 使用称为压缩的过程清理已删除和过期的数据。

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

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

于 2015-01-02T04:34:51.143 回答