0

我即将使用 Rail 和 Postgres 构建一个 SAAS 产品。我想知道我是否应该遵循架构级别、基于子域的多租户或单租户应用程序是否足够好架构?我的要求在客户端之间没有数据的可靠性,因此基于模式的多租户架构对我来说似乎是正确的。任何人都可以通过相关解释进一步解释为什么它是好还是坏?

4

1 回答 1

3

这是来自Apartment gem的创建者的帖子,暗示他们将来不会使用每个租户模式的方法。

上述问题的最终结果导致我们大多放弃了多租户的分离模式方法。对于我们未来构建的所有服务,我们使用更传统的列范围方法,并编写了我们自己的包装器,有效地模仿了 Apartment 给我们的按请求租用方法。

如果您要部署到 Heroku,则会出现有关每个租户架构影响托管备份工具性能的警告:

在数据库中使用多个模式的最常见用例是构建软件即服务应用程序,其中每个客户都有自己的模式。虽然这种技术看起来很有吸引力,但我们强烈建议不要使用它,因为它会导致许多操作问题的案例。例如,即使是中等数量的模式(> 50)也会严重影响 Heroku 的数据库快照工具 PG Backups 的性能。

为了最大程度地隔离数据,适用于每个租户的数据库方法。

对于最简单的操作,tenant_id可以使用每个表的列来限定查询范围,并且可以通过行级安全策略来强制执行。

于 2017-11-23T11:58:44.863 回答