【问题标题】:Why might ZSTD not be supported as the compression wire protocol in Cassandra 4.x?为什么在 Cassandra 4.x 中不支持 ZSTD 作为压缩线协议?
【发布时间】:2021-07-22 07:05:23
【问题描述】:

在挖掘 Cassandra 资源时,我注意到不支持 ZSTD 作为 Cassandra 上的有线协议。唯一的选择是 LZ4 和 Snappy。

https://github.com/apache/cassandra/blob/cassandra-4.0-rc1/src/java/org/apache/cassandra/transport/Compressor.java#L39

https://github.com/apache/cassandra/blob/cassandra-4.0-rc1/src/java/org/apache/cassandra/transport/Compressor.java#L127

即使在即将发布的 Cassandra 4.x 版本中也不支持 ZSTD。然而,4.x https://github.com/apache/cassandra/blob/cassandra-4.0-rc1/src/java/org/apache/cassandra/io/compress/ZstdCompressor.java 中提供了基于 ZSTD 的存储压缩

虽然 Cassandra 是可插拔的,而且制作补丁以添加 ZSTD 支持似乎相当简单 - 我不知道为什么会省略这样的内容。

所有与 Cassandra 相关的东西似乎都有相当多的部落知识和好奇心。

【问题讨论】:

  • @AlexOtt 如果你知道的话。

标签: cassandra


【解决方案1】:

总体折衷可能是因为使用 ZSTD 进行压缩、传输压缩数据然后解压缩的总时间要高于未压缩传输的总时间。然而,对于存储,较低的空间需求证明了开销是合理的。

使用诸如https://quixdb.github.io/squash-benchmark/#transfer-plus-processing 之类的工具,您可以运行数字并自己探索这些数字,选择各种处理器和数据集。

例如,它向我展示了 lz4 和 snappy 都比不压缩更快,但是 zstd 压缩的更高开销并没有被它的快速解压缩和更小的传输与完全不压缩相比所抵消。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多