Apache AGE 1.8 介绍与选型指南
PostgreSQL 图扩展 Apache AGE 1.8:属性图与 openCypher、agtype 与 cypher() 混合查询、1.8 新特性与 Neo4j/ArangoDB/JanusGraph 选型对比。
Apache AGE 1.8 介绍与选型指南
目标:讲清 Apache AGE 1.8(PostgreSQL 图扩展)的定位、核心概念、openCypher 支持与同类图数据库选型对比。本文为认知篇,全部论断基于官方文档、GitHub Release 与官方仓库联网溯源(查询日期 2026-10-18),不做本地安装实测。
一、信息基准
- 查询日期:2026-10-18(本文所有版本号、星标数、发布日期均在该日联网核验)。
- 版本依据:GitHub 仓库
apache/age最新稳定 Release 为 1.8.0(按 PostgreSQL 大版本分支分别发布:PG18 分支 v1.8.0 发布于 2026-08-06,PG15 分支 v1.8.0 发布于 2026-09-19;PG19 分支已推进至 v1.8.0-rc0,2026-07-06)。本文以 AGE 1.8 为介绍对象。 - 官方来源清单:
- GitHub Releases:https://github.com/apache/age/releases
- 官方代码仓库与 README:https://github.com/apache/age
- 官方用户手册:https://age.apache.org/age-manual/master/
- 项目主页:https://age.apache.org/
二、软件概述
2.1 项目定位与版本
Apache AGE(A Graph Extension)是 Apache 软件基金会的开源项目,形态为 PostgreSQL 扩展:在既有关系数据库之上叠加属性图模型与 openCypher 查询能力,让同一套存储、同一套事务与安全体系同时服务关系表和图查询(来源:官方 README)。项目源自 Bitnine 的多模型数据库 AgensGraph 的经验,是当前关系库上做图分析的主流开源选项之一。
版本按 PostgreSQL 大版本分支发布:1.8.0 已覆盖 PG15 与 PG18 分支(2026 年 8-9 月发布),PG19 分支已推进至 1.8.0-rc0;此前 1.7.0 覆盖 PG17/PG18,1.6.0 覆盖 PG14~PG17(来源:GitHub Releases,查询日期 2026-10-18)。
2.2 许可与社区
采用 Apache-2.0 许可(已核验仓库 LICENSE 文件),GitHub 星标约 4.9k,开发节奏活跃(查询日期 2026-10-18)。
三、核心概念与工作方式
AGE 为扩展形态、无独立服务进程,依附 PostgreSQL 实例运行,本章介绍其核心概念。
3.1 装载与目录模型
每个会话使用 AGE 前需装载扩展,AGE 的全部对象安装在 ag_catalog 模式下(来源:官方 README 与手册):
CREATE EXTENSION age; -- 装载扩展(每库一次)
LOAD 'age'; -- 每会话装载运行时
SET search_path = ag_catalog, "$user", public; -- 每会话调整搜索路径
图以 create_graph('图名') 创建,图内顶点/边按标签(vlabel/elabel)组织,属性值使用 AGE 自有的 agtype 类型(JSON 风格的图数据类型)。
3.2 Cypher 与 SQL 混合执行
图查询通过 cypher() 表函数嵌入 SQL 执行,可与关系表 JOIN、视图、事务共存;查询语言为 openCypher 的实现(MATCH/CREATE/MERGE/WITH/RETURN 等)。1.8.0 版本在 Cypher 能力上有明显增强,新增 shortest_path / all_shortest_paths 函数、reduce() 列表折叠、谓词函数 all()/any()/none()/single()、MERGE ON CREATE SET / ON MATCH SET 等特性,并包含 VLE(可变长度路径)缓存与哈希邻接表等性能优化(来源:GitHub Release Notes v1.8.0,查询日期 2026-10-18)。
3.3 生态与驱动
官方维护 Python、Node.js、JDBC 等驱动(独立仓库/发布),1.8.0 同步更新了 Python 驱动的连接池公开 API 与 Node.js 驱动安全修复(来源:Release Notes)。
四、功能特性
- 属性图模型 + openCypher 查询,与 SQL 在同一事务边界内混用;
- 完整复用 PostgreSQL 能力:索引、权限、备份恢复、逻辑复制、扩展生态;
- VLE 可变长度路径查询(变长遍历),1.8.0 引入哈希邻接表与 VLE 缓存优化;
- 子图能力:
create_subgraph()与子图暂存序列管理(1.8.0 新增); - 顶点/边复合类型与直接字段访问优化、
agtype <-> jsonb双向转换(1.8.0 新增); - 支持
pg_upgrade辅助函数,降低跨 PG 大版本升级成本(1.8.0 新增)。
五、快速上手
以下示例依据官方 README 与用户手册语法(来源:https://github.com/apache/age 与 https://age.apache.org/age-manual/master/ ,查询日期 2026-10-18):
1. 装载扩展并建图:
CREATE EXTENSION age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;
SELECT create_graph('demo_graph');
2. Cypher 写入(建点建边):
SELECT * FROM cypher('demo_graph', $$
CREATE (:Person {name: 'Alice', age: 30})-[:KNOWS]->(:Person {name: 'Bob', age: 25})
$$) AS (v agtype);
3. Cypher 查询(匹配与返回):
SELECT * FROM cypher('demo_graph', $$
MATCH (p:Person) RETURN p.name, p.age
$$) AS (name agtype, age agtype);
4. 与 SQL 混用:cypher() 结果可直接作为子查询与关系表 JOIN,例如把图查询结果按 name agtype 关联业务表字段。
💡 注意:
LOAD 'age'与SET search_path是会话级操作,每次新连接都需要重新执行;驱动侧多数已提供自动装载选项(如 Python 驱动的连接参数)。
六、适用场景与限制
适用场景:
- 已有 PostgreSQL 资产(运维、备份、权限、生态),不想为图场景再引入一套独立存储;
- 社交关系、风控关联、知识图谱、依赖分析等中等规模图查询,需与关系数据强一致混查;
- 希望 SQL + openCypher 双语言、单一事务边界的应用架构。
限制与注意:
- 性能与功能以"扩展"为界:超大规模图遍历、分布式图计算与图算法库相比专用图平台有差距;
- 版本与 PostgreSQL 大版本强绑定,PG 升级需等待对应分支发布(见 2.1);
- Cypher 为 openCypher 子集实现,个别语句特性与 Neo4j 等原生实现存在差异,迁移前需做语法核对;
- 需要管理
ag_catalog模式权限:安装扩展应先于向其他角色授予建模式权限(官方 README 提示)。
七、同类选型对比
| 软件 | 许可 | GitHub Stars | 最近发版 | 版本节奏 | 兼容矩阵要点 |
|---|---|---|---|---|---|
| Apache AGE 1.8.0 | Apache-2.0 | 4.9k | PG15 分支 2026-09-19 | 按 PG 大版本分支约半年一版 | PostgreSQL 15/18(1.8.0),PG19 分支推进中 |
| Neo4j(社区版 5.26.x) | GPL-3.0(社区版) | 17.3k | 5.26.32 @2026-10-08 | 月度补丁滚动 + 年度大版本 | 独立服务;Java/GDI 生态,Bolt 协议 |
| ArangoDB 3.12 | BUSL-1.1 | 14k | v3.12.12.1 @2026-09-29 | 持续发版 | 独立服务;文档+图+KV 多模型 |
| JanusGraph 1.1.0 | Apache-2.0 | 5.9k | 1.1.0 @2024-11-15 | 发版间隔较长(近两年无 minor) | 依赖外部存储(HBase/Cassandra 等)+ 索引后端,TinkerPop API |
数据来源:GitHub Releases / 仓库页面与各项目官方站点,查询日期 2026-10-18。
选型建议:已有 PostgreSQL 且以 openCypher 为主的单库图能力选 AGE;需要独立图平台、图算法与可视化全家桶(可接受社区版 GPL 与企业版商业授权)选 Neo4j;多模型(文档+图)场景可看 ArangoDB(注意 BUSL 许可与生产使用条款);超大规模分布式图处理与 TinkerPop 生态选 JanusGraph,但需评估其近两年发版放缓的维护风险。
八、参考链接
- GitHub 仓库与 README:https://github.com/apache/age
- 发布页与 Release Notes:https://github.com/apache/age/releases
- 官方用户手册:https://age.apache.org/age-manual/master/
- 项目主页:https://age.apache.org/
- Neo4j:https://neo4j.com/ ;ArangoDB:https://arangodb.com/ ;JanusGraph:https://janusgraph.org/