当您需要处理如社交网络、欺诈检测或知识图谱等包含复杂关联关系的数据时,使用传统SQL进行建模和查询会变得非常繁琐且效率低下。PolarDB PostgreSQL版通过集成开源图引擎Apache AGE,让您可以在同一个集群中,可同时使用标准的SQL和业界主流的openCypher图查询语言。这使您能够高效地存储、查询和分析图数据,轻松应对复杂关系场景。
适用范围
支持的PolarDB PostgreSQL版的版本如下:
PostgreSQL 16(内核小版本2.0.16.8.3.0及以上)
PostgreSQL 15(内核小版本2.0.15.12.4.0及以上)
PostgreSQL 14(内核小版本2.0.14.12.24.0及以上)
可视化工具
您可通过控制台创建一个可视化的图管理工具(基于Apache AGE Viewer),并通过Web界面与图数据进行交互。
步骤一:创建图应用
您可以通过以下两种方式进行创建:
前往PolarDB控制台,单击左侧导航栏的PolarDB AI,并单击新建AI应用。

前往PolarDB控制台,在左侧导航栏单击集群列表,找到符合适用范围的目标集群并进入集群详情页。单击左侧导航栏中的,并单击新建AI应用。

在应用购买页面中,请根据您的需求选择适合的配置:
配置项
说明
付费类型
包年包月:预付费模式。在创建应用时,您需选择固定规格的资源,并预先支付应用的费用。购买周期越长,所享受的折扣也越大。该模式一般适用于业务需求长期稳定的场景。
按量付费:后付费模式。在创建应用时,您需选择固定规格的资源,但无需提前支付应用的费用。该模式根据您实际使用的时长进行计费,一般适用于业务需求灵活的场景。
引擎
固定为PolarDB。
地域
选择应用所在的地理位置。
说明应用购买完成后,不支持更改地域。
应用需与PolarDB PostgreSQL版集群位于同一地域。因此,请选择与PolarDB PostgreSQL版集群相同的地域。
建议将应用与需要连接的ECS创建在同一地域,否则它们将无法通过内网(私网)实现互通,只能通过外网(公网)进行通信,这将无法充分发挥最佳性能。
架构
选择AI应用。
生态
自动填写为源PolarDB集群数据库生态,无需手动填写。
源 PolarDB 集群
选择需要创建应用的PolarDB集群。
版本
自动填写为源PolarDB集群数据库版本,无需手动填写。
AI应用
选择为图管理。
组件集
根据实际业务情况自定义后端组件的数量和规格。
AI应用名
您可以填写自定义的应用名称。
说明不能以http://或者https://开头,且长度2~256个字符。
网络类型
固定为专有网络。
VPC网络
自动填写为源PolarDB集群的专有网络,无需手动填写。
可用区和交换机
配置VPC网络的交换机,建议选择与PolarDB PostgreSQL版集群的主可用区相同的交换机,以发挥最佳网络性能。
如果已有的交换机无法满足您的要求,您可以自行创建交换机。
安全组
配置应用的安全组。
购买数量
选择需要购买的应用数量。
说明每个PolarDB PostgreSQL版集群仅支持购买一个相同类型的AI应用。
仅付费类型为包年包月时,支持配置。
购买时长
选择应用的购买时长。
说明仅付费类型为包年包月时,支持配置。
自动续费
配置是否开启自动续费。为避免因忘记续费而导致业务中断,建议您开启自动续费。
说明仅付费类型为包年包月时,支持配置。
购买成功后,请返回集群的AI应用页面,即可查看新创建的应用。
说明系统需要3~5分钟创建应用,请耐心等待。
步骤二:连接图应用
配置应用白名单:在AI应用列表页面,单击您的应用ID进入应用详情页,并在白名单页签,新增IP白名单分组、选择安全组或配置已有白名单分组。
说明应用白名单与集群白名单相互独立,需进行单独配置。
如果您的ECS实例需要访问应用,可在ECS实例详情页面查看ECS实例的IP地址,并将其填写至IP白名单中。
如果您的ECS实例与应用位于同一VPC内,您可以填写ECS的私网IP地址或其所在VPC网段。
如果您的ECS实例与应用不在同一VPC内,您可填写ECS的公网IP地址,或添加ECS所在的安全组。
如果您本地的服务器、电脑或其他云服务器需要访问应用,请将其公网IP地址添加到IP白名单中。

获取连接地址:在AI应用列表页面,单击您的应用ID进入应用详情页,并在基本信息页签的拓扑图区域中查看私网地址。
说明公网地址需单独申请,请单击申请按钮以进行申请。
公网地址仅提供IP地址和端口,不提供域名。如您有相关需求,可自行绑定域名。

