0

对于使用面向文档的数据库的 Web 应用程序的多租户架构,我可以看到两个可能的选项:

  • 每个租户拥有一个数据库,并且集合在逻辑上将不同类型的对象分开。
  • 每个租户有一个集合,所有用户数据都存储在一个数据库中,每条记录上都有某种标志或对象类型标识符。

是否有关于这两个选项以及它们之间的差异的任何研究或任何文件?

设计一个允许多个用户存储大量不同类型数据的 Web 应用程序的人会选择一个而不是另一个,是否有一个特定的标准或充分的理由?

除了速度/效率问题,还有什么其他会影响决策的事情要说吗?

编辑我知道一些术语可能是特定于数据库的,所以对于所有想知道我特指 MongoDB 的人来说。

4

1 回答 1

0

我不想要租户特定的集合。在我的应用程序中,我通常硬编码集合名称,就像我在使用 SQL 表时硬编码表名称一样。会有一个comments集合存储博客的所有评论。我不想处理 and 之类的集合名称comments_tenant_1comments_tenant_2因为 1) 感觉容易出错,以及 2) 会使应用程序代码更加复杂(必须将集合名称替换为计算集合名称的函数)。并且 3) 单个数据库中的集合数量可能会变得巨大,这会使所有集合的列表看起来令人生畏,而且 MongoDB 也不是为拥有很多集合而构建的(请参阅问题下方评论中的链接,其中大卫 B 发布,https://docs.mongohq.com/use-cases/multi-tenant.html)。

但是,数据库名称不与应用程序数据结构耦合,您可以授予对数据库的权限(但不能授予单个集合)。因此,每个租户一个数据库可能是合理的。可以是tenant_id所有租户的单个数据库中的每个文档字段(请参阅上述链接)。

于 2015-02-07T08:19:37.737 回答