gpt4 book ai didi

cassandra - 在 Cassandra 中存储二进制 blob

转载 作者:行者123 更新时间:2023-12-02 01:42:43 25 4
gpt4 key购买 nike

我正在构建一个简单的 HTTP 服务,用于存储任意二进制对象。该服务由 Cassandra 提供支持。它是亚马逊 S3 的简化版本。系统必须承受繁重的写入负载,并且在写入和读取路径上应该具有高可用性。

存储的数据是不可变的。可以删除,但不能更新。因此,数据不一致不是问题。数据存储必须能够有效地使旧数据过期。

该服务使用 Netflix 的 Astyanax图书馆,它提供了一个recipe用于在 Cassandra 中存储(大型)二进制对象。

我看到了解决该问题的两种解决方案,它们各有利弊。对我来说,很难估计哪种方式更适合 Cassandra。

带 TTL 的单表

Astyanax 自动将大对象分成小块并将它们存储到一个表中。为每个 blob 分配一个 TTL,使其在一段时间后过期。当 TTL 过期时,压缩运行会删除 blob。

此解决方案有效且实现起来非常简单。我开始使用 SizeTieredCompactionStrategy,但我认为,在处理 TTL 数据时,DateTieredCompactionStrategy 可能是更好的选择。

我主要担心的是:Cassandra 的压缩能否跟上?有没有人经历过类似的用例?

按时间分片

另一种方法是按时间对数据进行分片。我可以为每一天创建一个表并将 block 存储在该表中。在这种情况下,我可以删除整个表以删除过期数据。

此解决方案在实现过程中需要付出更多努力,但可以简化并可能加快过期数据的删除速度。

Cassandra 在删除表格方面的表现如何?

最佳答案

您的场景的正确选项是 DateTieredCompactionStrategy 和 Assign TTL to each blob。

引用: http://www.datastax.com/dev/blog/datetieredcompactionstrategy

关于cassandra - 在 Cassandra 中存储二进制 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com