Meteor -MongoDB - 用于SaaS产品的单个数据库或多个数据库

时间:2013-02-21 13:11:50

标签: mongodb meteor

这是另一个问题,我想它应该由流星团队回答,因为到目前为止我找不到直接的答案。

“..我们决定将MongoDB用于我们正在创建的SaaS产品。每个注册的公司都有自己的网址(mycompany.domain.com)和他们自己的私人用户,项目等......由于我们正在使用NoSQL解决方案,并且不必像我们使用MySQL那样管理将模式更新推送到每个数据库,我想知道是否有一个包含所有数据的大型数据库,或者有一个更好每个客户的数据库......“

那么,我可以使用meteor aproach(使用一个流星项目/服务器): 1)每个公司的不同URL 2)每个公司和特定公司用户的不同数据库(在同一个monodb服务器中)。

2 个答案:

答案 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具有数据库级别锁定功能,与先前版本的大型全局锁定相反。

这样,如果您的某个客户正在锤击系统,它们不会影响您拥有全局锁定的其他客户端。