惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Latest
Security Latest
Know Your Adversary
Know Your Adversary
S
Schneier on Security
K
Kaspersky official blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
Project Zero
Project Zero
Recorded Future
Recorded Future
T
The Blog of Author Tim Ferriss
P
Palo Alto Networks Blog
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
L
LINUX DO - 热门话题
The Register - Security
The Register - Security
B
Blog
V
Vulnerabilities – Threatpost
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
Latest news
Latest news
Webroot Blog
Webroot Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
LINUX DO - 最新话题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
B
Blog RSS Feed
aimingoo的专栏
aimingoo的专栏
The GitHub Blog
The GitHub Blog
D
Docker
G
Google Developers Blog
T
Threatpost
F
Full Disclosure
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
D
DataBreaches.Net
WordPress大学
WordPress大学
F
Fortinet All Blogs
S
Secure Thoughts
Y
Y Combinator Blog
博客园 - Franky
Scott Helme
Scott Helme
Apple Machine Learning Research
Apple Machine Learning Research
Hacker News: Ask HN
Hacker News: Ask HN
酷 壳 – CoolShell
酷 壳 – CoolShell
Cloudbric
Cloudbric
N
News | PayPal Newsroom

PostgreSQL

五年过去了,结论有什么变化吗? 适配信创数据库的人的精神状态 be like - V2EX 用了十几年的 MySQL 了,突然发现 PostgreSQL 可能更加适合我,大家怎么看? - V2EX postgresql 多进程改多线程 - V2EX 二键安装一个 postgresql 服务 - V2EX 通过 pg_roaringbitmap 优化标签查询的话,有没有必要做高频标签映射和结合普通复合索引? - V2EX PostgreSQL + TimescaleDB 方案不按主键索引走,有什么办法吗? - V2EX 看看大家现在用 pg 的最佳实践是怎么样的 - V2EX 用 PostgreSQL 存图片等 binary 有什么坑吗 - V2EX [求助] 在哪个网址能够下载 PostgresSQL 9.3.0 版本的 Windows 二进制安装包?官方/ftp/old/binary 里没有。 - V2EX [请教]pgvector 的性能问题 - V2EX 多笔记本离线 PostgreSQL 数据库同步问题: UUID vs 自增主键 - V2EX Postgresql 放 K8S 里,大家目前都用的什么方案呢? - V2EX 2025 年 postgresql 有什么优秀的备份解决方案 - V2EX 有大神研究过 pg_resetwal 的原理吗,为什么会丢 user 表的数据 - V2EX 按照 stackoverflow 教程执行 pg_resetwal, postgresql 的数据库被清空了 - V2EX 求国内高性价比的 postgresql 服务,纳米项目 - V2EX 请教一个关于 PostgreSQL 连接被 Server 关闭的问题 - V2EX PostgreSQL 18 JSONB 增加能取代 MongoDB 吗? - V2EX PostgreSql Oracle 迁移 postgreSQL ,有什么经验分享 - V2EX 有什么权限管理最佳实践吗 - V2EX 请教 PostgreSQL 和 PostGIS 使用问题 - V2EX pg 的毫秒级时间戳转换 - V2EX 关于 PostgreSQL 中的 max_connections 和 pg_stat_activity 的疑惑 - V2EX 目前国内最高性价比的 postgresql 服务是? - V2EX 新手,请问 postgres 怎么配置 vacuum - V2EX 学习 PostgreSQL,有什么资料推荐? - V2EX Apache AGE 和 Neo4j 哪个更好? - V2EX 有没有像 Citus 那样方便分片的图数据库? - V2EX 怎样使用 C 语言访问 PostgreSQL 集群? 小系统 数据库 mysql 和 postgresql 比对 和 wordpress 数据库技术选型 PostgreSQL 没有 on update current_timestamp 感觉好麻烦 - V2EX 主从同步使用的端口号可以和数据库端口号不同吗? - V2EX 为什么有时 PostgreSQL 有时会表现得比较卡? - V2EX 第一次使用 PostgreSQL,连建表都不会,请教点经验 Java 有没有针对 PostgreSQL 好用一点的 ORM - V2EX 请教,有无简单易用的 PostgreSQL 表结构、数据的同步工具? - V2EX PostgreSQL 启动失败 - V2EX PostgreSQL 数据库 正常情况下指定了 locale=C 与 encoding=UTF8 (最简单) - V2EX 错误迁移 pgsql 导致日志报 warning,请问如何解决? - V2EX 从 Mongodb 到 PostgreSQL 的大迁移 有无 pg 的入门精进博客或者视频推荐 有什么不通过写脚本的方式,将 postgreSQL 的建表语句转换为 doris 的建表语句吗? - V2EX 新的 PostgreSQL 语言插件 PL/PRQL - V2EX 请教一个经典的 postgres 的 sql 怎么写 - V2EX 洗数据:如何将 Contact 和 ContactTag 多对多关联起来 Postgres 在中国还能起来么? - V2EX PostgreSQL 17 增加增量备份的功能 - V2EX
PostgreSQL 通过分 Database 做多租户可行吗? PostgreSQL 多租户的正确姿势 - V2EX
annoygaga · 2025-04-12 · via PostgreSQL

