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

相关推荐
就叫_这个吧5 小时前
Redis从基础命令到核心机制简单介绍
数据库·redis·缓存
dear_bi_MyOnly5 小时前
【MyBatis 操作数据库】
java·数据库·学习·mybatis·学习方法
DBA_G6 小时前
南大通用GBase 8s数据库新存储引擎核心能力二
数据库·微服务·架构
衣乌安、8 小时前
数据库事务原理与回滚机制
数据库
CodexDave9 小时前
PostgreSQL 明明有索引却选了 Nested Loop:从行数误判修正执行计划
数据库·postgresql·执行计划·扩展统计·nestedloop
czhaii10 小时前
STC ai助手单片机工程项目创建实例
数据库·mongodb
山峰哥11 小时前
数据库性能救星:Explain执行计划深度拆解
服务器·开发语言·数据库·sql·启发式算法
oradh11 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
YOU OU11 小时前
Redis哨兵 & 集群
数据库·redis·sentinel
小罗水12 小时前
第8章 文档解析与文本切片
数据库·spring·spring cloud·微服务