age
Apache AGE,图数据库扩展 (Deb可用)
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
age | 1.7.0 | FEAT | Apache-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2700 | age | 否 | 是 | 是 | 是 | 否 | 否 | ag_catalog |
| 相关扩展 | pg_graphql rum pg_jsonschema jsquery ltree http pg_net citus |
|---|
pg18/17 = 1.7.0
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 1.7.0 | 1817161514 | age | - |
| RPM | PIGSTY | 1.7.0 | 1817161514 | apache-age_$v | - |
| DEB | PGDG | 1.7.0 | 1817161514 | postgresql-$v-age | - |
构建
您可以使用 pig build 命令构建 age 扩展的 RPM / DEB 包:
pig build pkg age # 构建 RPM / DEB 包
安装
您可以直接安装 age 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install age; # 当前活跃 PG 版本安装
pig ext install -y age -v 18 # PG 18
pig ext install -y age -v 17 # PG 17
pig ext install -y age -v 16 # PG 16
pig ext install -y age -v 15 # PG 15
pig ext install -y age -v 14 # PG 14
dnf install -y apache-age_18 # PG 18
dnf install -y apache-age_17 # PG 17
dnf install -y apache-age_16 # PG 16
dnf install -y apache-age_15 # PG 15
dnf install -y apache-age_14 # PG 14
apt install -y postgresql-18-age # PG 18
apt install -y postgresql-17-age # PG 17
apt install -y postgresql-16-age # PG 16
apt install -y postgresql-15-age # PG 15
apt install -y postgresql-14-age # PG 14
预加载配置:
shared_preload_libraries = 'age';
创建扩展:
CREATE EXTENSION age;
用法
Apache AGE 为 PostgreSQL 带来了图数据库能力,使用 openCypher 查询语言。它支持 SQL 与 Cypher 的混合查询、顶点和边上的属性索引,以及多图查询。
每个会话需要加载扩展:
CREATE EXTENSION age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;
图操作
创建图:
SELECT create_graph('my_graph');
创建顶点:
SELECT * FROM cypher('my_graph', $$
CREATE (:Person {name: 'Alice', age: 30})
$$) AS (v agtype);
SELECT * FROM cypher('my_graph', $$
CREATE (:Person {name: 'Bob', age: 25})
$$) AS (v agtype);
创建边:
SELECT * FROM cypher('my_graph', $$
MATCH (a:Person), (b:Person)
WHERE a.name = 'Alice' AND b.name = 'Bob'
CREATE (a)-[e:KNOWS {since: 2020}]->(b)
RETURN e
$$) AS (e agtype);
查询图:
SELECT * FROM cypher('my_graph', $$
MATCH (v)-[r]-(v2)
RETURN v, r, v2
$$) AS (v agtype, r agtype, v2 agtype);
Cypher 查询功能
AGE 支持标准 Cypher 子句,包括 MATCH、CREATE、SET、DELETE、RETURN、WITH、WHERE、ORDER BY、SKIP 和 LIMIT。数据使用 agtype 数据类型存储,它扩展了 JSON,增加了顶点、边和路径等图特有类型。
可变长度路径模式匹配:
SELECT * FROM cypher('my_graph', $$
MATCH (a:Person)-[:KNOWS*1..3]->(b:Person)
RETURN a.name, b.name
$$) AS (source agtype, target agtype);
混合 SQL/Cypher 查询允许将图查询结果与关系表进行关联:
SELECT t.*, c.* FROM my_table t
JOIN cypher('my_graph', $$
MATCH (n:Person) RETURN n.name, id(n)
$$) AS c(name agtype, id agtype)
ON t.graph_id = c.id;