步骤三:创建插件与设置数据库
创建插件:请使用高权限账号执行如下语句。
说明age插件目前暂不支持您手动创建,如需使用该功能,请提交工单与我们联系,以便为您创建插件。CREATE EXTENSION age;设置数据库:对于每次连接,都需要将
ag_catalog添加到search_path以简化查询,并通过get_cypher_keywords函数实现插件的加载:说明使用数据管理 DMS(Data Management)客户端设置
search_path时,可能会存在兼容性问题,您可使用PolarDB-Tools执行相关语句。SET search_path = ag_catalog, "$user", public;强烈建议使用高权限账号设置数据库参数,以永久加载插件,从而在每次连接时无需重复执行上述操作,以简化使用流程。
ALTER DATABASE <dbname> SET search_path = "$user", public, ag_catalog; ALTER DATABASE <dbname> SET session_preload_libraries TO 'age';(可选)允许普通用户使用AGE:在
ag_catalog模式下为普通用户授予USAGE权限。GRANT USAGE ON SCHEMA ag_catalog TO <username>;如果普通用户仅为读写权限用户,需要额外授予创建表的
CREATE权限。GRANT CREATE ON DATABASE <dbname> TO <username>;
步骤四:创建图与插入数据
创建图:在使用图之前,首先需要进行图的创建。创建图使用位于
ag_catalog命名空间中的create_graph函数。语法:
SELECT create_graph('<graph_name>');示例:
SELECT ag_catalog.create_graph('moviedb');插入数据:使用以下SQL语句向
moviedb图中插入示例数据:SELECT * FROM cypher('moviedb', $$ CREATE (matrix:Movie {title: 'The Matrix', released: 1997}) CREATE (cloudAtlas:Movie {title: 'Cloud Atlas', released: 2012}) CREATE (forrestGump:Movie {title: 'Forrest Gump', released: 1994}) CREATE (keanu:Person {name: 'Keanu Reeves', born: 1964}) CREATE (robert:Person {name: 'Robert Zemeckis', born: 1951}) CREATE (tom:Person {name: 'Tom Hanks', born: 1956}) CREATE (tom)-[:ACTED_IN {roles: ['Forrest']}]->(forrestGump) CREATE (tom)-[:ACTED_IN {roles: ['Zachry']}]->(cloudAtlas) CREATE (robert)-[:DIRECTED]->(forrestGump) $$) AS (result1 agtype);其中,包含了6个节点,其中3个的标签为电影(Movie),3个为人员(Person)。3条边,其中2条边的标签为表演(ACTED_IN),1条边为导演(DIRECTED)。关系图如下所示:

步骤五:开发应用
开发应用:您可以通过公网直接访问应用,在AI应用列表页面中单击开发应用,以跳转至图应用的可视化工具的公网地址。或者直接在浏览器地址栏中输入应用的公网IP地址和端口,以访问可视化工具。
说明请先将您的公网IP地址添加至应用白名单中。

在可视化工具的登录页面中输入以下信息:
host:选择您的PolarDB集群的连接地址。
Database Name:填写一个集群内的数据库,若您没有合适的数据库,请返回至集群详情页面中进行创建数据库。
user name:填写一个集群内的数据库账号,请确保其拥有上述数据库的相应访问权限。
password:填写对应数据库账号的密码。

查询数据:在Cypher中,使用
MATCH+RETURN这两个关键字实现数据的查询。其中:MATCH实现模式匹配,用于寻找与指定模式相同的内容。RETURN关键字指定希望从Cypher查询返回的值或结果。
语法:
SELECT * FROM cypher('graph_name', $$ MATCH <patterns>RETURN <variables> $$) AS (result1 agtype);示例:在可视化工具的顶部中输入以下Cypher查询语句:
SELECT * FROM cypher('moviedb', $$ MATCH (m:Person) RETURN m $$) AS (result1 agtype);
验证:执行成功后,您应该能在下方的可视化区域看到
moviedb的三个人员(Person)节点。
步骤六:(可选)释放图应用
当不再需要可视化工具时,可以将其释放以节省成本。在AI应用列表中,找到目标图应用,在操作列中单击释放应用即可。
释放图应用仅会删除用于提供Web界面的可视化工具,不会删除您存储在PolarDB集群中的任何图数据。应用释放后,其公网地址等配置将丢失且无法恢复。
工作原理
核心引擎:PolarDB图数据库功能基于PostgreSQL的
age扩展实现,该扩展由Apache AGE项目提供,兼容OpenCypher查询语法。混合查询:
age扩展使您可以在同一个数据库中同时管理关系型数据(标准表)和图数据。这两种数据可以共存并被分别查询。查询执行:Cypher查询并非直接执行,而是作为字符串参数传递给一个名为
cypher()的PostgreSQL函数。PolarDB解析此字符串,在指定的图中执行Cypher命令,并将结果作为标准的SQL行集返回。数据类型:查询返回的结果列通常是
agtype类型。这是一种类似于JSONB的自定义数据类型,用于封装图元素(如节点、边、路径)的结构化信息。在应用程序中,您通常可以将其作为JSON字符串处理。
计费说明
组件费用:图应用收取后端组件费用,费用根据您选择的组件规格(CPU和内存)和购买时长计算。
存储费用:图应用所产生的数据和文件等将存储在PolarDB PostgreSQL版集群存储空间,
流量与带宽:不收取费用。
相关文档
图数据库快速入门:通过SQL客户端(如psql)直接使用Cypher语句与图数据库交互,此方式适合后端开发和自动化脚本场景。
SQL参考:相关SQL语法是在Apache AGE的基础上进行阿里云图数据库的相关修改。
最佳实践: