Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Database 23ai Developer Tech Day : グラフ -...

Avatar for oracle4engineer oracle4engineer PRO
September 11, 2025
5

Oracle Database 23ai Developer Tech Day : グラフ -データのつながり

Avatar for oracle4engineer

oracle4engineer PRO

September 11, 2025
Tweet

More Decks by oracle4engineer

Transcript

  1. グラフデータモデル • グラフモデルの実装 •エッジは向きを持ってもよい •頂点、エッジは属性を持ってもよい Copyright © 2025 Oracle and/or

    its affiliates 織田信長 年齢:40歳 部下 雇用年:1554年 羽柴秀吉 年齢:37歳 蜂須賀正勝 年齢:48歳 部下 雇用年:1566年 属性(プロパティ)を持つため プロパティグラフモデル とも呼ばれる 5
  2. グラフデータモデル • グラフモデルの実装 •エッジは向きを持ってもよい •頂点、エッジは属性を持ってもよい •頂点、エッジは種類を持ってもよい Copyright © 2025 Oracle

    and/or its affiliates (人物) 織田信長 年齢:40歳 部下 雇用年:1554年 (人物) 羽柴秀吉 年齢:37歳 (人物) 蜂須賀正勝 年齢:48歳 部下 雇用年:1566年 居城 (城) 岐阜城 種類のラベルを持つため ラベル付きプロパティグラフモデル とも呼ばれる 6
  3. Copyright © 2025 Oracle and/or its affiliates 8 グラフデータベースの特徴 関係を辿る検索は、様々な関係を跨いでデータを

    探せる特性が結果的にデータモデルの柔軟性を許 容できることになっている面もある (人物) 織田信長 年齢:40歳 部下 雇用年:1554年 (人物) 羽柴秀吉 年齢:37歳 (人物) 蜂須賀正勝 年齢:48歳 部下 雇用年:1566年 居城 (城) 岐阜城 ✓ 柔軟なモデリング • 様々なエンティティの関係を柔軟に表現 • 新しい関係、エンティティの追加に制限が少ない
  4. Copyright © 2025 Oracle and/or its affiliates ✓ 辿る検索が高速 •

    各頂点は接続先のエッジの情報を 持つ。 • 探索時に経路に関係するデータの みのアクセスで辿ることができるため、 高速に結果を取得できる グラフデータベースの特徴 ※このような処理をリレーショナルモデルで実装しSQL で記述すると 複数回のjoinが発生し、非常に重くな ることが多い 9
  5. Copyright © 2025 Oracle and/or its affiliates ✓ パターンマッチング •

    多くのグラフデータベースで、辿る検 索の高速性を生かし、パターン照合 を行うクエリが実装されている グラフデータベースの特徴 A 例:送金ネットワーク内で 5回の送金で自分の口座に送金される流れを探す 10
  6. Copyright © 2025 Oracle and/or its affiliates ✓ グラフアルゴリズム •

    グラフの構造や類似性、重要度等を 定量的に指標化する様々なグラフア ルゴリズムがあります • Graph Embedding/Graph Neural Network (グラフ内の関係構造を埋め 込み、ベクトル表現を得る等)も非 常に注目されている手法の1つ グラフデータベースの特徴 例:送金ネットワーク内で送金経路上重要度(中心性)の高い口座を発見する 11
  7. 12 Copyright © 2025 Oracle and/or its affiliates 2004 ネットワーク

    データモデル 2007 RDFグラフ 2016 プロパティグラフ(12cR2~) オラクルのグラフ機能実装 出典:DBEngines (https://db-engines.com/en/ranking_categories) 12 Graph Trend
  8. なぜ、今グラフが流行っているのか • データ利活用の流れ • 柔軟なデータモデリング:半構造、非構造的データも含めてデータを統合利用したい • 再帰的データ探索:多様なシステムに跨るデータを横断的に活用したい • データ分析の流れ •

    複雑な関係の可視化:データの関係性を直感的に把握したい • グラフ分析アルゴリズム:構造的な特徴をデータ分析で活用したい • AI/RAGの流れ • GraphRAG: RAGの精度を上げたい( 全文/ベクトル検索ではうまく拾えないケースをなんとかしたい) • ナレッジグラフ等:文章表現より確定的な事実や知識をAIに正確に伝える手法が欲しい 13 Copyright © 2025 Oracle and/or its affiliates
  9. ドキュメントデータに対するRAGから見たグラフ チャンキングを含むベクトル/全文検索の課題 • 文章の構造を汲み取ることが難しい • 例:論文の検索:タイトル/アブスト/キーワード/序論/方法/結果/考察/結論 なり、知りたいことの質問文は序 論などに描かれることが多く、解決方法は結論に置かれるが、ベクトル検索やキーワード検索では序論を引っ掛け てしまう •

    多数のチャンクに分散して言及されているものを収集してくるのが難しい • 例:履歴的情報の集計:とある俳優の自伝 から主演した映画の数を求める • 否定情報、無い情報を探すのが難しい • 例:環境問題について言及していないレポートを探す • 例:この法令に触れていないルールはどれ? 14 Copyright © 2025 Oracle and/or its affiliates ベクトル検索との対比 チャン クID チャンク Vector 1 タイトル 2 アブスト 3 序論 4 実験方法 5 結果 7 考察 8 結論 問いに 近いのはここ 欲しいのはここ
  10. Oracle Property Graph Oracle Labs PGX • Oracle Labs(旧Sun Microsystems

    Laboratories)で研究開発された並列グ ラフ探索エンジン (Parallel Graph AnalytiX ) PGXの特徴 • 高速なグラフ探索 • 高速なパターンマッチングクエリ • 高速なアルゴリズム実行 • アルゴリズム開発用API Copyright © 2025 Oracle and/or its affiliates Oracle Database技術 • オラクルデータベースに宿るオラクルの データマネジメント技術 一般のグラフデータベースの苦手科目 • ACID・トランザクション機能 • 参照、更新の混合ワークロード • セキュリティ機能 • 運用管理機能 等 16
  11. Copyright © 2025 Oracle and/or its affiliates リレーショナル表からのグラフデータ生成 CREATE PROPERTY

    GRAPH 文によって、リレーショナル表をベースとし たグラフを宣言的に生成することができます。 リレーショナル表からのグラフ定義 create property graph文 CREATE PROPERTY GRAPH bank_transfers VERTEX TABLES ( persons KEY(account_number)) EDGE TABLES ( transactions KEY (from_acct, to_acct, date, amount) SOURCE KEY (from_account) REFERENCES persons DESTINATION KEY (to_account) REFERENCES persons PROPERTIES (date, amount) ) account_number name phone ... 333394584 Jeff .. 327324852 Eric 879743653 Jimmy from_account to_account date amount 333394584 327324852 2023/3/1 32000 327324852 879743653 2023/3/15 7500 879743653 333394584 2023/3/22 21400 327324852 333394584 2023/3/24 11000 Persons表 transactions表 Jeff Eric Jimmy ※Autonomous databaseでは、Graph Studio というツールの中で GUI でリレーショナル表を選択するだけで外部キー制約などから 半自動的にcreate property graph文を生成するツールをご用意しております 17
  12. 対象のグラフから指定のパターンに適合するすべてのデータを検索 PGQL: グラフパターンマッチング専用言語 SELECT v3.name, v3.age FROM socialNetworkGraph MATCH (v1:Person)

    –[:friendOf]-> (v2:Person) –[:knows]-> (v3:Person) WHERE v1.name = ‘Amber’ Amberさん の友達 が知っているすべての人 の名前と年齢 socialNetwork Graph 100 :Person name = ‘Amber’ age = 25 200 :Person name = ‘Paul’ age = 30 300 :Person name = ‘Heather’ age = 27 777 :Company name = ‘Oracle’ location = ‘Redwood City’ :worksAt{1831} startDate = ’09/01/2015’ :friendOf{1173} :knows{2200} :friendOf {2513} since = ’08/01/2014’ Copyright © 2025 Oracle and/or its affiliates 18
  13. SQLからのグラフクエリ GRAPH_TABLE 演算子 SELECT * FROM GRAPH_TABLE ( students_graph MATCH

    (a IS person) -[e IS friends]-> (b IS person WHERE b.name = 'Mary') WHERE a.name='John' COLUMNS (a.name AS person_a, b.name AS person_b ) ); • students_graph …クエリ対象のグラフ名 • (a IS person) …ラベルがperson である ノードa • -[e IS friends]-> …ラベルがfriendsである有向エッジe • (b IS person WHERE b.name='Mary' …ラベルがpersonで、name属性がMaryであるノードb • COLUMNS …戻り値の列名のbindを記述 • a.name AS person_a … ノードaのname属性をperson_a列に定義 Copyright © 2025, Oracle and/or its affiliates 19
  14. Graph クエリの結果から類似検索を実施してデータ抽出 のイメージ Relational/Graph/Vector 20 Copyright © 2025 Oracle and/or

    its affiliates with graph_res as (SELECT * from GRAPH_TABLE (lord_tree_graph ( a ) –[e IS lord_of]-> {1,3}( b ) where a.name='織田信長' columns ( vertex_id(b) as retainer_id ,b.name as retainer_name ) ) SELECT g.retainer_name, b.profile from busho b, graph_res g WHERE g.retainer_id=b.id AND b.生誕 < 1600 and b.死没 > 1600 ORDER BY vector_distance( DBMS_VECTOR.utl_to_embedding('茶道に造詣が深かった'), b.busho_hist_vector ) FETCH APPROX FIRST 10 ROWS ONLY) 1600年時点で存命だった 織田信長の直臣、陪臣、陪臣 の家来(3階層までの配下)の 人物で 茶道に造詣が深かった人物 全文検索(Oracle Text)でも, 空間検索(Spatial)でも 様々なデータモデル、データタイプに対応しつつ、統合された検索結果を返せる統合
  15. Copyright © 2025 Oracle and/or its affiliates Built-in Graph Algorithms

    Detecting communities Strongly Connected Components, Weakly Connected Components, Label Propagation, Louvain, Conductance Minimization, Infomap Ranking and walking PageRank, Personalized PageRank, Degree Centrality, Closeness Centrality, Vertex Betweenness Centrality, Eigenvector Centrality, HITS, Minimum Spanning-Tree (Prim's), Breadth-First Search, Depth-First Search, Random Walk with Restart Topology analysis Conductance, Cycle Detection, Degree Distribution, Eccentricity, K-Core, LCC, Modularity, Reachability Topological Ordering, Triangle Counting, Bipartite Check, Partition conductance Path-finding Shortest Path (Bellman-Ford, Dijkstra, Bidirectional Dijkstra), Fattest Path, Compute Distance Index, Enumerate Simple Paths, Filtered and Unfiltered Fast Path Finding, Hop Distance Link prediction and others Twitter Whom-to-follow, SALSA, Adamic-Adar Index Machine learning DeepWalk, Supervised GraphWise, Unsupervised GraphWise, Pg2Vec, Matrix Factorization, GNNExplainer 21
  16. Copyright © 2025 Oracle and/or its affiliates Autonomous Databaseでセットアップ作業不要で 使える、グラフデータベースとその分析環境

    グラフ分析のための包括的なツール • グラフモデリングツール • リレーショナル表のデータをグラフにマッピング • ノートブック機能 • ブラウザ上から利用可能 • グラフデータに対するクエリ(PGQL)やクエリ結果の描画機能、 アルゴリズムの実行などグラフに対する操作を一元化できる ノートブック • 管理性 • グラフモデル管理 • 高速なインメモリグラフエンジン(PGX)へのロードもGUI設定 だけで可能 Graph Studio in Autonomous Database ノートブック グラフモデリングツール 22
  17. レンタルビデオの顧客 Copyright © 2025 Oracle and/or its affiliates CUST_ID LAST_

    NAME FIRST_ NAME … 1 Welch Emilio … 2 Monroe Mary … 3 Rogers Ricky … 4 Diaz Blanca … … … … … MOVIE_ID TITLE … 1 Spiderman … 2 Toy Story … 3 The Lion King … 4 Avatar … … … … … CUSTOMER MOVIE CUST_ID MOVIE_ID DEVICE … 3 4 iPhone … 4 1 Laptop … 2 1 Smart TV … 4 2 Smart TV … … … … … HAS_RENTED 25
  18. CREATE PROPRETY GRAPH文 CREATE PROPERTY GRAPH cust_movies VERTEX TABLES (

    customer KEY (cust_id) PROPERTIES (username, age, city, … country), movie KEY(moive_id) PROPERTIES (awards, budget, cast, crew, genre, …), ) EDGE_TABLES ( custsales label has_rented SOURCE KEY (cust_id) reference customer DESTINATION KEY (movie_id) reference movie LABEL has_rented PROPERTIES (actual_price, app, cust_id, day, device, …) ); グラフデータの生成 Copyright © 2025 Oracle and/or its affiliates Customer Movie has_rented GraphStudio利用時にはGUI上で簡単に設定、生成できます
  19. 頂点はどれですか。 グラフの作成 Copyright © 2025 Oracle and/or its affiliates MOVIE

    1 2 3 4 1 2 3 4 Customer CUST_ID LAST_ NAME FIRST_ NAME … 1 Welch Emilio … 2 Monroe Mary … 3 Rogers Ricky … 4 Diaz Blanca … … … … … MOVIE_ID TITLE … 1 Spiderman … 2 Toy Story … 3 The Lion King … 4 Avatar … … … … … CUSTOMER MOVIE CUST_ID MOVIE_ID DEVICE … 3 4 iPhone … 4 1 Laptop … 2 1 Smart TV … 4 2 Smart TV … … … … … HAS_RENTED 27
  20. CUST_ID LAST_ NAME FIRST_ NAME … 1 Welch Emilio …

    2 Monroe Mary … 3 Rogers Ricky … 4 Diaz Blanca … … … … … CUST_ID MOVIE_ID DEVICE … 3 4 iPhone … 4 1 Laptop … 2 1 Smart TV … 4 2 Smart TV … … … … … MOVIE_ID TITLE … 1 Spiderman … 2 Toy Story … 3 The Lion King … 4 Avatar … … … … … 次に、エッジを構築します グラフの作成 Copyright © 2025 Oracle and/or its affiliates MOVIE 1 2 3 4 1 2 3 4 Customer • グラフでは • 顧客と映画の「借りた」という関係が 直接的に表現されます CUSTOMER MOVIE HAS_RENTED 28
  21. CUST_ID LAST_ NAME FIRST_ NAME … 1 Welch Emilio …

    2 Monroe Mary … 3 Rogers Ricky … 4 Diaz Blanca … … … … … MOVIE_ID TITLE … 1 Spiderman … 2 Toy Story … 3 The Lion King … 4 Avatar … … … … … CUSTOMER MOVIE CUST_ID MOVIE_ID DEVICE … 3 4 iPhone … 4 1 Laptop … 2 1 Smart TV … 4 2 Smart TV … … … … … HAS_RENTED エッジの構築 グラフの作成 Copyright © 2025 Oracle and/or its affiliates MOVIE 1 2 3 4 1 2 3 4 Customer 29
  22. CUST_ID LAST_ NAME FIRST_ NAME … 1 Welch Emilio …

    2 Monroe Mary … 3 Rogers Ricky … 4 Diaz Blanca … … … … … MOVIE_ID TITLE … 1 Spiderman … 2 Toy Story … 3 The Lion King … 4 Avatar … … … … … CUSTOMER MOVIE CUST_ID MOVIE_ID DEVICE … 3 4 iPhone … 4 1 Laptop … 2 1 Smart TV … 4 2 Smart TV … … … … … HAS_RENTED より多くのエッジの構築 グラフの作成 Copyright © 2025 Oracle and/or its affiliates MOVIE 1 2 3 4 1 2 3 4 Customer 30
  23. 列値は、頂点とエッジのプロパティになります。 グラフの作成 Copyright © 2025 Oracle and/or its affiliates CUSTOMER

    1 2 3 4 1 2 3 4 Title: Spiderman Title: The Lion King Device: Smart TV MOVIE HAS_RENTED Last_name: Monroe First_name: Mary Last_name: Diaz First_name: Blanca Title: Toy Story Title: Avatar Last_name: Welch First_name: Emilio Last_name: Rogers First_name: Ricky Device: Laptop Device: Smart TV Device: iPhone 31
  24. プログラムによる問合せ結果の視覚化や活用 グラフへの問合せ Copyright © 2025 Oracle and/or its affiliates /*

    Emilio Welchが借りた映画を検索します ( グラフ 内で Emilio からのエッジがある映画 ) */ SELECT customer, edge1, movie.title FROM match (customer)-[edge1]->(movie) ON MOVIE_RECOMMENDATIONS WHERE customer.FIRST_NAME = 'Emilio' and customer.LAST_NAME = 'Welch' Emilio Welch Pulp Fiction Avengers: Endgame Bend It Like Beckham The Godfather … … … A few syntax specifications • (customer) Vertex () • [edge1] Edge [] • -> Directed edge
  25. 組み込みアルゴリズム:personalized_salsa グラフの分析 Copyright © 2025 Oracle and/or its affiliates Emilio

    Welch Floyd Bryant … … /* 「Emilio Welchとそのレンタルした映画の関係」との類似性を 元に、 各顧客、各映画ごとに、類似性を表すスコアを算出し、頂 点のプロパティ(personalized_salsa)にセットします */ analyst.personalized_salsa( MOVIE_RECOMMENDATIONS, customer:"Emilio Welch", rank='personalized_salsa') グラフアルゴリズムには上述のsalsaのように グラフの構造上の類似性などを 定量的に評価する手法があります。 ※グラフ構造であることで関係を辿る処理が高速であることを利用するものが多 く、情報量的には差がない同じ元データであってもリレーショナル表のまま実行す ると非常に時間がかかったりします
  26. 分析結果をプログラムで視覚化および活用 グラフの分析 Copyright © 2025 Oracle and/or its affiliates Emilio

    Welch Floyd Bryant … … /*グラフクエリを利用してpersonalized_salsaのスコアは高いが Emilioがまだ借りていない映画を10件特定します*/ SELECT movie.title, movie.personalized_salsa FROM match (movie) ON MOVIE_RECOMMENDATIONS WHERE label(movie) = 'MOVIE' AND NOT EXISTS ( SELECT m FROM match (c) -[:has_rented]-> (m) on MOVIE_RECOMMENDATIONS WHERE c.FIRST_NAME = 'Emilio' and c.LAST_NAME = 'Welch' ) ORDER BY movie.personalized_salsa limit 10 アルゴリズムの実行結果はプロパティとなるため、クエリ内で自由に使うことができます
  27. • グラフデータモデルとグラフデータベースについて • Oracle Property Graphについて • オラクルデータベースの安定性+Oracle Laboの先端技術 •

    グラフ利用のイメージ • リレーショナル表のデータをグラフに変換 • リコメンデーションの仕組みを構築する流れ Oracle Graph StudioはAutonomous Databaseに組み込まれ、構築作業なしで使い始め ることができますので、ご興味ありましたら触って見ていただけると幸いです まとめ Copyright © 2025 Oracle and/or its affiliates OCI チュートリアル • 215 : Graph Studioで金融取引の分析を行う • https://oracle-japan.github.io/ocitutorials/database/adb215-graph/
  28. Where To Get More Information Copyright © 2025 Oracle and/or

    its affiliates bit.ly/GraphLiveLabs bit.ly/OracleGraphBlog bit.ly/Spatial-Graph-YouTube bit.ly/graph_doc oracle.com/database/graph/ medium.com/tag/oracle-graph/latest OCI チュートリアル • 215 : Graph Studioで金融取引の分析を行う • https://oracle-japan.github.io/ocitutorials/database/adb215-graph/