Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CN/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,11 @@
*** xref:master/ecosystem_components/pg_ai_query.adoc[pg_ai_query]
*** xref:master/ecosystem_components/pg_partman.adoc[pg_partman]
*** xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer]
*** xref:master/ecosystem_components/age.adoc[age]
*** xref:master/ecosystem_components/pg_curl.adoc[pg_curl]
*** xref:master/ecosystem_components/pg_textsearch.adoc[pg_textsearch]
*** xref:master/ecosystem_components/pg_hint_plan.adoc[pg_hint_plan]
*** xref:master/ecosystem_components/redis_fdw.adoc[redis_fdw]
*** xref:master/ecosystem_components/redis_fdw.adoc[redis_fdw]
* 监控运维
** xref:master/getting-started/daily_monitoring.adoc[日常监控]
** xref:master/getting-started/daily_maintenance.adoc[日常维护]
Expand Down
189 changes: 189 additions & 0 deletions CN/modules/ROOT/pages/master/ecosystem_components/age.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
:sectnums:
:sectnumlevels: 5

= Apache AGE

== 概述

Apache AGE 是一个 PostgreSQL 扩展,为关系型数据库提供图数据库处理能力。AGE 代表 *Adaptive Graph Engine*(自适应图引擎),它将图数据库的功能引入 PostgreSQL,允许用户在同一数据库中同时使用关系模型和图模型。

Apache AGE 是 Apache 软件基金会的顶级项目,完全兼容 openCypher 查询语言(Neo4j 使用的图查询语言)。

*核心特性:*

[cols="1,2"]
|===
| 特性 | 描述

| openCypher 支持
| 完整支持 openCypher 查询语言,行业标准的图查询语言

| 混合数据库
| 在同一数据库中同时使用关系型和图数据模型

| ACID 事务
| 继承 PostgreSQL 的完整 ACID 事务支持

| SQL 集成
| 可将 Cypher 图查询与 SQL 查询无缝集成

| 属性图模型
| 支持带有属性的顶点和边的属性图模型

| 图遍历
| 高效的图遍历和模式匹配能力

| 免费开源
| Apache 2.0 许可证,完全开源
|===

== 应用场景

* 社交网络分析(好友关系、关注关系、影响力分析)
* 知识图谱构建与推理
* 欺诈检测(金融交易网络分析)
* 推荐系统(基于关系链的推荐)
* 网络与 IT 基础设施管理
* 路径规划与物流优化
* 访问控制与权限管理

== 安装

[TIP]
源码测试安装环境为 Ubuntu 24.04。

=== 依赖

[literal]
----
# Ubuntu / Debian
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

# 安装 AGE 依赖
sudo apt install python3 python3-pip python3-dev
pip3 install antlr4-runtime4
----

=== 从源码安装

[literal]
----
# 下载 Apache AGE 1.7.0 源码包
wget https://github.com/apache/age/releases/download/PG18%2Fv1.7.0-rc0/apache-age-1.7.0-src.tar.gz

# 解压
tar -xzf apache-age-1.7.0-src.tar.gz
cd apache-age-1.7.0-src

# 编译安装
make install

# 或指定 IvorySQL 安装路径
make install PG_CONFIG=/usr/ivory-5/bin/pg_config
----

=== 验证安装

[literal]
----
# 检查 AGE 扩展
ls /usr/ivory-5/lib/age--*.so
----

== 配置

=== 修改 IvorySQL 配置

编辑 `postgresql.conf` 或 `ivorysql.conf`:

[literal]
----
# 预加载 AGE 扩展(推荐)
shared_preload_libraries = 'age'

# 或者在数据库级别加载(不需要重启)
# shared_preload_libraries = ''
----

[literal]
----
# 重启 IvorySQL 使配置生效
# 使用 systemd
sudo systemctl restart ivorysql-5

# 或手动重启
pg_ctl restart -D /usr/ivory-5/data
----

=== 创建扩展

连接到 IvorySQL 并创建 AGE 扩展:

[literal]
----
# 连接到数据库
psql -U postgres -d postgres

# 创建 AGE 扩展
CREATE EXTENSION age;

# 验证安装
SELECT * FROM pg_extension WHERE extname = 'age';
----

== 使用

[literal]
----
要创建图,使用位于 ag_catalog 命名空间中的 create_graph 函数。

SELECT create_graph('graph_name');

要创建带有标签和属性的单个顶点,使用 CREATE 子句。

SELECT *
FROM cypher('graph_name', $$
CREATE (:label {property:"Node A"})
$$) as (v agtype);

SELECT *
FROM cypher('graph_name', $$
CREATE (:label {property:"Node B"})
$$) as (v agtype);

要在两个节点之间创建边并设置其属性:

SELECT *
FROM cypher('graph_name', $$
MATCH (a:label), (b:label)
WHERE a.property = 'Node A' AND b.property = 'Node B'
CREATE (a)-[e:RELTYPE {property:a.property + '<->' + b.property}]->(b)
RETURN e
$$) as (e agtype);

查询连接的节点:

SELECT * from cypher('graph_name', $$
MATCH (V)-[R]-(V2)
RETURN V,R,V2
$$) as (V agtype, R agtype, V2 agtype);

----

== 管理命令

[literal]
----
-- 列出所有图
SELECT * FROM ag_graph;

-- 删除图(删除所有相关顶点和边)
SELECT drop_graph('graph_name', true);

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

这些插件均经过 IvorySQL 团队的测试和适配,确保在 IvorySQL 环境下稳定运行。用户可以根据业务需求选择合适的插件,进一步提升数据库系统的能力和灵活性。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ sudo dnf install libevent-devel openssl-devel pkgconfig

[literal]
----
git clone https://github.com/pgbouncer/pgbouncer.git
cd pgbouncer
wget https://github.com/pgbouncer/pgbouncer/archive/refs/tags/pgbouncer_1_25_1.zip
unzip pgbouncer_1_25_1.zip
cd pgbouncer_1_25_1

./autogen.sh

Expand Down
1 change: 1 addition & 0 deletions EN/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
*** xref:master/ecosystem_components/pg_stat_monitor.adoc[pg_stat_monitor]
*** xref:master/ecosystem_components/pg_partman.adoc[pg_partman]
*** xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer]
*** xref:master/ecosystem_components/age.adoc[age]
*** xref:master/ecosystem_components/pg_curl.adoc[pg_curl]
*** xref:master/ecosystem_components/pg_textsearch.adoc[pg_textsearch]
*** xref:master/ecosystem_components/pg_hint_plan.adoc[pg_hint_plan]
Expand Down
Loading
Loading