在 Cassandra 中使用许多小表是否会降低可用磁盘 space 的要求?

Does using many small tables in Cassandra lower the free disk space requirements?

目前,我们有 table 个,每个都超过 100 GB。有人告诉我,如果我们有很多小 table,这会更容易处理。这个想法是 Cassandra 在执行压缩和压缩时需要大约等于 table 大小的可用 space 量。如果使用更小的 tables,那么当这些任务是 运行.

时,每个节点上所需的空闲百分比 space 会更小

如果我的所有访问仅在大型 table 中通过密钥进行,那么在我的数据库访问代码前面放置一些一致的哈希逻辑以确定哪些 table 包含什么钥匙。

Cassandra 在软件中使用许多小 table 有什么优势吗?是否可以通过更改集群的配置来实现相同的优势?

是的,原则上,您可以通过将数据拆分到多个表或键space中来降低可用磁盘要求。

更好的选择可能是使用替代方案 compaction strategy。默认 Sized Tiered (STCS),需要预留最多 50% 的可用磁盘 space。读取繁重的工作负载可能可以使用 Level Tiered (LTCS),它只需要 10% 的可用磁盘 space,时间序列数据可以使用 Date Tiered (DTCS) 其中可用磁盘 space 要求可通过设置 window 大小进行调整。

在使用 LTCS 或 DTCS 之前,您必须确保您的工作负载符合压缩策略。如果配置不正确或在错误的工作负载上使用,这两者都会带来严重的性能风险:写入繁重的工作负载在 LTCS 上表现不佳。尝试在 single node 上测试新的压缩策略并查看性能指标以验证该策略是否满足性能预期。