2014-03-12 65 views
0

我们开发的应用程序是一个数据处理应用程序,在这个过程中,会创建多个集合。因此,如果我们使用所有2GB的NS提供的最大限制数量,最高限制为300万个集合的可能性很大。 我可以在不同的MongoDB实例中分发不同的集合并使用分片来管理它们吗?Mongodb:使用分片的分布集合

+0

300万个收藏?我在这里闻到一只老鼠。 –

+0

@SergioTulentsev:我确实接受300万个藏品是一个坏主意。但是,我们正在处理时间序列数据,这些数据从不同的数据源中记录下来并随时间累积起来。我们尝试不将数据分发到不同的集合中,并使用唯一键来查询它们。但是,这在性能方面证明是一个婊子,因为每秒都在同一组集合上有多个io操作。我们将它们分发到不同的集合中,并且性能以倍数上升!你能否建议我解决这个问题? – codejammer

回答

1

我想你的问题是关于如何使用分片在节点上分发集合? Sharding实际上是一种满足数据增长需求的方法而不是集合数量。这意味着你将你的集合分割成多个分片。

要解决您遇到的问题,您可以在自己生活的同一台服务器(不是副本集)上运行多个mongod实例。您可以将您的集合分发到这些实例中。但是您需要坚持哪个集合托管在哪个进程上。您将不得不存储每个mongod进程的pid

+0

在同一台机器上对多个mongod进行共位 - 糟糕的主意。 –

+0

@SergioTulentsev我会说,300万个收藏本身就是一个坏主意。 – 2014-03-12 07:45:37

+0

@naimdjon:在这种情况下,我应该维护'mongod'进程ID并在我想查询数据时继续搜索它们吗? – codejammer