有没有懂 PG 数据库的,新项目要使用 PG 数据库,是使用多库单模式,还是使用单库多模式? 还是混合?大佬们有何高见
1
lolizeppelin 53 天前 via iPhone ![]() 一般都是多库
能分则分 |
![]() |
2
suuuch 52 天前 ![]() 单纯用过 PG ,没做过深入的运维。
schema 和 db 相同和不同点倒是能说上几个,太深入的俺也不是很清楚。 1. pg 备份和恢复的时候是可以根据 schema 操作,也可以根据 db 操作,这个区别不大。 2. pg 的配置 pg_hba 里面可以限制 ip 和用户访问 db ,这个无法做到 schema 级别。 3. 跨 schema 查询很容易,跨 db 查询的时候需要 dblink ,需要额外的配置。 4. 不同 schema 数据文件是逻辑隔离,相同 db 的数据文件是放在一起的。 不同 db 的数据文件则可以分布在不同的硬盘上,属于物理隔离。 |
![]() |
3
mingtdlb 52 天前 ![]() 仅使用,没研究。跟随多数,整多库单 scheme ?
|
![]() |
4
qwertty01 OP |
5
JackyTsang 52 天前 via Android ![]() 我们的场景是单库多模式,维护方便(只对于我们来说)
|
![]() |
6
defunct9 52 天前 ![]() 多库单 schema
|
8
dragonfsky1 52 天前 ![]() 多库单模式 主要指的啥,你们是要用 citus 这种吗?
|
![]() |
9
defunct9 52 天前 ![]() 我们实际用的是多模式多库,每回权限赋来赋去极其麻烦。管理员和程序的视角不通,看起来极其别扭。
|
![]() |
10
qwertty01 OP @dragonfsky1 就是每个微服务对应一个数据库 只用数据库下的 public 模式
|
11
NXzCH8fP20468ML5 52 天前 via Android ![]() 生产上就是一套实例一个库。
其他环境在一台机器上,不同环境用库划分,不同业务用 schema 划分。 postgres 库和 public 模式禁止使用。 |
13
NXzCH8fP20468ML5 52 天前 via Android ![]() 我们这种应该算单库多 schema
|
15
NXzCH8fP20468ML5 52 天前 via Android
@qwertty01
应该反问:为什么要用 public 库? |
![]() |
16
qwertty01 OP @xxfye #15 使用 public 的话,后端微服务就不用指定模式了(大概?)就和 mysql 一样用了
这样看起来也体现不出来啥区别,感觉也没有啥问题 |
17
NXzCH8fP20468ML5 52 天前 via Android ![]() @qwertty01 有种东西叫 search_path ,不用特意设置。不带表名,也会默认访问和修改自己 schema 的表。
|
18
qee 51 天前 ![]() 我们公司用的 pg ,分库偏向于分系统,而分模式偏向于分模块,非公共应用和必要情况下不要 public
|