我不能真正理解 MongoDB 分片集群中的片键概念,因为我刚刚开始学习 MongoDB。
引用 MongoDB 文档:
块是分配给特定分片的连续范围的分片键值。当它们增长到超过配置的块大小时,mongos 将块分成两个块。
似乎卡盘大小与特定分片有关,而不是与集群本身有关。我对吗?
谈到分片键的基数:
考虑使用状态字段作为分片键:
状态键的值保存给定地址文档的美国状态。该字段的基数较低,因为在 state 字段中具有相同值的所有文档必须驻留在同一个 shard 上,即使特定状态的块超过了最大块大小。
由于 state 字段的可能值数量有限,MongoDB 可能会在少量固定块之间不均匀地分布数据。
我的问题是分片键与块大小的关系。
在我看来,只有两个分片服务器,不可能分发数据,因为state 字段中的相同值必须驻留在同一个 shard 上。对于亚利桑那州、印第安纳州和缅因州等三个州的文档,数据是如何分布在两个分片中的?