对于使用面向文档的数据库的Web应用程序的多租户架构,我可以看到两个可以想到的选项:
是否有任何研究或有关于这两个选项及其之间的差异的文件?
为什么设计允许多个用户存储大量不同类型数据的Web应用程序的人会选择一个而不是另一个?
除了速度/效率问题之外,还有其他任何可以影响决定的事情吗?
编辑我知道某些术语可能是特定于数据库的,因此对于所有想知道我都特别指的是MongoDB。
答案 0 :(得分:0)
我不想要租户特定的收藏品。在我的应用程序中,我通常使用硬编码集合名称,就像我使用SQL表时硬编码表名一样。这里有一个comments
集合,用于存储博客的所有评论。我不想处理像comments_tenant_1
和comments_tenant_2
这样的集合名称,因为1)感觉容易出错,2)会使应用程序代码更复杂(集合名称必须用函数替换)计算集合名称)。 3)单个数据库中的集合数量可能会增长很多,这会使所有集合的列表看起来令人生畏,而且MongoDB也不是为了拥有很多集合而构建的(请参阅下面的评论中的链接) ,David B发布的,https://docs.mongohq.com/use-cases/multi-tenant.html)。
但是,数据库名称不与应用程序数据结构耦合,您可以授予数据库权限(但不能授予单个集合)。因此每个租户一个数据库可能是合理的。可以是所有租户的单个数据库中的每个文档tenant_id
字段(请参阅上述链接)。