V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwertty01
V2EX  ›  数据库

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

  •  1
     
  •   qwertty01 · 53 天前 · 2019 次点击
    这是一个创建于 53 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    20 条回复    2024-07-18 15:26:27 +08:00
    lolizeppelin
        1
    lolizeppelin  
       53 天前 via iPhone   ❤️ 1
    一般都是多库
    能分则分
    suuuch
        2
    suuuch  
       52 天前   ❤️ 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  
       52 天前   ❤️ 1
    仅使用,没研究。跟随多数,整多库单 scheme ?
    qwertty01
        4
    qwertty01  
    OP
       52 天前
    @lolizeppelin
    @suuuch
    @mingtdlb
    多谢三位大佬
    JackyTsang
        5
    JackyTsang  
       52 天前 via Android   ❤️ 1
    我们的场景是单库多模式,维护方便(只对于我们来说)
    defunct9
        6
    defunct9  
       52 天前   ❤️ 1
    多库单 schema
    qwertty01
        7
    qwertty01  
    OP
       52 天前
    @defunct9 大佬 有啥依据吗
    dragonfsky1
        8
    dragonfsky1  
       52 天前   ❤️ 1
    多库单模式 主要指的啥,你们是要用 citus 这种吗?
    defunct9
        9
    defunct9  
       52 天前   ❤️ 1
    我们实际用的是多模式多库,每回权限赋来赋去极其麻烦。管理员和程序的视角不通,看起来极其别扭。
    qwertty01
        10
    qwertty01  
    OP
       52 天前
    @dragonfsky1 就是每个微服务对应一个数据库 只用数据库下的 public 模式
    NXzCH8fP20468ML5
        11
    NXzCH8fP20468ML5  
       52 天前 via Android   ❤️ 1
    生产上就是一套实例一个库。

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

    postgres 库和 public 模式禁止使用。
    bsg1992
        12
    bsg1992  
       52 天前
    @qwertty01 常规情况下 public 是不推荐使用的
    NXzCH8fP20468ML5
        13
    NXzCH8fP20468ML5  
       52 天前 via Android   ❤️ 1
    我们这种应该算单库多 schema
    qwertty01
        14
    qwertty01  
    OP
       52 天前
    @xxfye #11 大佬 为什么禁止使用 public (刚接触 pg 库
    NXzCH8fP20468ML5
        15
    NXzCH8fP20468ML5  
       52 天前 via Android
    @qwertty01
    应该反问:为什么要用 public 库?
    qwertty01
        16
    qwertty01  
    OP
       52 天前
    @xxfye #15 使用 public 的话,后端微服务就不用指定模式了(大概?)就和 mysql 一样用了
    这样看起来也体现不出来啥区别,感觉也没有啥问题
    NXzCH8fP20468ML5
        17
    NXzCH8fP20468ML5  
       52 天前 via Android   ❤️ 1
    @qwertty01 有种东西叫 search_path ,不用特意设置。不带表名,也会默认访问和修改自己 schema 的表。
    qee
        18
    qee  
       51 天前   ❤️ 1
    我们公司用的 pg ,分库偏向于分系统,而分模式偏向于分模块,非公共应用和必要情况下不要 public
    qwertty01
        19
    qwertty01  
    OP
       51 天前
    @qee 大佬 能详细讲讲吗
    qee
        20
    qee  
       51 天前   ❤️ 1
    @qwertty01 比如我们公司的用户系统,就单独用了一个库,库下面更加用户功能的情况拆开来了几个模式。其他的各个独立业务线,各自用库然后拆分模式。
    这个划分就是拆分上延展到数据库的结果,各个业务不影响干扰,最后上层搭配合理的跨系统调用实现。
    对于 pg 本身而言,这玩意就是数据管理的分层思维体现,按实际业务划分即可。不过系统小就大可不必了,直接单库一把梭都没事,还省得跨库查询不方便。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1879 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:52 · PVG 08:52 · LAX 17:52 · JFK 20:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.