第九章 Apache AGE 集成与图数据库实战

第一节 Apache AGE 简介与安装

目标:正式深入学习 Apache AGE,理解其架构和工作原理,并成功在 PostgreSQL 环境中完成 AGE 的安装和配置。

经过前两章对 ltreeJSONB 模拟图的探索,我们已经深刻理解了在 PostgreSQL 中处理图状数据的不同策略及其权衡。现在,我们将进入一个功能更强大、更专业的领域——使用 Apache AGE (A Graph Extension) 将 PostgreSQL 转变为一个真正的多模型图数据库。


什么是 Apache AGE?

Apache AGE 是一个基于 PostgreSQL 构建的图数据库扩展。它的名字来源于 “A Graph Extension”。作为一个 Apache 软件基金会的顶级项目,它旨在为 PostgreSQL 用户提供一个健壮、功能完备的图数据处理能力。

核心架构理念: AGE 并非一个独立的数据库,也不是一个中间件。它是一个深度集成到 PostgreSQL 内核的扩展。这意味着:

  • 数据共存:图数据(节点和边)与关系数据(表和行)存储在同一个数据库实例中。
  • 事务统一:你可以用一个事务同时修改关系数据和图数据,享受 ACID 保证。
  • 生态复用:AGE 可以直接利用 PostgreSQL 成熟的备份、恢复、安全、高可用等所有运维工具和生态。

AGE Architecture 图片来源: Apache AGE 官方网站


安装 Apache AGE

安装 AGE 比安装 contrib 模块中的扩展要复杂一些,因为它需要针对你正在使用的 PostgreSQL 版本进行编译。

先决条件

  • 一个正在运行的 PostgreSQL 实例 (例如,版本 11 到 15,请查阅 AGE 官方文档以获取最新的版本兼容性列表)。
  • PostgreSQL 的开发库 (postgresql-server-dev-XX)。
  • 标准的编译工具链 (build-essential, git, cmake 等)。

从源码编译安装 (推荐方法)

这是最通用、最可靠的安装方法。

1. 安装编译依赖

1
2
3
4
5
6
7
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install -y build-essential postgresql-server-dev-15 flex bison

# Red Hat/CentOS
sudo dnf groupinstall "Development Tools"
sudo dnf install postgresql15-server-devel

(请将版本号 15 替换为你自己的 PostgreSQL 版本)

2. 克隆 AGE 源码 从官方 GitHub 仓库克隆最新的稳定版本。

1
2
3
4
git clone https://github.com/apache/age.git
cd age
# 切换到一个稳定的发行版标签,例如
git checkout PG15/v1.4.0

3. 编译和安装

1
2
3
# 确保 pg_config 在你的 PATH 中
# 如果不在,可以这样指定:sudo PG_CONFIG=/path/to/pg_config make install
sudo make install

make install 命令会自动将编译好的 AGE 文件(.so, .sql, .control)复制到 PostgreSQL 正确的目录中。

4. 重启 PostgreSQL 服务 为了让 PostgreSQL 加载新的共享库,必须重启服务。

1
sudo systemctl restart postgresql-15

在数据库中配置 AGE

安装完成后,还需要在数据库层面进行一些配置。

1. 修改 postgresql.conf 你需要将 AGE 添加到 shared_preload_libraries 配置项中。这个设置告诉 PostgreSQL 在启动时预加载 AGE 的共享库,这是 AGE 正常工作所必需的。

找到 postgresql.conf 文件 (通常在 /etc/postgresql/15/main/postgresql.conf),添加或修改以下行:

1
shared_preload_libraries = 'age'

如果已有其他库(如 pg_stat_statements),用逗号分隔: shared_preload_libraries = 'pg_stat_statements,age'

再次重启 PostgreSQL 服务以使配置生效。

2. 在数据库中创建扩展 连接到你希望使用 AGE 的数据库,然后执行:

1
CREATE EXTENSION age;

3. 验证安装 执行一个简单的 AGE 函数来验证是否一切正常。

1
2
SELECT age.age_version();
-- 如果成功,会返回 AGE 的版本号,如 '1.4.0'

📌 小结

成功安装和配置 Apache AGE 是踏入 PostgreSQL 图数据库世界的第一步,也是最关键的一步。虽然过程比普通扩展稍显复杂,但它为你解锁了前所未有的数据处理能力。

关键回顾

  • AGE 是一个深度集成的 PostgreSQL 扩展。
  • 安装通常需要从源码编译。
  • 必须age 添加到 shared_preload_libraries 并重启 PostgreSQL。
  • 最后在目标数据库中 CREATE EXTENSION age

在下一节中,我们将开始学习 AGE 的核心——使用 openCypher 查询语言来创建和操作图数据。