有没有懂 PG 数据库的,新项目要使用 PG 数据库,是使用多库单模式,还是使用单库多模式?

2024 年 7 月 16 日
 qwertty01

有没有懂 PG 数据库的,新项目要使用 PG 数据库,是使用多库单模式,还是使用单库多模式? 还是混合?大佬们有何高见

3556 次点击
所在节点    数据库
20 条回复
lolizeppelin
2024 年 7 月 17 日
一般都是多库
能分则分
suuuch
2024 年 7 月 17 日
单纯用过 PG ,没做过深入的运维。
schema 和 db 相同和不同点倒是能说上几个,太深入的俺也不是很清楚。
1. pg 备份和恢复的时候是可以根据 schema 操作,也可以根据 db 操作,这个区别不大。
2. pg 的配置 pg_hba 里面可以限制 ip 和用户访问 db ,这个无法做到 schema 级别。
3. 跨 schema 查询很容易,跨 db 查询的时候需要 dblink ,需要额外的配置。
4. 不同 schema 数据文件是逻辑隔离,相同 db 的数据文件是放在一起的。 不同 db 的数据文件则可以分布在不同的硬盘上,属于物理隔离。
mingtdlb
2024 年 7 月 17 日
仅使用,没研究。跟随多数,整多库单 scheme ?
qwertty01
2024 年 7 月 17 日
@lolizeppelin
@suuuch
@mingtdlb
多谢三位大佬
JackyTsang
2024 年 7 月 17 日
我们的场景是单库多模式,维护方便(只对于我们来说)
defunct9
2024 年 7 月 17 日
多库单 schema
qwertty01
2024 年 7 月 17 日
@defunct9 大佬 有啥依据吗
dragonfsky1
2024 年 7 月 17 日
多库单模式 主要指的啥,你们是要用 citus 这种吗?
defunct9
2024 年 7 月 17 日
我们实际用的是多模式多库,每回权限赋来赋去极其麻烦。管理员和程序的视角不通,看起来极其别扭。
qwertty01
2024 年 7 月 17 日
@dragonfsky1 就是每个微服务对应一个数据库 只用数据库下的 public 模式
NXzCH8fP20468ML5
2024 年 7 月 17 日
生产上就是一套实例一个库。

其他环境在一台机器上,不同环境用库划分,不同业务用 schema 划分。

postgres 库和 public 模式禁止使用。
bsg1992
2024 年 7 月 17 日
@qwertty01 常规情况下 public 是不推荐使用的
NXzCH8fP20468ML5
2024 年 7 月 17 日
我们这种应该算单库多 schema
qwertty01
2024 年 7 月 17 日
@xxfye #11 大佬 为什么禁止使用 public (刚接触 pg 库
NXzCH8fP20468ML5
2024 年 7 月 17 日
@qwertty01
应该反问:为什么要用 public 库?
qwertty01
2024 年 7 月 17 日
@xxfye #15 使用 public 的话,后端微服务就不用指定模式了(大概?)就和 mysql 一样用了
这样看起来也体现不出来啥区别,感觉也没有啥问题
NXzCH8fP20468ML5
2024 年 7 月 17 日
@qwertty01 有种东西叫 search_path ,不用特意设置。不带表名,也会默认访问和修改自己 schema 的表。
qee
2024 年 7 月 18 日
我们公司用的 pg ,分库偏向于分系统,而分模式偏向于分模块,非公共应用和必要情况下不要 public
qwertty01
2024 年 7 月 18 日
@qee 大佬 能详细讲讲吗
qee
2024 年 7 月 18 日
@qwertty01 比如我们公司的用户系统,就单独用了一个库,库下面更加用户功能的情况拆开来了几个模式。其他的各个独立业务线,各自用库然后拆分模式。
这个划分就是拆分上延展到数据库的结果,各个业务不影响干扰,最后上层搭配合理的跨系统调用实现。
对于 pg 本身而言,这玩意就是数据管理的分层思维体现,按实际业务划分即可。不过系统小就大可不必了,直接单库一把梭都没事,还省得跨库查询不方便。

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

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

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

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

© 2021 V2EX