10MB 分区大小的想法从何而来?

Where does the idea of a 10MB partition size come from?

我正在 Cassandra 中对时间序列数据进行一些数据建模,我决定实施存储桶来调节我的分区大小并在我的集群上保持合理的分布。

我决定对分区大小进行分桶,使我的分区大小不超过 10MB,因为我看到许多资料都将此描述为理想的分区大小,但我找不到任何关于为什么选择 10MB 的信息.除此之外,我在 DataStax 或 Apache 中找不到任何提及此 10MB 软限制的内容。

我们的数据可以在很长一段时间内被请求,这意味着如果分区大小保持在 10MB,则需要很多分区来服务 1 个请求。我宁愿增加分区的大小,并减少为这些请求提供服务所需的分区。

10MB 分区大小的想法从何而来?它仍然相关吗?如果我的分区大小为 20MB 会有什么不好?甚至 50MB?

这么多地方都提到了 10MB,我觉得一定有它的道理。任何信息,将不胜感激。干杯。

我认为这些建议中的许多都是旧时的,当时对宽分区的支持不是很好——当我们读取数据时堆上的压力很大等等。自 Cassandra 3.0 以来情况大大改进,但仍建议将磁盘大小保持在 100Mb 以下。

例如,DataStax planning guide 在第 "Estimating partition size" 节中说:

a good rule of thumb is to keep the maximum number of rows below 100,000 items and the disk size under 100 MB

在 Cassandra 的最新版本中,我们可以超越此建议,但仍然不建议这样做,尽管它在很大程度上取决于访问模式。您可以在 following blog post, and this video.

中找到更多信息

我见过有 60+Gb 分区的用户 - 系统仍然可以工作,但数据分布不理想,因此节点变得 "hot",性能可能会受到影响。