Skip to content

Commit 5b4875a

Browse files
authored
Merge pull request #251 from NotHimmel/master
docs: add Apache AGE documentation
2 parents 3b73750 + d81f7e4 commit 5b4875a

File tree

8 files changed

+374
-7
lines changed

8 files changed

+374
-7
lines changed

CN/modules/ROOT/nav.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@
5555
*** xref:master/ecosystem_components/pg_ai_query.adoc[pg_ai_query]
5656
*** xref:master/ecosystem_components/pg_partman.adoc[pg_partman]
5757
*** xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer]
58+
*** xref:master/ecosystem_components/age.adoc[age]
5859
*** xref:master/ecosystem_components/pg_curl.adoc[pg_curl]
5960
*** xref:master/ecosystem_components/pg_textsearch.adoc[pg_textsearch]
6061
*** xref:master/ecosystem_components/pg_hint_plan.adoc[pg_hint_plan]
61-
*** xref:master/ecosystem_components/redis_fdw.adoc[redis_fdw]
62+
*** xref:master/ecosystem_components/redis_fdw.adoc[redis_fdw]
6263
* 监控运维
6364
** xref:master/getting-started/daily_monitoring.adoc[日常监控]
6465
** xref:master/getting-started/daily_maintenance.adoc[日常维护]
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
:sectnums:
2+
:sectnumlevels: 5
3+
4+
= Apache AGE
5+
6+
== 概述
7+
8+
Apache AGE 是一个 PostgreSQL 扩展,为关系型数据库提供图数据库处理能力。AGE 代表 *Adaptive Graph Engine*(自适应图引擎),它将图数据库的功能引入 PostgreSQL,允许用户在同一数据库中同时使用关系模型和图模型。
9+
10+
Apache AGE 是 Apache 软件基金会的顶级项目,完全兼容 openCypher 查询语言(Neo4j 使用的图查询语言)。
11+
12+
*核心特性:*
13+
14+
[cols="1,2"]
15+
|===
16+
| 特性 | 描述
17+
18+
| openCypher 支持
19+
| 完整支持 openCypher 查询语言,行业标准的图查询语言
20+
21+
| 混合数据库
22+
| 在同一数据库中同时使用关系型和图数据模型
23+
24+
| ACID 事务
25+
| 继承 PostgreSQL 的完整 ACID 事务支持
26+
27+
| SQL 集成
28+
| 可将 Cypher 图查询与 SQL 查询无缝集成
29+
30+
| 属性图模型
31+
| 支持带有属性的顶点和边的属性图模型
32+
33+
| 图遍历
34+
| 高效的图遍历和模式匹配能力
35+
36+
| 免费开源
37+
| Apache 2.0 许可证,完全开源
38+
|===
39+
40+
== 应用场景
41+
42+
* 社交网络分析(好友关系、关注关系、影响力分析)
43+
* 知识图谱构建与推理
44+
* 欺诈检测(金融交易网络分析)
45+
* 推荐系统(基于关系链的推荐)
46+
* 网络与 IT 基础设施管理
47+
* 路径规划与物流优化
48+
* 访问控制与权限管理
49+
50+
== 安装
51+
52+
[TIP]
53+
源码测试安装环境为 Ubuntu 24.04。
54+
55+
=== 依赖
56+
57+
[literal]
58+
----
59+
# Ubuntu / Debian
60+
sudo apt install build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt-dev libssl-dev libxml2-utils xsltproc ccache libssl-dev pkg-config
61+
62+
# 安装 AGE 依赖
63+
sudo apt install python3 python3-pip python3-dev
64+
pip3 install antlr4-runtime4
65+
----
66+
67+
=== 从源码安装
68+
69+
[literal]
70+
----
71+
# 下载 Apache AGE 1.7.0 源码包
72+
wget https://github.com/apache/age/releases/download/PG18%2Fv1.7.0-rc0/apache-age-1.7.0-src.tar.gz
73+
74+
# 解压
75+
tar -xzf apache-age-1.7.0-src.tar.gz
76+
cd apache-age-1.7.0-src
77+
78+
# 编译安装
79+
make install
80+
81+
# 或指定 IvorySQL 安装路径
82+
make install PG_CONFIG=/usr/ivory-5/bin/pg_config
83+
----
84+
85+
=== 验证安装
86+
87+
[literal]
88+
----
89+
# 检查 AGE 扩展
90+
ls /usr/ivory-5/lib/age--*.so
91+
----
92+
93+
== 配置
94+
95+
=== 修改 IvorySQL 配置
96+
97+
编辑 `postgresql.conf` 或 `ivorysql.conf`:
98+
99+
[literal]
100+
----
101+
# 预加载 AGE 扩展(推荐)
102+
shared_preload_libraries = 'age'
103+
104+
# 或者在数据库级别加载(不需要重启)
105+
# shared_preload_libraries = ''
106+
----
107+
108+
[literal]
109+
----
110+
# 重启 IvorySQL 使配置生效
111+
# 使用 systemd
112+
sudo systemctl restart ivorysql-5
113+
114+
# 或手动重启
115+
pg_ctl restart -D /usr/ivory-5/data
116+
----
117+
118+
=== 创建扩展
119+
120+
连接到 IvorySQL 并创建 AGE 扩展:
121+
122+
[literal]
123+
----
124+
# 连接到数据库
125+
psql -U postgres -d postgres
126+
127+
# 创建 AGE 扩展
128+
CREATE EXTENSION age;
129+
130+
# 验证安装
131+
SELECT * FROM pg_extension WHERE extname = 'age';
132+
----
133+
134+
== 使用
135+
136+
[literal]
137+
----
138+
要创建图,使用位于 ag_catalog 命名空间中的 create_graph 函数。
139+
140+
SELECT create_graph('graph_name');
141+
142+
要创建带有标签和属性的单个顶点,使用 CREATE 子句。
143+
144+
SELECT *
145+
FROM cypher('graph_name', $$
146+
CREATE (:label {property:"Node A"})
147+
$$) as (v agtype);
148+
149+
SELECT *
150+
FROM cypher('graph_name', $$
151+
CREATE (:label {property:"Node B"})
152+
$$) as (v agtype);
153+
154+
要在两个节点之间创建边并设置其属性:
155+
156+
SELECT *
157+
FROM cypher('graph_name', $$
158+
MATCH (a:label), (b:label)
159+
WHERE a.property = 'Node A' AND b.property = 'Node B'
160+
CREATE (a)-[e:RELTYPE {property:a.property + '<->' + b.property}]->(b)
161+
RETURN e
162+
$$) as (e agtype);
163+
164+
查询连接的节点:
165+
166+
SELECT * from cypher('graph_name', $$
167+
MATCH (V)-[R]-(V2)
168+
RETURN V,R,V2
169+
$$) as (V agtype, R agtype, V2 agtype);
170+
171+
----
172+
173+
== 管理命令
174+
175+
[literal]
176+
----
177+
-- 列出所有图
178+
SELECT * FROM ag_graph;
179+
180+
-- 删除图(删除所有相关顶点和边)
181+
SELECT drop_graph('graph_name', true);
182+
183+
-- 查看图统计信息
184+
SELECT
185+
graph_name,
186+
(SELECT count(*) FROM ag_vertex WHERE graph_id = ag_graph.graph_id) AS vertex_count,
187+
(SELECT count(*) FROM ag_edge WHERE graph_id = ag_graph.graph_id) AS edge_count
188+
FROM ag_graph;
189+
----

