这是一个更具架构性的问题。创建多租户应用的最佳做法是什么?对所有租户使用单个数据库,还是为每个租户使用单独的模式/数据库实例?
答案 0 :(得分:1)
这里真正的问题是整体客户(或者更确切地说是激活)服务隔离,可以在DB层的不同资源共享级别上考虑:
上述推理仅涉及DB层,通常是最底层的,但类似的推理也可以应用于任何其他层。
也就是说,为了在所有关注点(I / O,网络,计算,可用性等)中实现真正全面的客户服务级别隔离,您必须完全放弃多租户和任何形式的资源共享。在极端情况下,这种推理意味着您需要一个单独的物理IDC,每次激活都需要专用连接。
答案 1 :(得分:0)
有关故事的更多信息。该公司要求我对多租户的输入是使用共享主机启动 - 因此他们可以使用的数据库实例数量有限。
以下是我对请求者的提议: 使用单一数据库解决方案,因为这不需要额外费用
为了满足租户数据隔离的要求,我建议使用Views而不是Tables解决方案。 视图而不是表: 1.目前用户直接从表中选择数据 2.在将来的状态中,DB中的表将隐藏在视图中。该视图将使用当前登录的DB User作为选择标准。这样就实现了虚拟租户数据隔离。