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



我正在构建一个应用程序,在mongodb中为几个不同的客户存储敏感数据。数据模型对于每个客户端(电子邮件、联系人、会议)都是相同的。所有客户机都使用具有相同Express服务器的相同API访问数据。我读过很多关于使用一个大集合vs几个集合vs几个数据库的文章:

Mongoose和多个数据库在单个node.js项目

MongoDB性能-拥有多个数据库

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

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

我明白,连接应该只做一次(例如,当启动服务器),然后保持活跃。因此,使用多个数据库意味着Express将打开多个连接并使它们保持活跃,未来可能会有几十个或数百个连接。此外,对于每个api调用,控制器应该能够选择从哪个数据库连接进行查询。

值得这么麻烦吗?

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

如果你想要多个集合,或者更糟的是,多个数据库,它就不会有太大的可伸缩性。如果您只有几个客户端,并且不打算拥有数百个或更多的客户端,那么,多收集或多数据库方法可能是可行的。不过我想会很痛苦。Mongo将为每个集合分配大量的磁盘空间,额外的连接将占用更多的内存等,对性能的影响将不容忽视。

最新更新