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

Oracle Database Technology Night #76 - Oracle Database 23c Graph,Spatial,Machine Learning新機能

Oracle Database Technology Night #76 - Oracle Database 23c Graph,Spatial,Machine Learning新機能

2024年2月29日に実施したOracle Database Technology Night #76でお話ししたOracle Graph, Oracle Spatial, Oracle Machine LearningのOracle Database 23cの基礎的な説明を含む新機能資料です。

oracle4engineer

February 29, 2024
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. l Oracle Graph • グラフデータベースとは • Oracle Property Graph 概要

    • Oracle Property Graph 新機能 • Oracle RDF Graph 新機能 l Oracle Machine Learning & Oracle Spatial Updates • Oracle Machine Learning 新機能 • Oracle Spatial 新機能 Agenda Copyright © 2023, Oracle and/or its affiliates 2
  2. Copyright © 2024, Oracle and/or its affiliates 3 Oracle Graph

    2019年12⽉5⽇より上記機能は全て無償化(オラクルデータベースのライセンスに付随) このセッションの各機能について • オラクルデータベースと統合されたグラフデータベース機能 • パターンマッチング、グラフアルゴリズム、アルゴリズム開発APIなどを持つ Oracle Property Graph • オラクルデータベースと統合されたW3C勧告のRDFストア • 推論機構やデータベース内データのRDF化等の機能を持つ Oracle RDF Graph • オラクルデータベース内に実装された機械学習機能 • データベース内で機械学習プロセスを完結できる Oracle Machine Learning • オラクルデータベース内の地理空間機能 • 地図データ、位置情報、衛星画像、3D点群等の空間データを統合管理 Oracle Spatial
  3. グラフデータベースとは • グラフモデルの実装 • 辺は向きを持ってもよい • 頂点、辺は属性を持ってもよい 織⽥信⻑ 年齢︓40歳 部下

    雇⽤年:1554年 ⽻柴秀吉 年齢︓37歳 蜂須賀正勝 年齢︓48歳 部下 雇⽤年︓1566年 属性(プロパティ)を持つため プロパティグラフモデル とも呼ばれる Copyright © 2024, Oracle and/or its affiliates 9
  4. グラフデータベースとは • グラフモデルの実装 • 辺は向きを持ってもよい • 頂点、辺は属性を持ってもよい • 頂点、辺は種類を持ってもよい (⼈物)

    織⽥信⻑ 年齢︓40歳 部下 雇⽤年:1554年 (⼈物) ⽻柴秀吉 年齢︓37歳 (⼈物) 蜂須賀正勝 年齢︓48歳 部下 雇⽤年︓1566年 居城 (城) 岐⾩城 種類のラベルを持つため ラベル付きプロパティグラフモデル とも呼ばれる Copyright © 2024, Oracle and/or its affiliates 10
  5. ü グラフアルゴリズム • グラフの構造やその類似性を定量的に指標化する 様々なグラフアルゴリズムが存在しています • Graph Embedding/Graph Neural Network

    (グラフ内の関係構造を埋め込み、ベク トル表現を得る等)も⾮常に注⽬されている⼿法 の1つ グラフデータベースの特徴 例︓送⾦ネットワーク内で中⼼性の⾼いものを発⾒する Copyright © 2024, Oracle and/or its affiliates 13
  6. • マッチング/リコメンデーション • 商品、顧客、購買データからパターン抽出や類似性評価を⾏う • Customer360 • 複数システムに点在する顧客に関連したデータをグラフでつなぐ • 不正検知

    • 送⾦、ネットワークトラフィックのような構造のデータからパターンを抽出 • BOM管理 • トレーサビリティ、設計/製造BOM/調達情報をグラフでつなぐ グラフデータベースのユースケース例 Copyright © 2024, Oracle and/or its affiliates 14
  7. Oracle Labs PGX • Oracle Labs(旧Sun Microsystems Laboratories)で研究開発された並列グラフ 探索エンジン (Parallel

    Graph AnalytiX ) PGXの特徴 • ⾼速なグラフ探索 • ⾼速なパターンマッチングクエリ • ⾼速なアルゴリズム実⾏ • アルゴリズム開発⽤API Oracle Database技術 • オラクルデータベースに宿るオラクルのデータマ ネジメント技術 ⼀般のグラフデータベースの苦⼿科⽬ • ACID・トランザクション機能 • 参照、更新の混合ワークロード • セキュリティ機能 • 運⽤管理機能 等 Copyright © 2024, Oracle and/or its affiliates 16 Oracle Property Graph
  8. • ⾼速グラフ処理はインメモリのグラフエンジン(PGX)で • データの永続化はデータベースで Graph Client - Java - Python

    Graph Viz load PGQL & Algo SQLcl PGQL PGQL Oracle Database Graph Server (PGX) DDL インメモリ グラフエンジン データの永続化 クライアント グラフクエリ⾔語 Copyright © 2024, Oracle and/or its affiliates 17 アーキテクチャ
  9. 対象のグラフから指定のパターンに適合するすべてのデータを検索 PGQL: グラフパターンマッチング SELECT v3.name, v3.age FROM socialNetworkGraph MATCH (v1:Person)

    –[:friendOf]-> (v2:Person) –[:knows]-> (v3:Person) WHERE v1.name = ‘Amber’ Amberさん の友達 が知っているすべての⼈ の名前と年齢 100 :Person name = ‘Amber’ age = 25 20 0 :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’ socialNetwork Graph Copyright © 2024, Oracle and/or its affiliates 18
  10. Copyright © 2024, Oracle and/or its affiliates 19 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 Built-in Graph Algorithms
  11. • Javaベースのグラフアルゴリズム記述⽤のDSLセットを含むAPI • グラフにありがちな処理(幅優先探索,フィルタ処理等)の簡潔な記法を提供 • Javaコード内で @GraphAlgorithm アノテーションを利⽤ PGX Algorithm

    API グラフアルゴリズム開発⽤のAPI メリット︓ • アルゴリズムを簡潔に記述 グラフ系アルゴリズムの記述でコードを複雑化させがちな探索のため の多重ループ処理やフィルタを簡潔に記述できる • ⾼速な実装 グラフアルゴリズムに特化して解釈されるため、記述したアルゴリズム はグラフ上での実⾏に最適化された形でバイトコード化されるため ⾮常に⾼速に動作する Copyright © 2024, Oracle and/or its affiliates 20
  12. リレーショナル表からのグラフデータ⽣成 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⽂を⽣成するツールをご⽤意しております Copyright © 2024, Oracle and/or its affiliates 21
  13. Autonomous Databaseでセットアップ作業不要で 使える、グラフデータベースとその分析環境 グラフ分析のための包括的なツール • グラフモデリングツール • リレーショナル表のデータをグラフにマッピング • ノートブック機能

    • ブラウザ上から利⽤可能 • グラフデータに対するクエリ(PGQL)やクエリ結果の描画機能、 アルゴリズムの実⾏などグラフに対する操作を⼀元化できる ノートブック • 管理性 • グラフモデル管理 • ⾼速なインメモリグラフエンジン(PGX)へのロードもGUI設定 だけで可能 Graph Studio in Autonomous Database ノートブック グラフモデリングツール Copyright © 2024, Oracle and/or its affiliates 22
  14. • Oracle Property Graph は 現在 Oracle Graph Server &

    Client というデータベースとは 別のコンポーネントとしてバイナリ管理されています ü 最新のProperty Graphでも Database 19cもサポート ü バイナリは分かれていますが、ライセンスはデータベースに許諾されており、データベースがあれば追加のライ センス費⽤なしで利⽤可能 • Database 23c と併⽤の場合でだけ利⽤可能な新機能もあるため、以下を分けて記載します ü 「Database 23c と併⽤による新機能」 ü 「Property Graph 23.3 としての新機能」 Property Graph 新機能/ Database 23c Database 23c と併⽤による新機能 Property Graph 23.3 新機能 Copyright © 2024, Oracle and/or its affiliates 24
  15. これまでのアーキテクチャ データの永続層をデータベースが受け持ち、グラフは2層構造でPGQLを受け付ける Graph Client - Java - Python Graph Viz

    load PGQL & Algo SQLcl (plugin) PGQL PGQL Oracle Database Graph Server (PGX) DDL インメモリ グラフエンジン データの永続化 クライアント グラフクエリ⾔語 Database 23c と併⽤による新機能 Copyright © 2024, Oracle and/or its affiliates 26
  16. SQL Clients Database 23c でのアーキテクチャ データの永続層をデータベースが受け持ち、グラフは2層構造でPGQLを受け付け、 データベースはSQLでグラフクエリを受け付ける Graph Client -

    Java - Python Graph Viz load PGQL & Algo SQLcl(plugin) SQL Developer PGQL PGQL Oracle Database 23c Graph Server (PGX) DDL インメモリ グラフエンジン データの永続化 クライアント グラフクエリ⾔語 SQL SQLを投げられるOracleへの接続であれば、 SQL Property Graph 機能が利⽤可能に Copyright © 2024, Oracle and/or its affiliates Database 23c と併⽤による新機能
  17. • グラフ⽣成のDDL⽂がSQLとして実⾏可能に • SQL/PGQ標準 • CREATE PROPERTY GRAPH • DROP

    PROPERTY GRAPH • ALTER PROPRETY GRAPH ⽣成されたグラフを SQL Property Graphと呼称 SQLでグラフの⽣成、削除等が可能に 23c SQLリファレンス より 以前は同様のステートメントをグラフクエリ⾔語 PGQL としてグラフクライアントから実⾏する必要があった • インメモリ(PGX)連携の拡充 DB⽣成されたグラフ(SQL Property Graph)のインメモリサーバ (PGX)への読み込み⽅式の拡充 • グラフ名の指定、サブクエリ発⾏によるグラフロード等 Copyright © 2024, Oracle and/or its affiliates 28 Database 23c と併⽤による新機能
  18. • GRAPH_TABLE演算⼦によりSQLでグラフクエリを記述可能に • SQL/PGQ標準 • SQLとしてグラフクエリを利⽤可能に • JDBC,OCI等のデータベース接続で、グラフクエリ⾔語の表現⼒を利⽤したクエリが実⾏できる • グラフデータ活⽤の加速

    • SQL1本で、グラフクエリの結果をリレーショナル表やJSONデータなどのデータベース内データと結合するなど、グラフデータの横断的な データ活⽤が更に容易になる • 適材適所でクエリを使い分け、マージできる • グラフモデルアクセスに向いたクエリはグラフで • リレーショナルモデルに向いたクエリはリレーショナルで SQLでグラフのクエリ記述が可能に 結合 マスタ Copyright © 2024, Oracle and/or its affiliates 29 Database 23c と併⽤による新機能
  19. 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 © 2023, Oracle and/or its affiliates Copyright © 2024, Oracle and/or its affiliates 30 Database 23c と併⽤による新機能
  20. GRAPH_TABLE による効果(表現⼒) Find all accounts connected to src account in

    1 to 3 hops -- With new GRAPH_TABLE and MATCH syntax SELECT account_id1, account_id2 FROM GRAPH_TABLE(bank_graph MATCH (src)-[is bank_transfers]->{1,3}(dst) COLUMNS (src.id as account_id, dst.id as account_id2) ); -- With old SQL syntax (12 joins and 3 UNION ALLs) SELECT v1.id as account_id1 , v2.id as account_id2 FROM bank_accounts v1 , bank_transfers btx, bank_accounts v2 WHERE (v1.id = btx.src_acct_id AND v2.id = btx.dst_acct_id) AND v1.id= <src> AND v2.id= <dst> UNION ALL SELECT v1.id as account_id1 , v2.id as account_id2 FROM bank_accounts v1 , bank_transfers btx, bank_accounts bc2, bank_transfers btx2 , bank_accounts v2 WHERE (v1.id = btx.src_acct_id AND bc2.id = btx.dst_acct_id AND bc2.id = btx2.src_acct_id AND v2.id = btx2.dst_acct_id ) AND v1.id= <src> AND v2.id= <dst> UNION ALL SELECT v1.id as account_id1 ,v2.id as account_id2 FROM bank_accounts v1 , bank_transfers btx, bank_accounts bc2, bank_transfers btx2 , bank_accounts bac4, bank_transfers btx5 , bank_accounts v2 WHERE (v1.id = btx.src_acct_id AND bc2.id = btx.dst_acct_id AND bc2.id = btx2.src_acct_id AND bac4.id = btx2.dst_acct_id AND bac4.id = btx5.src_acct_id AND v2.id = btx5.dst_acct_id ) AND v1.id= <src> AND v2.id= <dst> ; ★ Copyright © 2024, Oracle and/or its affiliates 31 Database 23c と併⽤による新機能
  21. • Graph Attention Network (GAT)のサポート • Graph Nerural Networkアルゴリズムの1つである 教師あり/教師無しGraphWiseモデルにAttention+

    畳み込み層をサポートする拡張を追加 • アルゴリズムの改善 • Adamic-Adar index • Local Clustering Coefficient • Prim's Algorithm • Shortest Path Hop Distance アルゴリズムの追加、改善 ※こちらは データベースのバージョンとは別に Property Graph ⾃体の機能として追加、改善されたものです。 Property Graph 23.3 新機能 Copyright © 2024, Oracle and/or its affiliates 33
  22. • Property Graph Shema が⾮推奨に (関連する関数群含む) • SQL Proprety Graph

    / PGQL Property Graph (create property graph ⽂で⽣成されるグラフ)へ の移⾏が推奨 • 関数等 • opg_apis.get_version() ⾮推奨に • [対策] : OPG_APIS.GET_OPG_VERSION() を利⽤ • OPG_APIS.GET_SCN ⾮推奨に • [対策] : DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER() を利⽤ ⾮推奨/廃⽌される機能等 (⼀部抜粋) 個々の⾮推奨、廃⽌となる機能の詳細に関しては以下をご参照ください Graph Developer's Guide for Property Graph - Changes in This Release for This Guide https://docs.oracle.com/en/database/oracle/property-graph/23.3/spgdg/changes-in-this-release.html#GUID-75309029-ADEB-4C67-877E-F5639F1896FF Copyright © 2024, Oracle and/or its affiliates 34
  23. 標準サポートのアップグレード • GeoSPARQL 1.1 Support (1.0->1.1) 性能改善機能系のアップデート • SPARQL->SQL変換を利⽤したクエリ最適化⼿法 •

    クエリ実⾏プランのコスト取得のサポート • SEM_APIS.GET_PLAN_COST関数 • RDF_LINK$ テーブルの⾃動リスト サブパーティション化のサポート 少し便利なアップデート • 32K VARCHAR RDF 値のサポート • 4k以上はCLOBになっていたものがvarchar2で扱える Oracle RDF Graph 新機能 Copyright © 2024, Oracle and/or its affiliates 36
  24. 機能概要 Oracle Database に内包された機械学習機能 • 機械学習プロセスがデータベースで完結 • DB内に実装された機械学習エンジン • データの移動が不要

    • 選べる記述⾔語 • SQL(PL/SQL), Python, R • データやモデルは統合されて相互利⽤可能 例)Rで作成したIn-DatabaseモデルをSQLで呼び出して利⽤できる • データセキュリティ • データもモデルもプロセスも全てデータベース内に • データベースセキュリティ品質 Oracle Machine Learning ★SQLで機械学習 • モデル⽣成 DBMS_DATA_MINING.create_modelプロシージャ • モデルを利⽤した予測、スコアリング prediction 関数 ( SQL⽂で利⽤可能) OML4SQL OML4Py OML4R DataMiner AutoML UI OML Notebooks OML Services Copyright © 2024, Oracle and/or its affiliates 38
  25. シンプルなSQL⽂を⽤いた分類モデルの活⽤例 OML4SQL: モデルの作成とリアルタイム予測 BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name => 'BUY_INSUR1', mining_function =>

    dbms_data_mining.classification, data_table_name => 'CUST_INSUR_LTV', case_id_column_name => 'CUST_ID', target_column_name => 'BUY_INSURANCE', settings_table_name => 'CUST_INSUR_LTV_SET'); END; SELECT prediction_probability(BUY_INSUR1, 'Yes' USING 3500 as bank_funds, 825 as checking_amount, 400 as credit_balance, 22 as age, 'Married' as marital_status, 93 as MONEY_MONTLY_OVERDRAWN, 1 as house_ownership) FROM dual; モデル作成(PL/SQL) リアルタイムスコアリング(SQLクエリ) ※クエリ内で予測され結果が取得できます Copyright © 2024, Oracle and/or its affiliates 39
  26. 回帰(Regression) 線形モデル(LM) ⼀般化線形モデル(GLM) サポート・ベクター・マシーン(SVM) ステップワイズ線形回帰 ニューラル・ネットワーク 異常検出(Abnormally Detection) 1クラスSVM MSET

    (21c) 相関(Association Rules) Apriori/バスケット分析 属性評価(Attribute Importance) 最⼩記述⻑(Minimum Description Length) CUR⾏列分解 教師なしペアワイズKLダイバージェンス A1 A2 A3 A4 A5 A6 分類(Classification) 決定⽊(Decision Tree) (2項分類)⼀般化線形モデル(GLM) 単純ベイズ(Naïve Bayes) ランダム・フォレスト(Random Forest) サポート・ベクター・マシン(SVM) 明⽰的セマンティック分析(ESA) ニューラル・ネットワーク XGBoost (21c) クラスタリング(Clustering) 期待値最⼤化法(EM) k平均法(k-means) 直交パーティショニング・クラスタリング (O-Cluster) 時系列(Time Series) 指数平滑法 等 (単純,、2重、Holt-Winters法、Regular & Irregular, with and w/o trends & seasonal 含む) 特徴抽出(Feature Extraction) 明⽰的セマンティック分析 (ESA) Non-Negative Matrix Factorization (NMF) 特異解分析 (SVD) 主成分分析 (PCA) 教師無し Pair-wise KL Div 予測問合せ(Predictive Queries) クラスタリング問合せ 特徴抽出問合せ 異常検出問合せ 統計関数(Statistical Functions) 基本関数︓最⼩、最⼤、メジアン、標準偏差、t検定、 F検定、ピアソン分布、カイ⼆乗検定、 分散分布 (ANOVA)等 SQL関数︓⾏列の選択、条件式、結合、等 Oracle Machine Learning Algorithms and Analytics Copyright © 2024, Oracle and/or its affiliates 40
  27. AutoML 搭載の簡単機械学習インターフェイス 概要 • データと予測対象を選択するだけ • モデルを⾃動で構築、管理、デプロイ • ノーコード の

    AutoML ユーザインターフェイス AutoML • ⾃動で モデル選択、特徴選択、モデルチューニン 利点 • 専⾨知識が無くても、機械学習モデルの構築が可能 ※ Autonomous Databaseでのみ提供 Oracle Machine Learning AutoML UI Copyright © 2024, Oracle and/or its affiliates 41
  28. 既存のアルゴリズムの強化 • ⾔語処理系アルゴリズムの機能強化 • XGBoost(⾼精度で定評のあるアルゴリズム)関連のアップデート • 時系列分析機能の強化 その他のアップデート • Booleanデータ型のサポート

    • 表の最⼤列数が4096に増えたことへの対応 • ⾃動データ準備の機能向上 • ⼀般化線形モデル(GLM)の適⽤範囲の拡⼤ • 異常検知に期待値最⼤化(EM)アルゴリズムが登場 • モデル⽣成に使⽤されたデータ取得クエリの記録 Oracle Machine Learning 23c 新機能 Copyright © 2024, Oracle and/or its affiliates 42
  29. ⾃動モデルタイプ選択/複数の時系列予測 時系列分析機能の強化 Timestamp Weekday … Temp DM$Temp DM$Meter Rainfall <ts-1>

    0 26 Backcasts Backcasts 3.0 <ts-2> 1 30 … … 0 <ts-3> 2 28 … … 0 … … … … … … <ts-n+1> Forecasts Forecasts 予測対象 1)⾃動モデルタイプ選択 指数平滑法において、周期性や上昇傾向/下降傾向のあるデータに 対する予測が容易になった 時系列予測(指数平滑法)のモデル作成時に、モデル・タイプ(EXSM_MODEL)を指定しない 場合、アルゴリズムが最適なモデル・タイプを⾃動的に決定 2)複数の時系列予測 1つまたは複数の時系列に対するバックキャスト(過去のデータに対して モデルが⽣成した推定値)と予測を⽣成 結果は他のMLアルゴリズムの⼊⼒として使⽤できる 1⽉の天候の予測が「晴れ」となるならば、 相関のある気温や湿度もある程度予測可能なはずというイメージ (時系列で相関のあるデータの⽋損を補完することに利⽤できる) Event 1 Event 2 Time Value Holiday Rainfall Temperature Copyright © 2024, Oracle and/or its affiliates 43
  30. 機能概要 Oracle Database の地理空間機能 • 様々な地理空間データを管理、検索、演算可能 • 対応データ • ベクターデータ(位置情報、地図データ)、ラスターデータ(衛星画像、

    気象データ)、3D点群、ネットワークデータ(交通網など)、動線 • 機能 • 空間索引、400以上の関数/プロシージャ • 範囲検索、空間結合、測地系変換、空間演算、集合演算、幾何学 計算(距離、⾯積、体積)、ピラミッド化、モザイク化、ラスター代数式、 オルソ化、幾何学補正等 • 経路探索(ネットワークデータの場合) • 最短経路、k短経路、巡回セールスマン問題、配⾞問題、アイソク ローン導出等 Oracle Spatial -- create table create table dept ( DEPTNO NUMBER(2), DNAME VARCHAR2(14), LOC VARCHAR2(13), GEOM SDO_GEOMETRY ); -- insert into table insert into dept values ( 20, 'RESEARCH', 'DALLAS', SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE( 32.7942, -96.7655, null ), null,null ) ) ); 空間データをリレーショナル表や列として扱う Copyright © 2024, Oracle and/or its affiliates 46
  31. Oracle Spatial 23c 新機能 SDO_GEOMETRY作成がより簡単に • ポイント・データの新しいコンストラクタ • ジオメトリタイプと座標系の事前定義済み定 数の利⽤

    空間索引作成がより簡単に • ジオメトリのメタデータ登録の⾃動化 RasterデータのREST APIサポート • データアクセス • 処理 • インポート/エクスポート • 仮想モザイク 点群の差分検出 点群の断⾯計算 3Dメッシュ⽣成 ※今回の内容は新機能部分のみの記載となっております。機能全般に関してご興味のある⽅は別途ご連絡ください。 Copyright © 2024, Oracle and/or its affiliates 47
  32. より簡単な緯度経度データ作成が可能に 緯度経度ポイント・データの新しいコンストラクタ INSERT INTO t1 VALUES (sdo_geometry(2001, 4326, sdo_point_type(-73.45, 45.2,

    null), null, null); 従来 23c INSERT INTO t1 VALUES (sdo_geometry(-73.45, 45.2)); 2001: 2次元の点 4326:WGS84の測地座標系 SDO_POINT_TYPE : 座標点専⽤の配列 null : 3次元⽬のz成分が無いことを表現 null, null : 線やポリゴン形状の情報が無いことを表現 これまで明⽰的に指定が必要だった部分を暗黙的に 解釈するように拡張。 ⾮常にシンプルな記述が可能に Copyright © 2024, Oracle and/or its affiliates 48
  33. ジオメトリのメタデータ登録の⾃動化 概要 • 空間列に空間索引を作成する場合、その表の空間メタデータが作成されていなければ、 USER_SDO_GEOM_METADATAビューに⾃動で誤差許容値0.05で空間メタデータが登録されます INSERT INTO points_table VALUES(1, SDO_GEOMETRY(-73.45,

    45.2)); COMMIT; -- SDO Metadata INSERT INTO USER_SDO_GEOM_METADATA … CREATE INDEX pt_sidx ON points_table (geometry) INDEXTYPE IS MDSYS.SPATIAL_INDEX_V2; USER_SDO_GEOM_METADATAビューの⾃動更新 Copyright © 2024, Oracle and/or its affiliates 49
  34. 点群とは • レーザースキャナー/センサーの出⼒として得られることが多い⼤規模な3次元の点データ • スマホなどでも取得ができるようになり、以前と⽐べるとかなり⾝近なデータに • 3D都市モデルや屋内データなどの元データとしても Oracle Spatialで点群が扱える意味 •

    処理系︓データインテンシブな処理の請負 • ⼤量であるため処理が重い • データ統合︓他の空間データとの相互利⽤ • メタデータ管理︓無数の点群ファイルの管理 データ移動や無駄な読み込み無しで直接空間処理や絞り込みができるため 点群データの取り回しを⽀えることが可能に 数ギガ超のファイルが無数に出⼒されたりと取り回しが⼤変な⾯が Copyright © 2024, Oracle and/or its affiliates 50 点群データ
  35. • 概要 • Oracle Spatialの点群機能SDO_PC_PKGパッケージに、2つの点群の⽐較を⾏うPC_DIFFERENCE プロシージャが追加 • 点群Aにある点のうち、点群Bに地理的に近接していない点の算出が可能 • 以前はそこになかった⾞などの実際の点群の変化

    • レーザーが届かない障害物による変化 • ユースケース • ⽕災、洪⽔、地滑り、地震などの⾃然災害による損害の評価 • 植⽣、森林キャノピー(森林の上層部)の変化のモデル化 • 開発・インフラプロジェクトの経年変化の測定 • 都市の経年変化の検出 2つの点群の差を点群として返すPC_DIFFERENCE Copyright © 2024, Oracle and/or its affiliates 51
  36. 2つの点群の差分の検出 マイナス 点群2 点群1 点群 3 Copyright © 2024, Oracle

    and/or its affiliates 52 2つの点群の差を点群として返すプロシージャPC_DIFFERENCEが追加
  37. • 概要 • Oracle Spatialの点群機能SDO_PC_PKGパッケージに、垂直の2D平⾯を利⽤して、3D点群の 断⾯計算を⾏うGENERATE_CROSS_SECTION_AS_GEOMSプロシージャが追加 • オブジェクトの輪郭の決定 • 点群内部の測定

    • ユースケース • 点群データから地勢、⾼低差の把握 Copyright © 2024, Oracle and/or its affiliates 53 3D点群の断⾯を計算するGENERATE_CROSS_SECTION_AS_GEOMS
  38. 画像出典︓CenterOne, www.centerone.nl Copyright © 2024, Oracle and/or its affiliates 54

    3D点群の断⾯を計算するGENERATE_CROSS_SECTION_AS_GEOMS
  39. 複雑な⾵景などのモデリング • 概要 • Oracle Spatialの表⾯のモデリング機能SDO_TIN_PKGパッケージに3Dメッシュモデリングを⾏う CREATE_MESHESプロシージャが追加 • 現在TINではサポートされていない垂直な表⾯、軒、閉じたボリュームなどの3D三⾓形オブジェクトの モデリングができる

    • ユースケース • より複雑な⾵景、滝、崖、建物、⾞などのモデリング ドロネー三⾓形分割(図はwikipediaより引⽤) Copyright © 2024, Oracle and/or its affiliates 55 3次元の点の集合から3次元メッシュを⽣成するCREATE_MESHES
  40. XYZ座標を持つ3D点データセット -- 3Dメッシュの作成 begin sdo_tin_pkg.create_meshes( base_table => 'MESHES', data_table =>

    'MESH_BLKS', tin_id => 4, tin_tol => 0.05, blk_size => null, inptab => 'INPTAB', srid => 27700, feature_size => 2, max_angle => 120, batch_size_pts => 1000); end; / Copyright © 2024, Oracle and/or its affiliates 56 複雑な⾵景などのモデリング 3次元の点の集合から3次元メッシュを⽣成するCREATE_MESHES
  41. .OBJファイルとしてエクスポートされた3Dメッシュ Visualization: 3dviewer.net -- 3Dメッシュを.objフォーマットに変換 select sdo_tin_pkg.clip_tin_into_obj( tin_table => 'MESHES',

    tin_column => 'TIN', id_column => 'ID', id => 4, query => null, where_clause => null, result_table_name_pts => 'OBJ_PTS_BLKS', result_table_name_tr => 'OBJ_TR_BLKS', lods => sdo_lods_type(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), blkno => 1) from dual; Copyright © 2024, Oracle and/or its affiliates 57 複雑な⾵景などのモデリング 3次元の点の集合から3次元メッシュを⽣成するCREATE_MESHES
  42. まとめ • Oracle Graph • Oracle Spatial • Oracle Machine

    Learning の新機能をご紹介しました。 いずれもマニアックながらもConverged Database のコンセプトの元、データ分析、活⽤を制限なく、 より簡単に、より⾼速に進化をしていっております。 使ったことの無い⽅もご興味ありましたらご連絡いただけましたら幸いです Copyright © 2024, Oracle and/or its affiliates 58