目前,我们拥有每个超过100千兆字节的表。有人告诉我,如果我们有许多小桌子,这将更容易处理。想法是Cassandra在执行压缩和压缩时需要大约等于表大小的可用空间量。如果使用较小的表,则在运行这些任务时,每个节点上所需的可用空间百分比较小。
如果我的所有访问权限仅在大表中通过密钥进行,那么在我的数据库访问代码前面放置一些一致的哈希逻辑以确定哪个表包含哪个键并不困难。
Cassandra在软件中使用许多小表是否有任何优势?通过更改群集的配置可以获得相同的优势吗?
答案 0 :(得分:1)
是的,原则上,您可以通过将数据拆分为多个表或键空间来降低可用磁盘需求。
更好的选择可能是使用替代compaction strategy。默认的 Sized Tiered (STCS)需要保留高达50%的可用磁盘空间。读取繁重的工作负载可能能够使用 Level Tiered (LTCS),只需要10%的可用磁盘空间,而时间序列数据可以使用 Date Tiered (DTCS),其中可用磁盘空间通过设置窗口大小可以调整要求。
在使用LTCS或DTCS之前,必须确保您的工作负载符合压缩策略。如果配置不正确或在错误的工作负载上使用,这两者都会产生严重的性能风险:写入繁重的工作负载与LTCS的性能不佳。尝试在single node上测试新的压缩策略,并查看效果指标,以验证策略是否符合性能预期。