你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Apache AGE(图形扩展)是一个功能强大的 PostgreSQL 扩展,旨在将图形数据库功能无缝集成到 PostgreSQL 生态系统中。 AGE 通过支持直观的 openCypher 查询语言,使用户能够高效且富有表现力地存储和查询图数据,AGE 是在 Apache 孵化器项目下开发的。 它弥合了关系数据和图形数据之间的差距,使开发人员能够管理复杂的关系,并发现传统数据库可能难以揭示的见解。
图形数据(通过节点(实体)和边缘(关系)表示,对于社交网络、建议系统、欺诈检测、网络分析和知识图等应用程序来说越来越重要。 Apache AGE 提供了一个可靠的解决方案,用于处理此类互连的数据,实现高级分析和简化数据管理。
使用 Apache AGE 解锁图形数据功能
使用 Apache AGE 解锁图形数据功能可让开发人员利用 PostgreSQL 中互连数据的全部潜力。 Apache AGE 通过将图形数据库功能直接集成到关系数据库中,实现对复杂关系的无缝探索和分析。 此功能对于需要深入了解数据连接(如社交网络、欺诈检测和建议系统)的应用程序非常有用。 Apache AGE 支持 openCypher 查询语言和可靠的 PostgreSQL 基础,提供了一个可缩放且高效的解决方案,用于管理和查询图形数据。
Apache AGE 的主要功能
- 图形和关系数据集成:AGE 允许在 PostgreSQL 中的图形数据和关系数据之间无缝交互。
- openCypher 查询语言:AGE 支持此广为识别的图形数据库的查询语言,简化了查询编写和维护。
- 可伸缩性和可靠性:在 PostgreSQL 经过验证的体系结构下,AGE 继承了其可伸缩性和企业级可靠性。
为何使用图形数据库?
图形数据库擅长表示和查询复杂且高度互连的关系。 与关系数据库不同,这些数据库需要多个联接或文档数据库,这些数据库未针对深度关系遍历进行优化,因此图形数据库自然会为实体之间的关系建模。 例如,在图形数据库中查询“朋友的朋友”或“两点之间的最短路径”更为直观高效。
AGE 使用 PostgreSQL 符合 ACID 的事务系统,确保图形查询的可靠性与原子性。 这种集成简化了知识图等高级应用程序,这些应用程序通过将事实和概念构建为节点,并将其互连构建为边缘来支持 AI 驱动的搜索和数据生成。
Azure 客户可以启用 AGE 扩展
Azure Database for PostgreSQL 包括 Apache AGE 作为扩展。
这些步骤可帮助你在灵活服务器实例中启用扩展:
访问服务器参数
在 Azure 门户中,导航到 PostgreSQL 灵活服务器实例并选择“服务器参数”选项。
调整以下设置:
- azure.extensions:在参数筛选器中的可用扩展中搜索和启用 AGE。
- shared_preload_libraries:在参数筛选器中搜索和启用 AGE。
选择“保存”以应用这些更改。 服务器会自动重启以激活 AGE 扩展。
注释
如果未能启用 shared_preload_libraries
,则尝试在查询中使用 AGE 架构时会出现以下错误:“错误:第一个密码查询中出现未处理的 cipher(cstring) 函数调用错误”
在 PostgreSQL 中启用 AGE
服务器重启后,使用 psql 解释器连接到 PostgreSQL 实例。 执行以下命令以启用 AGE:
CREATE EXTENSION IF NOT EXISTS AGE CASCADE;
成功后,会看到 CREATE EXTENSION
查询输出。
还可以查询pg_extension目录表,确认已启用 AGE 并检查扩展的版本。
SELECT * FROM pg_extension WHERE extname = 'age';
配置架构路径
AGE 添加了一个名为ag_catalog
的架构,这对于处理图数据至关重要。 通过执行以下作,确保此架构包含在搜索路径中:
SET search_path=ag_catalog,"$user",public;
对于 Python,可以通过执行以下命令来设置架构路径:
import psycopg as pg
with pg.Connection.connect(con_str + " options='-c search_path=ag_catalog,\"$user\",public'") as con:
也可以在应用程序中以编程方式配置它。
通过执行这些步骤,可以确保 PostgreSQL 实例已正确配置为使用 AGE 扩展的功能。 AGE 扩展直接在 PostgreSQL 中提供高级图形数据库功能。 此设置允许将图形查询无缝集成到应用程序中、解锁强大的数据关系和见解。 启用和配置 AGE 扩展后,现在可以在 PostgreSQL 环境中探索图形分析的全部潜力。
ag_catalog架构中的重要表
ag_graph
ag_label
ag_graph
在 Apache AGE 的 ag_catalog 模式中,ag_graph 表是一个存储库,用于存储通过 ag_catalog.create_graph
函数在 PostgreSQL 中创建的图形相关元数据。 具体而言,它维护图形的名称和关联的命名空间等详细信息,该命名空间充当 PostgreSQL 中的架构。 此命名空间组织图形的结构,并包含用于存储顶点和边缘数据的表。
\d+ ag_graph
Table "ag_catalog.ag_graph"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
-----------+--------------+-----------+----------+---------+---------+-------------+--------------+-------------
graphid | oid | | not null | | plain | | |
name | name | | not null | | plain | | |
namespace | regnamespace | | not null | | plain | | |
Indexes:
"ag_graph_graphid_index" UNIQUE, btree (graphid)
"ag_graph_name_index" UNIQUE, btree (name)
"ag_graph_namespace_index" UNIQUE, btree (namespace)
Referenced by:
TABLE "ag_label" CONSTRAINT "fk_graph_oid" FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap
ag_label
ag_label 表存储有关 AGE 图中使用的标签的元数据。 它跟踪这些标签,将它们与其各自的图形相关联,并定义它们是否表示顶点或边缘。 该条目包括标签的唯一 ID、关联的图形、任何索引以及存储数据的基础 PostgreSQL 表。
\d+ ag_label
Table "ag_catalog.ag_label"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
----------+------------+-----------+----------+---------+---------+-------------+--------------+-------------
name | name | | not null | | plain | | |
graph | oid | | not null | | plain | | |
id | label_id | | | | plain | | |
kind | label_kind | | | | plain | | |
relation | regclass | | not null | | plain | | |
seq_name | name | | not null | | plain | | |
Indexes:
"ag_label_graph_oid_index" UNIQUE, btree (graph, id)
"ag_label_name_graph_index" UNIQUE, btree (name, graph)
"ag_label_relation_index" UNIQUE, btree (relation)
"ag_label_seq_name_graph_index" UNIQUE, btree (seq_name, graph)
Foreign-key constraints:
- `fk_graph_oid` FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap