谁能分享一下使用 PostgreSQL 高级功能的业务场景? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monster1priest
V2EX    PostgreSQL

谁能分享一下使用 PostgreSQL 高级功能的业务场景?

  •  
  •   monster1priest 2023-09-10 14:22:11 +08:00 3521 次点击
    这是一个创建于 811 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习 PostgreSQL ,看到里面有一些高级功能,但是想象不太到有哪些业务场景会用,有没有人能分享一下?
    Indexes 我倒是比较熟悉,其它的比如 Triggers 和 View ,有没有业务已经在使用的能简单说一下?/p>

    9 条回复    2023-09-11 11:27:02 +08:00
    niubee1
        1
    niubee1  
       2023-09-10 14:26:09 +08:00   1
    &t=21s
    pelloz
        2
    pelloz  
       2023-09-10 14:27:30 +08:00   1
    不要用触发器,你知道有这么个东西就好。视图的话用得也不多,可以用于简化复杂查询,方便数据查看权限的控制,不过在我遇到这些需求的时候一般也是在程序里面做而不是在数据库上弄。
    Mrun
        3
    Mrun  
       2023-09-10 14:49:12 +08:00   1
    表结构继承,在租户系统架构中,很实用
    monsterxx03
        4
    monsterxx03  
       2023-09-10 15:20:04 +08:00   1
    trigger 可以做一些 audit 的事,比如对核心数据表做了 CUD 操作时候自动记录或同步,在企业级应用里用的还挺多。之前碰到的一个具体例子是用户多端登陆的时候只保持最新 session 的有效性,在代码里当然能做,但当时场景特殊,客户那端不能部署新代码,但可以操作数据库,就用 pg 的 trigger 监听了 token 表的插入事件,将该用户所有 valid 的 token 全部置 false 。用 trigger 会导致逻辑分散,难以排查死锁问题,对表做 DDL/DML 操作时还要当心上面有 trigger ,在有一定并发量的互联网业务里都不推荐用。

    view 在 OLAP 场景下用的很多,比如 materialized view 就很实用,对纯开发用处就不大。
    dayeye2006199
        5
    dayeye2006199  
       2023-09-10 16:46:47 +08:00
    用过全文搜索和 pgvector
    adoal
        6
    adoal  
       2023-09-10 17:29:19 +08:00   1
    在业务系统里用好高级功能主要是可以简化开发。比如某些查询需要根据两个不同的时区对某个时间戳字段的 rounded to hours 值做聚合,按互联网派 24 氪金纯程序员的做法就是写数据时生成在这两个时区里的 rounded hour 作为附加字段,而传统行业信息化环境里的 DBA 就写个触发器在插入和改数据时自动完整这事,不需要程序员关心。就当代海量阿狗阿猫程序员的普遍水平和素质而言,我更相信 DBMS 里做各种约束和自动化更靠谱一些。

    至于视图,嗯,传统行业里,同一法人实体下的各业务主体单位之间做数据交换,用视图的太多了。有些人会觉得这样太落后。我也这么觉得。但是呢,这样短平快啊,基本上业务主体单位自己的运维人员就能搞定。做 API 来对接要人要钱要时间而且成本投下去来做的阿猫阿狗还不一定靠谱啊。

    另外,居然触发器和视图都能算高级功能了?这在传统的信息化圈子里都是很很很常规的。
    monster1priest
        7
    monster1priest  
    OP
       2023-09-10 18:26:01 +08:00 via iPhone
    @adoal 哈哈,我数据库的掌握程度不高。看的教程里面把 trigger 和 view 放在高级部分里了。
    monster1priest
        8
    monster1priest  
    OP
       2023-09-10 18:30:29 +08:00 via iPhone
    @adoal 我理解 trigger 对并发会有一些影响,所以互联网行业不用。
    troywinter
        9
    troywinter  
       2023-09-11 11:27:02 +08:00
    ltree 处理多层级结构时很有用,比如复杂的组织关系,可以轻松的实现一些以前需要递归查询的场景
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2613 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 03:13 PVG 11:13 LAX 19:13 JFK 22:13
    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