按集合

时间:2015-07-26 04:05:11

标签: mongodb sharding

我有一个应用程序在MongoDB中为每个用户创建一个集合,其中一个集合最多有100,000个文档(少数“大”用户是这样的,而许多“小”用户只有少于10,000个文档) 。现在用户数量增长了,我想对我的数据库进行分片。是否可以说“将此集合(因此此用户)放在该分片上以及该分片上的该集合,但不要进一步对集合中的文档进行分片”,是否可以自动执行此操作?

编辑:我现在已经了解了MongoDB的标准分片设计,但是我的应用程序是从一个小应用程序扩展到单个人使用的,其中创建了一个nedb数据存储区用户。添加多用户支持后,为每个用户创建一个nedb数据存储区是一个明显的选择,因此我的应用程序的许多部分都可以保持不变。当我将它迁移到MongoDB时,因为一个nedb数据存储区相当于MongoDB集合,所以我每个用户使用一个集合。鉴于目前的情况,我想知道解决当前性能问题的最快方式(〜=我的应用程序和整体配置的最小变化)。

1 个答案:

答案 0 :(得分:1)

分片在集合上完成,分片集合的分解方式基于分片(其中您的集合中的一个或多个对象元素构成了键)。

重新考虑您的文档设计可能会更好。您可以一个集合中的所有用户,然后使用用户ID 作为分片键。这会将每个用户整体分解并自动完成。

有关分片的详细信息,请参阅Mongodb的Sharding documentation