作者作为托尔金和图论的粉丝,被同事分享的关于在 PostgreSQL 中表示图的博客文章吸引。文中介绍了如何在 PostgreSQL 中建模图及使用递归 CTE 执行图遍历查询,还提到 SQL Property Graph Queries(SQL/PGQ)已成为 ISO 标准的一部分,可在不依赖单独图数据库管理系统的情况下高效表示和查询现有关系数据为图。
- SQL Property Graph Queries(SQL/PGQ):是 SQL:2023 ISO 标准的一部分,能将现有关系数据表示为图并进行查询,代表节点间关系的连接边是很自然且有用的能力,特别适合表示网络等。
- 添加此功能到 Postgres:有第三方扩展如 Apache AGE™可添加图数据库功能到 Postgres,而在 pgsql-hackers 邮件列表中 contributors 一直在讨论和实现 SQL/PGQ 到 Postgres 中,虽仍在开发中未确定发布日期,但已可打补丁到 Postgres 中探索。打补丁需从源代码构建和安装 Postgres,包含下载补丁文件、获取 Postgres 源代码并进入相应目录、为每个补丁文件运行 patch 命令等三个步骤,构建和安装时需确保安装所需工具。
- 图的实际应用:以托尔金角色为例创建表、数据和属性图,通过简单查询(如找父母)和复杂查询(如找朋友的朋友)展示 SQL/PGQ 的用法,与递归 CTE 相比简化了语法,如找朋友的朋友的查询,通过描述图遍历的箭头形状清晰展示查询逻辑,查询结果与原博客文章相同。
- 结论:SQL/PGQ 为在 PostgreSQL 中直接处理类似图的数据提供了灵活、强大且易读的接口,虽仍在开发中未确定发布日期,但作者期待其在未来 Postgres 版本中获得全面支持,感谢 pgsql-hackers 的努力。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。