架构:使用Express,多个Mongo数据库+连接与多个集合

时间:2015-06-08 17:50:07

标签: node.js mongodb database

我正在构建一个应用程序,为Mongo DB中的多个不同客户存储敏感数据。每个客户的数据模型都是相同的(电子邮件,联系人,会议)。所有客户端使用相同的Express服务器使用相同的API访问数据。我已经阅读了很多关于使用一个大型集合与几个集合与几个数据库的比较:

Mongoose and multiple database in single node.js project

MongoDB performance - having multiple databases

我喜欢每个客户端使用一个数据库的想法,因为安全性和数据的简单分离。我是这样想的吗?

同样在这种情况下,我有点担心在Express中管理数据库连接。

我知道连接应该只进行一次(例如,在启动服务器时)然后保持活动状态。因此,使用多个数据库意味着Express会打开多个连接并使它们保持活动状态,将来可能会有几十个或几百个。此外,每次api调用时,控制器都应该能够选择要查询的数据库连接。

这值得吗?

1 个答案:

答案 0 :(得分:2)

对于像这样的多租户应用程序,我建议在所有租户的单个集合中存储类似的数据,其中包含某种tenant_id字段,然后确保所有查询都有正确的选择器。

如果您选择多个集合,或者更糟糕的是,多个数据库,它不会太可扩展。如果您只有少数客户并且不打算拥有数百个或更多客户端,那么多采集或多数据库方法可行。不过我想这会很痛苦。 Mongo将为每个集合分配大量磁盘空间,额外的连接将占用更多内存等,性能损失将无法忽略。