分片对小集合有效吗?

Joã*_*imo 12 mongodb

如果我有大量的集合,看起来数据库分片很棒。如果我有很多相当大的集合怎么办?假设对于 1 个包含 100 000 000 个文档(不是很大的评论)的集合,分片是有效的。它对 10 000 个集合(每个集合包含 10 000 个文档)是否也有效?

(我认为这个问题对于面向表的数据库仍然有效,如果你用表替换集合,用行替换文档。如果可能,我想知道理论答案以及特定 MongoDB 场景中的答案,如果与理论不同回答。)

小智 5

它对 10 000 个集合(每个集合包含 10 000 个文档)是否也有效?

大多数人都有“单一大集合”的问题,因此分片显然有助于减少平衡这些数据的麻烦。

但是,当您有 10 000 个小集合时,您头疼的可能不是“平衡数据”。有了这么多小集合,您的问题可能与跟踪这些集合有关。根据您的文档大小,您甚至可能不会打破实际发生分片的下限。

对于非常小的集合,您可以使用鲜为人知的movePrimary 命令来管理数据的位置。

当然,从另一个角度来看,为什么你有 10k 个集合?一个集合不需要同类对象,并且有 10k 个集合,其中大多数必须生成。很有可能在同一个集合中存储不同“类型”的数据,减少集合的数量,然后将类型作为分片键的一部分。