【发布时间】:2026-02-08 21:45:02
【问题描述】:
我是 Postgres/数据库的新手,正在考虑如何设计多租户应用程序。我阅读了一些基本内容,例如 Postgres 支持的模式和自 Postgres 9.5 以来添加的行级安全性。所以在我的例子中,一个租户可以有很多用户。两个不同的租户可以拥有同名的用户(有点像层次结构)。所以在顶层,我可以为每个租户都有一个模式。然后在每个内部都有一个针对用户的 RLS 策略。这可以在 Postgres 中完成吗?这是一个不错的选择吗?使用 RLS,我需要为每个用户分配一个角色。这可能会爆炸,因为我的理解是角色是跨模式的全局的。
或者我能想到的其他事情是,我将所有内容保存在同一个表中,但有尊重用户和表中租户列的策略。这在 Postgres 中可能吗?例如,当我添加一个带有 current_users = "column_name" 的策略时,我是否可以添加另一个条件,在其中添加一个*租户名称匹配的检查。但是这个设置在哪里,如何设置,类似于SET ROLE "user"
对正确的使用方法有点困惑。
【问题讨论】:
-
"我需要为每个用户分配一个角色" - 你已经有了。用户是一个角色(具有“登录”权限)。但如果你不需要跨租户查询,那么我同意 Neil 的观点:每个租户使用一个数据库
标签: postgresql