Oracle 26ai 图数据库

📢📢📢📣📣📣

作者: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图数据库提供了一整套强大、开箱即用的功能:

  1. 两种图模型支持
    属性图:侧重分析,用于社交网络、欺诈检测、知识图谱。通过SQL或PGQL(Property Graph Query Language)查询。
    RDF图:侧重语义,用于元数据管理、数据集成和知识表示。支持标准的SPARQL查询语言。
  2. 内置超过80种并行内存中算法
    无需自己编写复杂的算法,Oracle Graph直接内置了80多种高性能、并行化的图分析算法,包括:
    社区检测:Louvain、标签传播、强连通分量等
    路径查找:Dijkstra最短路径、广度优先搜索等
    排名与行走:PageRank、个性化PageRank、介数中心性等
    机器学习:DeepWalk、GraphWise等图神经网络相关算法
  3. SQL Property Graphs (SQL属性图)
    从Oracle Database 23ai开始,Oracle率先实现了最新的SQL:2023标准。这意味着你可以用纯SQL语法来定义和查询属性图,极大降低了DBA和开发者的学习成本。
  4. GraphRAG:知识图谱增强检索
    这是AI时代的核心能力。Oracle Graph将知识图谱与RAG结合,能显著提升AI问答的准确性和可解释性,让你能追溯AI回答的源头。

2.安装PGX

安装Graph Server,PGX,下载页面输入Oracle Graph Server and Client

https://edelivery.oracle.com/

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

https://pgql-lang.org/

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

相关推荐
小兔崽子去哪了6 分钟前
Docker 安装 PostgreSQL
数据库·后端·postgresql
野犬寒鸦10 分钟前
Redis热点key问题解析与实战解决方案(附大厂实际方案讲解)
服务器·数据库·redis·后端·缓存·bootstrap
mldlds35 分钟前
Windows安装Redis图文教程
数据库·windows·redis
Y001112361 小时前
JDBC原理
java·开发语言·数据库·jdbc
超级大只老咪1 小时前
固定个数的状态,需要按顺序无限循环切换
数据库
@insist1231 小时前
数据库系统工程师-云计算与大数据核心知识
大数据·数据库·云计算·软考·数据库系统工程师·软件水平考试
皙然2 小时前
深度解析:关系型数据库与非关系型数据库(区别+原理+适用场景,一文吃透)
数据库·nosql
夕除2 小时前
Mysql
数据库·mysql
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-03-28
数据库·人工智能·经验分享·神经网络·chatgpt
知识分享小能手2 小时前
MongoDB入门学习教程,从入门到精通,MongoDB聚合框架(7)
数据库·学习·mongodb