Apache AGE 1.8 介绍与选型指南

PostgreSQL 图扩展 Apache AGE 1.8:属性图与 openCypher、agtype 与 cypher() 混合查询、1.8 新特性与 Neo4j/ArangoDB/JanusGraph 选型对比。

Apache AGE图数据库PostgreSQLApache2026/10/18

Apache AGE 1.8 介绍与选型指南

目标:讲清 Apache AGE 1.8(PostgreSQL 图扩展)的定位、核心概念、openCypher 支持与同类图数据库选型对比。本文为认知篇,全部论断基于官方文档、GitHub Release 与官方仓库联网溯源(查询日期 2026-10-18),不做本地安装实测。

一、信息基准

二、软件概述

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.0Apache-2.04.9kPG15 分支 2026-09-19按 PG 大版本分支约半年一版PostgreSQL 15/18(1.8.0),PG19 分支推进中
Neo4j(社区版 5.26.x)GPL-3.0(社区版)17.3k5.26.32 @2026-10-08月度补丁滚动 + 年度大版本独立服务;Java/GDI 生态,Bolt 协议
ArangoDB 3.12BUSL-1.114kv3.12.12.1 @2026-09-29持续发版独立服务;文档+图+KV 多模型
JanusGraph 1.1.0Apache-2.05.9k1.1.0 @2024-11-15发版间隔较长(近两年无 minor)依赖外部存储(HBase/Cassandra 等)+ 索引后端,TinkerPop API

数据来源:GitHub Releases / 仓库页面与各项目官方站点,查询日期 2026-10-18。

选型建议:已有 PostgreSQL 且以 openCypher 为主的单库图能力选 AGE;需要独立图平台、图算法与可视化全家桶(可接受社区版 GPL 与企业版商业授权)选 Neo4j;多模型(文档+图)场景可看 ArangoDB(注意 BUSL 许可与生产使用条款);超大规模分布式图处理与 TinkerPop 生态选 JanusGraph,但需评估其近两年发版放缓的维护风险。

八、参考链接