我即将使用Rail和Postgres构建SAAS产品。我想知道我是否应该遵循架构级别,基于子域的多租户或单个租户应用程序是否足够好架构? 我的要求在客户端之间没有数据的可靠性,因此基于模式的多租户架构似乎对我而言。有谁能请进一步向我解释为什么相关解释的好坏?
答案 0 :(得分:2)
Here's来自Apartment gem的创建者的帖子表明他们将来不会使用每个租户架构的方法。
上述问题的最终结果导致我们大多放弃了我们单独的模式方法来实现多租户。对于我们今后构建的所有服务,我们使用更传统的列范围方法,并编写了我们自己的包装器,有效地模仿了Apartment给我们的每个请求租户方法。
如果要部署到Heroku,则有warning个版本的每个租户架构会影响托管备份工具的性能:
在数据库中使用多个模式的最常见用例是构建软件即服务应用程序,其中每个客户都有自己的模式。虽然这种技术看起来很引人注目,但我们强烈建议不要使用它,因为它会导致许多操作问题。例如,即使是中等数量的模式(> 50)也会严重影响Heroku的数据库快照工具PG备份的性能。
为了实现最大的数据隔离,每个租户的数据库方法是合适的。
对于最简单的操作,每个表的tenant_id
列可用于确定查询范围,并可使用row level security policies强制执行。