这是一个创建于 429 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

我想问问这个方案:

  • 安全性如何,能保证不同的用户之间无法看到彼此的数据,或者影响彼此的数据

  • 多租户之前因为是共享一个实例,资源争抢的问题能解决么?

  • 这个方案运维上有没有什么难点

  • 开放的 user 会不会对实例本身有其他影响

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

datou

1

datou      2025 年 4 月 12 日

用过 supabase 的免费套餐,还行

laikicka

2

laikicka      2025 年 4 月 12 日

多个 schema 会比较好吧

dcoder

3

dcoder      2025 年 4 月 12 日

@annoygaga
你们是做底层 infra, 出租 database 么?
如果不是, 如果是做应用的, 那么答应这个需求的 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 数据库给用户... 属于不懂瞎指挥, 想象把开发该做的事情,甩给用户+运维. 可以想象这个项目后面有多痛苦. 让提这个需求的人,自己去擦屁股吧.

xuanbg

4

xuanbg      2025 年 4 月 12 日

只要实现自动化部署,分库、分表、tenant_id 标记这三种方案都基本一样。

dcoder

6

dcoder      2025 年 4 月 12 日

@xausky
你怎么地也得在外面套个 API 层,不然本来极其容易的开发工作,瞬间变成了(可能很复杂的)运维工作, 太折腾了

annoygaga

7

annoygaga      2025 年 4 月 12 日

@datou 怎么说? supabase 这么搞的?我登录上去可以新建 database 呀(我指 psql 链接过去 create database )

annoygaga

9

annoygaga      2025 年 4 月 12 日

@dcoder 是做类似 retool 的类似物,也就是每个用户本身就是创建多表的。现在倒腾了一堆 api ,用户自己也会 sql ,他难受我们也难受,不如搞成 database 方式提供呢,所以需求确实是提供 sql 能力。针对免费用户,混部,运维要求也不算高,但还是希望降低运维成本(谁知道免费用户会怎么用。。。

annoygaga

11

annoygaga      2025 年 4 月 12 日

@xausky 就是类似的场景呀,现在包了半天接口,用户自己也会 sql ,他难受我们也难受

annoygaga

12

annoygaga      2025 年 4 月 12 日

@dcoder 说多都是泪,用户不喜欢接受你的 api (要学习就不说了,而且数据方面的需求本身就很繁琐),sql 本身也不难学,用户表示还不如给一个 sql 口子,高阶用户也能用,我都准备写 sql parser 来搞这个需求了,想了想,搞了这么多还不如用 pg 提供的多租户方式,这样 bug 也少,主要问题就如你说的,运维成本是不是太高了,这部分很多就是免费用户,其实可以做严一些限制(但我对 pg 熟悉不高,不知道是不是可以像 docker 一样严格限制)

irrigate2554

13

irrigate2554      2025 年 4 月 12 日

@dcoder 我们这就是 supperset 普通直连数据库只给 schema 的权限,页面嵌入到我们系统,客户用下来也没啥问题。

Yanickkk

14

Yanickkk      2025 年 4 月 12 日

没什么难点,也可行,并且可以建一个实例池,超卖啥的都是基操了。唯一要注意的就是小心爆炸半径

annoygaga

16

annoygaga      2025 年 4 月 12 日

@xausky superset 不是查询平台吗?可以加数据什么的吗?以及能保证用户无法看到其他人数据吗?

annoygaga

17

annoygaga      2025 年 4 月 12 日

@yannxia 资源抢占已经是能预想到的事情了,主要还是怕会不会有 pg 什么小坑,有数据泄漏

irrigate2554

19

irrigate2554      2025 年 4 月 12 日

@annoygaga 只读就行了,用户无法看到其他人数据这个问题由租户自己的报表开发人员来确保,我们只保证你们租户不能看到其他租户的数据就行。

IDAEngine

20

IDAEngine      2025 年 4 月 12 日

直接上 docker 不就好了

annoygaga

22

annoygaga      2025 年 4 月 12 日

@xausky 我想问的就是这么保证租户之间不能看到,pg 这块严格不严格,这块经验不多,特来请教

irrigate2554

23

irrigate2554      2025 年 4 月 12 日

@annoygaga 这就大可不必了,问问 AI 怎么配置权限,自己试试,除非是 pg bug ( pg 代码出了名的好)否则肯定泄露不了。

annoygaga

25

annoygaga      2025 年 4 月 12 日

@IDAEngine 是多个租户在一台机器混部,因为很多用户就是免费用户,所以不希望 docker 占用太多资源

changz

26

changz      2025 年 4 月 13 日 via Android

可行,看下 neon ,就是身边没有多少应用案例,小开发者薅羊毛的用得多

jjx

27

jjx      2025 年 4 月 13 日

取决于你的租户数
如果你的租户数量很大, 一数据库一租户肯定不合适
要切换到一租户一 schema, 每个数据库上 放几十上百个 schema

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

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

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

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

具体要根据实际情况决定

annoygaga

28

annoygaga      2025 年 4 月 13 日

@changz neon 我看了他们架构师 k8s 起实例的呀

我的想法是每个租户在一个 pg 里面分一个 user 和 database 给他