PostgreSQL 19 Beta 4 发布,因语义与并发问题撤回了 SQL/PGQ、时态更新删除、分区合并拆分、DDL 重建函数、在线校验和五项功能,作者支持此举以确保可靠性。REPACK、WAIT FOR LSN、postgres_fdw 导入统计等功能仍保留。简体中文翻译已合入上游,pgsql.cc 补齐了 28 年手册。
Postgres 19的SQL/PGQ图查询在固定深度时与手写JOIN性能相同,因其本质是重写为JOIN。但可变深度查询(如爆炸半径)不受支持,需用递归CTE,性能随可达节点数线性增长。Apache AGE支持Cypher可变长度遍历,但比递归CTE慢约2倍。所有实现均基于索引遍历,非原生图引擎的索引无关邻接。
PostgreSQL 19将引入SQL属性图查询(SQL/PGQ),支持图模式匹配,新增GRAPH_TABLE函数、属性图DDL命令及系统目录。作者虽承认其重要性,但认为语法复杂,优势不明显,更倾向传统JOIN写法,并推荐相关博客供深入理解。
数据血缘追踪数据从源头到报表的流转路径,对合规审计和故障排查至关重要。文章提出将血缘关系作为数据存入表中,利用PostgreSQL 19的SQL/PGQ属性图功能,通过SQL查询上下游依赖、追溯数值来源、发现孤立数据,替代过时的文档和电子表格,使血缘关系随模式自动更新。
本文介绍 PostgreSQL 19 中 SQL/PGQ 图查询的进阶用法:以人物、公司为顶点,knows、works_at 为边构建属性图,演示查询 Alice 朋友的就职公司及查找互相认识的同事。因 PG19 暂不支持逗号分隔的多模式匹配,需先用 GRAPH_TABLE 输出 ID 再 JOIN;多边表图应显式命名边标签,变长跳数 {1,3} 语法暂未支持。
PostgreSQL 19 将支持 SQL/PGQ,允许直接在关系表上定义属性图并用 GRAPH_TABLE 查询,无需扩展或复制数据。文章以小型社交网络为例,演示 CREATE PROPERTY GRAPH、顶点与边查询、有向与无向遍历、查找朋友的朋友及 WHERE 过滤,执行计划显示查询被重写为普通 SQL,无额外执行节点。
完成下面两步后,将自动完成登录并继续当前操作。