2011-11-29 169 views

回答

2

提供指导,人们必须知道更多关于什么你想完全实现。

但是,我会排除选项2(多个集合),因为我没有看到这种方法的任何优点:您必须在运行时确定集合名称,这对于更复杂编写你的查询,你可以拥有的收藏数量有一个硬性的限制(大约1.5M收藏与2GB namespace file

选项1可以帮助隔离客户端,并可能提高安全性,但仍然存在编程错误的风险在选择数据库。然而,隔离代码很简单。

这两个选项都有不利于所有集合查询的缺点。但是,您总是希望能够访问基本上在所有客户端共享的一些集合(例如日志,统计等),因此您有额外的负担来分离这些集合。

这就是我为什么要通常去选择1

1

我建议从一个DB和一个收集开始。它通常更简单地管理一个数据库。将来,如果您需要创建单独的数据库(以加速某些客户端),则可以将该客户端的数据dump并将其放入单独的数据库服务器(或者分开收集)。当你设计你的应用程序的体系结构时,请记住这个功能。所以,我的意见是选项1。从另一个角度来看,您可以通过分片和复制来扩展一个集合。

系统必须是可扩展的,并且必须是易于部署

您的数据库将是可扩展的,只是因为你正在使用MongoDB的,这是设计规模。您可以轻松地部署数据库,因为它是无模式的。通常,您可能需要将一些数据从一台服务器简单复制到另一台服务器。有很多方法可以做到这一点:copy collection,数据import/export,copy database