这是另一个问题,我想它应该由流星团队回答,因为到目前为止我找不到直接的答案。
“..我们决定将MongoDB用于我们正在创建的SaaS产品。每个注册的公司都有自己的网址(mycompany.domain.com)和他们自己的私人用户,项目等......由于我们正在使用NoSQL解决方案,并且不必像我们使用MySQL那样管理将模式更新推送到每个数据库,我想知道是否有一个包含所有数据的大型数据库,或者有一个更好每个客户的数据库......“
那么,我可以使用meteor aproach(使用一个流星项目/服务器): 1)每个公司的不同URL 2)每个公司和特定公司用户的不同数据库(在同一个monodb服务器中)。
答案 0 :(得分:5)
如果你看看meteor自己的托管,他们会使用MongoHQ的mongodb服务器。您可以将多个流星服务器与单个mongodb服务器和多个数据库一起使用。
我认为它更多地取决于您的应用程序设计,Meteor可以使用任何一种设计。
1)您可以使用发布函数为每个客户端提供来自一个巨大数据库的他/她自己的记录,使用一种方法将子域http主机放入发布函数中,这样它只会为该集合提供数据。
2)在一台服务器上使用连接到自己的mongodb数据库的单独流星实例,并使用某种代理将它们服务到子域。您可以使用您想要的任何数据推送每个数据,甚至可能是单独的应用程序集。
这真的取决于你正在建设什么。如果你想要只需要更新一组数据,那么每个人都可以更新1),所以如果你的用例需要这个,那么它可能是一个更好的选择。
使用单独的流星实例的好处主要是定制。我很难用你给出的细节来得到你想要的东西,所以生病的简短:如果你想让每个客户的能力大不相同,请使用2),否则使用1)
如果你看一下Meteor.com的主机,我认为每个部署都有自己的数据库,主要原因是:定制,每个人的部署可能会完全不同。
更新:
截至2014年3月,有一个第三方atmosphere package meteor-dbproxy允许您在后端使用多个mongodb服务器(以及单独的oplog集成端点),从而允许您使用db级沙盒多租户。
答案 1 :(得分:0)
从MongoDB的角度来看,您可以为每个客户端创建一个数据库。当前稳定的MongoDB版本2.2具有数据库级别锁定功能,与先前版本的大型全局锁定相反。
这样,如果您的某个客户正在锤击系统,它们不会影响您拥有全局锁定的其他客户端。