如题,目前有有需求希望能够给用户开放一个 SQL 数据库,开放 SQL 能力( SaaS 场景需求),不然自己封装 SQL 难受,用户也难受。小弟对 postgresql 之前只有使用经验,对其 user/database/权限能力了解不多,特来问问。
chatgpt 推荐:一个 PG 实例,N 个用户,通过不同的 database 和 user 进行隔离,前面一个连接池保证一个 user 只能连接某个 database
我想问问这个方案:
安全性如何,能保证不同的用户之间无法看到彼此的数据,或者影响彼此的数据!多租户之前因为是共享一个实例,资源争抢的问题能解决么?这个方案运维上有没有什么难点?开放的 user 会不会对实例本身有其他影响?
小弟这块经验确实较少,而 chatgpt 我总感觉他有些方案不是很可信,特来问问,以及有哪家用这个场景在线上跑的吗?
还是有合理场景存在的,比如 saas 服务,但是提供了报表平台这种,想让用户可以自己设计报表。我们公司的方案是分 schema 的。
如果不是, 如果是做应用的, 那么答应这个需求的 PM/领导 应该被拖出去打一顿
下面这个是一般做法, 从易到难:
option-1. 开发个简单的 query API 给用户, 让用户发 HTTP GET 到 your/query/url?filter1=v1&filte2=v2&... 你们 API backend. 这样可以模拟出基础的 SQL 效果
option-2. 设计自己的 querying language, 可以是类 SQL, 也可是简化版 JS/Python, 然后发到你们 API backend, 解析后变成 backend query 逻辑返回给用户. 这样能达到更灵活的结果, 但是开发成本高.
像你们领导要求的,直接给个 SQL 数据库给用户... 属于不懂瞎指挥, 想象把开发该做的事情,甩给用户+运维. 可以想象这个项目后面有多痛苦. 让提这个需求的人,自己去擦屁股吧.