0

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

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

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

4

2 回答 2

5

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

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

1)您可以使用发布功能为每个客户提供来自一个巨大数据库的仅他/她自己的记录,使用一种方法将子域 http 主机获取到发布功能,因此它只给出该集合的数据。

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

这真的取决于你正在建造什么。如果您只想更新一组数据,以便为每个人更新,您可以使用 1),所以如果您的用例需要这样做,它可能是一个更好的选择。

使用单独的流星实例的好处主要是定制。用你提供的细节很难得到你想要的东西的要点,所以请简短地说:如果你希望每个客户的能力非常不同,请使用 2),否则使用 1)

如果您查看 Meteor.com 的托管,我认为每个部署都有自己的数据库,主要原因:自定义,每个人的部署可能完全不同。

更新:

截至 2014 年 3 月,有一个第三方环境包meteor-dbproxy允许您在后端使用多个 mongodb 服务器(以及单独的 oplog 集成端点),从而允许您进行 db 级沙盒多租户。

于 2013-02-21T13:34:07.890 回答
0

从 MongoDB 的角度来看,您可以为每个客户端创建一个数据库。当前稳定的 MongoDB 版本 2.2 具有数据库级锁定,而不是以前版本的大型全局锁定。

这样,如果您的一个客户正在敲击系统,它们不会影响您的其他具有全局锁的客户。

于 2013-02-22T14:33:10.963 回答