有没有懂 PG 数据库的,新项目要使用 PG 数据库,是使用多库单模式,还是使用单库多模式? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwertty01
V2EX    数据库

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

  •  1
     
  •   qwertty01 2024-07-16 14:40:21 +08:00 2568 次点击
    这是一个创建于 462 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    postgres 库和 public 模式禁止使用。
    bsg1992
        12
    bsg1992  
       2024-07-17 14:38:53 +08:00
    @qwertty01 常规情况下 public 是不推荐使用的
    NXzCH8fP20468ML5
        13
    NXzCH8fP20468ML5  
       2024-07-17 14:40:21 +08:00 via Android   1
    我们这种应该算单库多 schema
    qwertty01
        14
    qwertty01  
    OP
       2024-07-17 14:47:52 +08:00
    @xxfye #11 大佬 为什么禁止使用 public (刚接触 pg 库
    NXzCH8fP20468ML5
        15
    NXzCH8fP20468ML5  
       2024-07-17 15:03:45 +08:00 via Android
    @qwertty01
    应该反问:为什么要用 public 库?
    qwertty01
        16
    qwertty01  
    OP
       2024-07-17 15:22:12 +08:00
    @xxfye #15 使用 public 的话,后端微服务就不用指定模式了(大概?)就和 mysql 一样用了
    这样看起来也体现不出来啥区别,感觉也没有啥问题
    NXzCH8fP20468ML5
        17
    NXzCH8fP20468ML5  
       2024-07-17 16:01:52 +08:00 via Android   1
    @qwertty01 有种东西叫 search_path ,不用特意设置。不带表名,也会默认访问和修改自己 schema 的表。
    qee
        18
    qee  
       2024-07-18 10:49:55 +08:00   1
    我们公司用的 pg ,分库偏向于分系统,而分模式偏向于分模块,非公共应用和必要情况下不要 public
    qwertty01
        19
    qwertty01  
    OP
       2024-07-18 13:33:27 +08:00
    @qee 大佬 能详细讲讲吗
    qee
        20
    qee  
       2024-07-18 15:26:27 +08:00   1
    @qwertty01 比如我们公司的用户系统,就单独用了一个库,库下面更加用户功能的情况拆开来了几个模式。其他的各个独立业务线,各自用库然后拆分模式。
    这个划分就是拆分上延展到数据库的结果,各个业务不影响干扰,最后上层搭配合理的跨系统调用实现。
    对于 pg 本身而言,这玩意就是数据管理的分层思维体现,按实际业务划分即可。不过系统小就大可不必了,直接单库一把梭都没事,还省得跨库查询不方便。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2823 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 14:04 PVG 22:04 LAX 07:04 JFK 10:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86