📢📢📢📣📣📣
作者:IT邦德
中国DBA联盟(ACDU)成员,15年DBA工作经验
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝15万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理
文章目录
- 1.图数据库介绍
- 2.安装PGX
-
- [2.1 创建用户](#2.1 创建用户)
- [2.2 JDK安装](#2.2 JDK安装)
- [2.3 Graph Server安装](#2.3 Graph Server安装)
- 3.创建PGQL
-
- [3.1 PGQL创建属性图](#3.1 PGQL创建属性图)
- [3.2 PGQL属性图的元数据](#3.2 PGQL属性图的元数据)
- [3.3 PGQL属性图](#3.3 PGQL属性图)
1.图数据库介绍

传统的关系型数据库在表达复杂、多层级的连接关系时非常低效。例如,查询"A的朋友的朋友的朋友"或追踪一笔可疑资金在多层账户间的流向,可能需要几十次甚至上百次SQL JOIN操作,性能差且代码复杂。Oracle图数据库正是为了解决这类"连接数据"的查询和分析而设计的。
Oracle图数据库是一个强大、集成、企业就绪的解决方案。它最大的优势在于"融合"------将图数据处理能力无缝集成到你现有的Oracle数据库基础设施中,让你能利用标准的SQL和开发工具,应对传统关系型数据库难以处理的复杂关系分析挑战,无论是在欺诈检测、供应链追溯还是AI知识图谱构建中,都能发挥巨大价值。
Oracle图数据库提供了一整套强大、开箱即用的功能:
- 两种图模型支持
属性图:侧重分析,用于社交网络、欺诈检测、知识图谱。通过SQL或PGQL(Property Graph Query Language)查询。
RDF图:侧重语义,用于元数据管理、数据集成和知识表示。支持标准的SPARQL查询语言。 - 内置超过80种并行内存中算法
无需自己编写复杂的算法,Oracle Graph直接内置了80多种高性能、并行化的图分析算法,包括:
社区检测:Louvain、标签传播、强连通分量等
路径查找:Dijkstra最短路径、广度优先搜索等
排名与行走:PageRank、个性化PageRank、介数中心性等
机器学习:DeepWalk、GraphWise等图神经网络相关算法 - SQL Property Graphs (SQL属性图)
从Oracle Database 23ai开始,Oracle率先实现了最新的SQL:2023标准。这意味着你可以用纯SQL语法来定义和查询属性图,极大降低了DBA和开发者的学习成本。 - GraphRAG:知识图谱增强检索
这是AI时代的核心能力。Oracle Graph将知识图谱与RAG结合,能显著提升AI问答的准确性和可解释性,让你能追溯AI回答的源头。
2.安装PGX
安装Graph Server,PGX,下载页面输入Oracle Graph Server and Client

2.1 创建用户
alter session set container=SALPDB1;
create user MY_CUSTOM identified by oracle;
grant connect,resource to MY_CUSTOM;
GRANT GRAPH_DEVELOPER TO MY_CUSTOM;
GRANT GRAPH_ADMINISTRATOR to MY_CUSTOM;
2.2 JDK安装
https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
java -version 检查一下 JDK 版本是否符合要求
安装 OpenJDK 17
yum install -y java-17-openjdk-devel
配置系统默认 Java 版本
alternatives --config java
在列表中选择 java-17-openjdk 对应的编号,回车确认
确认安装是否成功
java -version

2.3 Graph Server安装
mount /dev/cdrom /mnt
rpm -i oracle-graph-26.1.0.x86_64.rpm
bash
配置文件修改
vim /etc/oracle/graph/pgx.conf
"jdbc_url": "jdbc:oracle:thin:@192.168.2.14:1521/salpdb1"
vim /etc/oracle/graph/server.conf
{
"port": 7007,
"enable_tls": false,
"enable_client_authentication": false,
"working_dir": "/opt/oracle/graph/pgx/tmp_data"
}
chown -R :oraclegraph /opt/oracle/graph/pgx/tmp_data
chmod 0770 /opt/oracle/graph/pgx/tmp_data
systemctl daemon-reload
systemctl start pgx
systemctl start pgx

3.创建PGQL
PGQL的全称为Property Graph Query Language
3.1 PGQL创建属性图
CREATE PROPERTY GRAPH语句使用PGQL方式会创建一个包含图元数据的类似于视图的对象。这个图可以使用PGQL查询。
PGQL属性图直接在存在于关系型表中数据上创建。这些图存储在数据库表中,他们有自己的SCHEMA。
PGQL属性图的一个主要的好处就是所有数据库表的更新会立即在图中展示。
1)PGQL属性图的元数据表
当通过CREATE PROPERTY GRAPH创建PGQL属性图时,元数据表会在本SCHEMA下创建。
2)创建一个PGQL属性图
CREATE PROPERTY GRAPH语句的OPTIONS子句可以指定创建属性图的执行模式。
可以使用RDBMS Java API或通过SQLcl(就是之前说过的sql)来创建PGQL属性图。
可以通过图可视化工具或SQLcl来查询PGQL属性图。
bash
ALTER USER MY_CUSTOM QUOTA UNLIMITED ON SYSTEM;
DROP PROPERTY GRAPH my_custom.students_network;
CREATE PROPERTY GRAPH students_network
VERTEX TABLES (
persons KEY (person_id)
LABEL person
PROPERTIES (person_id, name, birthdate AS dob),
university KEY (id)
)
EDGE TABLES (
friends
KEY (friendship_id)
SOURCE KEY (person_a) REFERENCES persons(person_id)
DESTINATION KEY (person_b) REFERENCES persons(person_id)
PROPERTIES (friendship_id, meeting_date),
student_of
SOURCE KEY (s_person_id) REFERENCES persons(person_id)
DESTINATION KEY (s_univ_id) REFERENCES university(id)
PROPERTIES (subject)
) OPTIONS (PG_PGQL);

3.2 PGQL属性图的元数据
可以使用PGQL查询从一个名为PROPERTY_GRAPH_METADATA的内建图中查询PGQL属性图的元数据,图的结构如下:
SELECT e
FROM MATCH ()-[e]->() ON PROPERTY_GRAPH_METADATA
LIMIT 100

3.3 PGQL属性图
这里操作能用PGX来实现
SELECT e
FROM MATCH ()-[e]->() ON STUDENTS_NETWORK
LIMIT 100
