看完 10Gen 手册后,我似乎可以理解分片在以下场景中的工作原理。我将使用带有 userid、lastupdatetime、data 的文档作为示例:
块包含分片 ID 的有序列表。因此,如果我的分片 id 是 userid,我希望 chunk1 包含一个 id 列表:user1...user999(最多 64mb 限制),而 chunk2 将保存 user1000...user1999。那是对的吗?
在前面的例子中,假设 chunk1 在 shard1 上,而 chunk2 在 shard2 上。如果 user1(在 shard1 上)有很多文档,而所有其他用户都有 1-2 个文档,那么 shard1 的磁盘使用量会比 shard 2 的磁盘使用量大很多。如果这是正确的,那么在这种情况下,MongoDB 的缓解措施是什么?
复合分片键如何在块内排序?例如,如果复合分片键是 userid+lastupdatetime,那么假设以下内容是否安全(假设 user1 有很多文档): chunk1 包含值列表:user1, 10:00:00;user1, 10:01:00...;user1,14:04:11..(最高 64mb 限制)和 chunk2 将持有 user1,14:05:33;user2,9:00:00...user34, 19:00:00;..
那是对的吗?