CN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ IvorySQL 作为一款兼容 Oracle 且基于 PostgreSQL 的高级开源数据库
2525
| 12 | xref:master/ecosystem_components/pg_stat_monitor.adoc[pg_stat_monitor] | 2.3.1 | 收集性能统计数据,并通过统一视图和直方图形式直观展示查询性能指标。 | 性能监控
2626
| 13 | xref:master/ecosystem_components/pg_ai_query.adoc[pg_ai_query] | 0.1.1 | AI驱动的自然语言转SQL扩展,支持多种大语言模型 | AI辅助查询、自然语言数据库交互
2727
| 14 | xref:master/ecosystem_components/pg_partman.adoc[pg_partman] | 5.2 | 辅助管理原生分区表,自动创建、维护、清理分区子表 | 海量数据存储管理
28-
| 15 | xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer] | x.x | |
28+
| 15 | xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer] | 1.25.1 | PostgreSQL 轻量级连接池,提供连接复用和高效连接管理 | 高并发连接管理、连接复用、减少数据库连接开销
2929
| 16 | xref:master/ecosystem_components/pg_curl.adoc[pg_curl] | 2.4 | 基于 libcurl 的网络传输扩展,支持 HTTP/HTTPS、FTP、SMTP、IMAP 等二十余种协议,可在 SQL 中完成各类网络数据传输操作 | REST API 集成、邮件发送、文件传输、外部系统通知
3030
| 17 | xref:master/ecosystem_components/pg_textsearch.adoc[pg_textsearch] | 0.6.1 | 提供全文检索能力,支持文本分词、索引构建与高效全文查询 | 文档检索与内容搜索
3131
| 18 | xref:master/ecosystem_components/pg_hint_plan.adoc[pg_hint_plan] | PG18 | 通过SQL注释中的hints控制执行计划,在不修改SQL逻辑的情况下优化查询性能 | 查询性能优化、执行计划调优、数据库性能分析
3232
| 19 | xref:master/ecosystem_components/redis_fdw.adoc[redis_fdw] | PG18 | 将 Redis 数据映射为 PostgreSQL 外部表,支持通过标准 SELECT/INSERT/UPDATE/DELETE 语句读写 Redis | 统一 SQL 查询、轻量级数据同步、透明化缓存读写及跨库数据分析
33+
| 20 | xref:master/ecosystem_components/age.adoc[Apache AGE] | 1.7.0 | 为 IvorySQL 提供图数据库处理能力,支持 openCypher 查询语言,实现关系型与图数据库的混合使用 | 社交网络分析、知识图谱、欺诈检测、推荐系统、路径规划
3334
|====
3435

3536
这些插件均经过 IvorySQL 团队的测试和适配,确保在 IvorySQL 环境下稳定运行。用户可以根据业务需求选择合适的插件,进一步提升数据库系统的能力和灵活性。

CN/modules/ROOT/pages/master/ecosystem_components/pgbouncer.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ sudo dnf install libevent-devel openssl-devel pkgconfig
4848

4949
[literal]
5050
----
51-
git clone https://github.com/pgbouncer/pgbouncer.git
52-
cd pgbouncer
51+
wget https://github.com/pgbouncer/pgbouncer/archive/refs/tags/pgbouncer_1_25_1.zip
52+
unzip pgbouncer_1_25_1.zip
53+
cd pgbouncer_1_25_1
5354
5455
./autogen.sh
5556

EN/modules/ROOT/nav.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
*** xref:master/ecosystem_components/pg_stat_monitor.adoc[pg_stat_monitor]
5656
*** xref:master/ecosystem_components/pg_partman.adoc[pg_partman]
5757
*** xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer]
58+
*** xref:master/ecosystem_components/age.adoc[age]
5859
*** xref:master/ecosystem_components/pg_curl.adoc[pg_curl]
5960
*** xref:master/ecosystem_components/pg_textsearch.adoc[pg_textsearch]
6061
*** xref:master/ecosystem_components/pg_hint_plan.adoc[pg_hint_plan]

0 commit comments

Comments
 (0)