2013-02-21 50 views
0

这是从另一个问题胸围我认为它应该由流星团队回答,因为我找不到直截了当的答案。流星-MongoDB - 单一数据库或多个数据库的SaaS产品

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

那样,我也有流星的形式给出了(有一个流星项目/服务器): 1)不同的URL为每个公司 2)不同的数据库(在同一monodb服务器)的每个公司和该特定公司用户。

回答

5

如果你看看流星自己的主机,他们使用MongoHQ的mongodb服务器。您可以将多个meteor服务器与单个mongodb服务器和多个数据库一起使用。

我认为这取决于你的应用程序设计,Meteor可以使用任何一种设计。

1)您可以使用发布函数为每个客户端提供一个巨大数据库中的他/她自己的记录,使用一种方法将子域http主机放入发布函数中,以便仅发布该数据集。

2)在一台服务器上使用单独的流星实例连接到他们自己的mongodb数据库,并使用某种代理将它们服务到子域。你可以用任何你想要的数据推送每一个数据,甚至可能是单独的应用程序集。

这将取决于你在建什么。如果你只需要更新一组数据,以便每个人都可以更新1),所以如果你的用例需要这样的话,这可能是一个更好的选择。

使用独立流星实例的好处主要是定制。如果你想让每个客户的能力差异很大,可以使用2),否则使用1)

如果你想要得到你想要的细节的要点,你看Meteor.com的托管我认为每个部署都有自己的数据库,主要原因:定制化,每个人的部署很可能会完全不同。

UPDATE:

截至2014年3月,有第三方atmosphere package meteor-dbproxy,可以让你在你的后端使用多个MongoDB的服务器(以及独立的OPLOG集成端点),从而使您分贝级沙盒多-tenancy。

0

从MongoDB的角度来看,你可以为每个客户端做一个数据库。当前稳定的MongoDB版本2.2具有数据库级锁定功能,与之前版本的大型全局锁相反。

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

+0

你会如何配置meteor使用多个数据库? – 2014-11-29 16:08:10