【发布时间】:2021-06-14 16:57:03
【问题描述】:
如何在多租户环境中使用 MongoDB?我所说的多租户是指多个组织应用程序使用的一个 MongoDB 实例。
因此,我们可以让 App A、App B 和 App C 使用同一个 MongoDB 实例,并且每个应用程序彼此隔离,这意味着,例如,App A 的“用户”集合不能被 App B 访问反之亦然。
MongoDB 中似乎没有可用于为每个应用程序分配的“命名空间”概念。
【问题讨论】:
如何在多租户环境中使用 MongoDB?我所说的多租户是指多个组织应用程序使用的一个 MongoDB 实例。
因此,我们可以让 App A、App B 和 App C 使用同一个 MongoDB 实例,并且每个应用程序彼此隔离,这意味着,例如,App A 的“用户”集合不能被 App B 访问反之亦然。
MongoDB 中似乎没有可用于为每个应用程序分配的“命名空间”概念。
【问题讨论】:
您可以进行基于角色的访问控制,并且可以控制允许哪个用户对每个资源执行什么操作。
从您的问题来看,您似乎对集合级别控制感兴趣。请参考this。请确保您正在查看适用于 MongoDB 的正确版本。
因此,您最终会为每个租户获得不同的凭据。
警告;在这个设计中,你不能扼杀嘈杂的邻居。
例如,用户定义的角色可以包含以下权限:
privileges: [ { resource: { db: "products", collection: "inventory" }, actions: [ "find", "update", "insert" ] }, { resource: { db: "products", collection: "orders" }, actions: [ "find" ] } ]
另一种选择是为每个租户创建单独的数据库。但这会增加您的管理(CI/CD/DevOps)成本。例如。必须对每个租户应用索引的更改。您需要确保正确应用更改。
这取决于有多少租户。数量少就可以了。
对于大量数据,最好是纯 SaaS,并且在您存储、检索、删除等的每个文档中都包含 tenantId。
【讨论】: