PostgreSQL 通过分 Database 做多租户可行吗? PostgreSQL 多租户的正确姿势

163 天前
 annoygaga

如题,目前有有需求希望能够给用户开放一个 SQL 数据库,开放 SQL 能力( SaaS 场景需求),不然自己封装 SQL 难受,用户也难受。

小弟对 postgresql 之前只有使用经验,对其 user/database/权限能力了解不多,特来问问

chatgpt 推荐:一个 PG 实例,N 个用户,通过不同的 database 和 user 进行隔离,前面一个连接池保证一个 user 只能连接某个 database

我想问问这个方案:

小弟这块经验确实较少,而 chatgpt 我总感觉他有些方案不是很可信,特来问问,以及有哪家用这个场景在线上跑的吗?

2858 次点击
所在节点    PostgreSQL
29 条回复
annoygaga
163 天前
@IDAEngine 这样混部会不会花费更多额外资源?
annoygaga
163 天前
@xausky 我想问的就是这么保证租户之间不能看到,pg 这块严格不严格,这块经验不多,特来请教
irrigate2554
163 天前
@annoygaga 这就大可不必了,问问 AI 怎么配置权限,自己试试,除非是 pg bug ( pg 代码出了名的好)否则肯定泄露不了。
IDAEngine
163 天前
@annoygaga 不至于,多租户了不至于都放在一台机器吧,服务器内存大一点就行了
annoygaga
163 天前
@IDAEngine 是多个租户在一台机器混部,因为很多用户就是免费用户,所以不希望 docker 占用太多资源
changz
162 天前
可行,看下 neon ,就是身边没有多少应用案例,小开发者薅羊毛的用得多
jjx
162 天前
取决于你的租户数
如果你的租户数量很大, 一数据库一租户肯定不合适
要切换到一租户一 schema, 每个数据库上 放几十上百个 schema

一数据库和一 schema 都保证了数据的独立性,这个独立性更多的是编程时不会导致访问到其它租户的数据, 比单一表中用租户 id 区分要安全的多

如果不需要开放给租户 sql 权限, 没有必要做一用户一 schema 限制, 因为通常连接池连接的特点, 用户也是一个参数

postgresql 默认只有 100 个连接, 连接很宝贵

如果需要开放给租户 sql 权限,则必须用用户去限制 schema 访问权限,不过这样也导致连接资源被消耗

具体要根据实际情况决定
annoygaga
162 天前
@changz neon 我看了他们架构师 k8s 起实例的呀

我的想法是每个租户在一个 pg 里面分一个 user 和 database 给他
annoygaga
162 天前
@jjx 如果前面架一个连接池呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1124891

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX