用途:Apache AGE 是 PostgreSQL 的图数据库扩展,让关系库具备图查询能力,用 Cypher 语法建模和查询图数据,并与 SQL 混合使用。
主要能力:提供 cypher() 函数执行 Cypher;agtype 是跨 SQL 与 Cypher 边界的唯一类型;图以 PostgreSQL schema 形式存储,标签对应表,顶点和边是带 agtype 属性块的行;支持 CREATE、MATCH、MERGE、UNWIND、SET、DELETE 等子句,以及 SQL 与 Cypher 的 CTE、JOIN 组合。
使用方式:先启用扩展并加载,再设置 search_path,然后创建图。示例:CREATE EXTENSION IF NOT EXISTS age; LOAD 'age'; SET search_path = ag_catalog, "$user", public; SELECT create_graph('my_graph'); 查询时 cypher() 返回 SETOF record,必须显式给出 AS 列清单,例如 SELECT * FROM cypher('g', $$ MATCH (n) RETURN n $$) AS (n agtype); 终止性子句(CREATE/SET/DELETE)也需列清单,返回 0 行。
限制与注意:SET n = {...} 会替换全部属性,合并应使用 +=;CREATE/SET/REMOVE 不能放在 JOIN 中,需包进 CTE;search_path 必须包含 ag_catalog,或全限定 ag_catalog.cypher;agtype 与 SQL 类型比较需显式转换,字符串类型中只能转 varchar;AGE 默认不创建索引,需自行用 EXPLAIN 验证;避免无界路径 [:REL*];一个顶点最多一个标签;agtype_build_map() 受 PostgreSQL 函数 100 参数上限影响;部分 agtype 函数传入 null 可能崩溃。纯聚合或纯 OLTP 场景建议改用 SQL。
适用场景:需要在 PostgreSQL 内做图建模、关系遍历、混合 SQL 与图查询的应用。具体版本、收费与平台信息暂未提供。