MongoDB群集和100,000个上限集合

时间:2011-10-31 21:22:31

标签: mongodb cluster-computing

MongoDB集群如何跨节点分配封顶集合以平衡负载?我打算在基于MongoDB的CMS中使用Capped Collection来评论每个帖子。让我们假设我们有100,000个帖子,因此100,000个上限集合存储每个帖子的评论。这些Capped Collections是否可以在集群中均匀分布以实现读写可伸缩性?

我不想破坏上限集合。我希望在集群中均匀分布所有上限集合,以实现读写可伸缩性。

假设我们有5台机器。当我们创建新集合时,我需要在不同的机器/节点上创建它们,并在添加新机器时重新分配它们。

2 个答案:

答案 0 :(得分:1)

显然,mongodb尚未实现:Issue

引自similar question

  

但您可以在不同的分片上创建多个上限集合   增加写吞吐量;但是,您必须运行多个查询   访问您的所有数据。

答案 1 :(得分:1)

1)创建集合(加盖或不加盖)时,它会在数据库的主分片上设置。解决方案是为每个数据库设置一个集合,以便mongo在集群中平衡数据库。平衡规则不明确,但主要取决于每个碎片的当前负荷。

2)相信我,你应该为你的所有帖子使用一个大集合,并以巧妙的方式对它进行分片。它将确保整个群集中数据的高效和自动平衡。 超过上限的集合并不是真正节省空间的,因为它会预先为所有集合分配所有空间(这意味着你将浪费大量的空间) 除非你有充分的理由去封顶,否则你最好尝试分片。

一条建议:在分片键中使用'postId'字段,它可能是性能最佳的。