pgGraph: 一个为现有关系型表添加高速图遍历功能的 PostgreSQL 扩展
它解决了什么问题
关系型数据库(如 PostgreSQL)非常适合处理结构化数据,但在处理复杂的图风格查询时却很吃力——例如寻找两个实体之间的最短路径,或在特定跳数内发现记录。传统上,这些查询需要编写复杂的、自定义的递归 SQL,这可能导致运行缓慢且难以维护。
它是如何工作的
pgGraph 并不将数据迁移到单独的图数据库,而是基于您现有的 PostgreSQL 表构建一个专门的、读密集型的图索引。它使用压缩稀疏行(Compressed Sparse Row, CSR)格式将关系存储在连续的内存结构中,从而实现极速的遍历。您可以通过 graph schema 中的标准 SQL 函数与此图进行交互,而 PostgreSQL 仍然是您数据的权威事实来源。
适用人群
- 需要执行复杂关系查询,但又不想迁移到专用图数据库的 PostgreSQL 用户。
- 寻求加速图相关工作负载(如 GraphRAG)的数据工程师。
- 希望在保持所有数据位于现有关系模式和安全约束内,同时进行高速遍历(如最短路径或多跳搜索)的用户。
亮点
- 零数据迁移: 您的数据保留在标准的 PostgreSQL 表中;pgGraph 仅创建一个派生索引。
- 高性能: 使用专门的内存高效执行层,绕过递归 SQL 连接的开销。
- SQL 原生: 无需新的查询语言;使用 SQL 函数即可执行图搜索。
- 安全特性: 包括内置的断路器,如深度限制和内存保护,以防止无限制的遍历导致数据库崩溃。
Sources
- RepoEvokoa/pgGraph