Guia Rapida、Oracle Graph con SQL Developerと同等 (2023/12/05)

Guia Rapida、Oracle Graph con SQL Developerと同等 (2023/12/05)

https://medium.com/oracledevs/guia-rapida-para-usar-oracle-graph-con-sql-developer-4001f067f34b

投稿者:Ramu Murakami Gutierrez



Oracle Databaseでグラフ問合せの実行を開始する最も簡単な方法は、SQL Developerをダウンロードすることです。唯一の要件は、Oracle Databaesおよび必要な権限を持つデータベース・ユーザーを作成することです。


まず、グラフが役に立つ理由を見てみましょう。


データが接続され、それらの接続によってインサイトが提供され、関係トレースに関連する複雑な問題に対処できます。様々な業界で、グラフを使用して問題を解決します。次に例を示します。


  • 金融サービス: 不正取引を検出し、顧客分析を実行して最適な顧客を選択します。
  • セキュリティ: 事件を調査し、ソーシャルメディア上のインタラクションを監視したり、誰が国に旅行しているかを制御するための法執行機関。
  • サイバーセキュリティ: マルウェアを自動的に特定し、リスクと脆弱性を特定すること。


グラフ・ユーザーに必要な権限


グラフを操作するデータベース・ユーザーに権限を付与するスクリプトを次に示します。

CREATE USER <graph usernamer> IDENTIFIED BY <password>;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO <graph username>;
ALTER USER <graph username> DEFAULT TABLESPACE DATA;
ALTER USER <graph username> QUOTA unlimited ON DATA;


開始するステップは次のとおりです。

SQL Developerのインストール


  1. このリンクに移動して、最新バージョンのSQL Developerをダウンロードします。
  2. Oracleライセンス契約を確認して同意します。


SQL Developer Webのダウンロード


3. ダウンロードしたzipファイルを優先ディレクトリに移動します。

4. ファイルを解凍して開きます。

5.sqldeveloper.exeファイルをダブルクリックして、SQL Developerを開きます。


SQL Developerの起動


SQL Developerでのデータベース接続の作成


データベース接続の作成に必要なもの:


  • データベース名
  • データベースのユーザー名とパスワード
  • ホスト名
  • ポート
  • サービス名
  • クラウド・ウォレット(Autonomous Databaseを使用して接続されている場合)


新規接続


>ノート: OCIで作成されたDBシステムに接続する場合、ホスト名はパブリックIPアドレスになります。


接続をテストし、ステータスが成功した場合は「Connect」をクリックします。

データのロード


データベースのSQL Developerへの接続が終了したので、グラフ問合せの実行に使用するデータをロードする準備が整いました。グラフ問合せを実行するデータをロードできます。この例では、2つのbank_accounts表とbank_transfers表をロードしてグラフ問合せを実行し、不正なトランザクションを示す可能性のある循環支払を検索します。データセットは、GitHubで入手できます。


1. SQLワークシートでは、CreateBankGraphDataset.SQL問合せを実行して2つの表を作成します。


CreateBankGraphDataset.sqlスクリプトの実行


2. GitHubからBANK_ACCOUNTS.csvおよびBANK_TRANSFERS.csvファイルをダウンロードし、前述のスクリプトで作成された対応する表にデータをインポートします。


データのインポート・オプション



チャート問合せの実行


Oracle Databaseがある場合は、SQLまたはPGQLを使用してグラフ問合せを実行できます。Oracle Databaseの最新バージョン(23c)は、SQLおよびPGQLをサポートしています。19c以前を実行する場合は、PGQLを使用できます。


SQLを使用したグラフ問合せの実行


SQLワークシートでは、次の段落を実行します。


1. 作成した2つの表からプロパティ・グラフを作成します。

CREATE PROPERTY GRAPH BANK_GRAPH 
VERTEX TABLES (
BANK_ACCOUNTS
KEY (ID)
PROPERTIES (ID, Name, Balance)
)
EDGE TABLES (
BANK_TRANSFERS
KEY (TXN_ID)
SOURCE KEY (src_acct_id) REFERENCES BANK_ACCOUNTS(ID)
DESTINATION KEY (dst_acct_id) REFERENCES BANK_ACCOUNTS(ID)
PROPERTIES (src_acct_id, dst_acct_id, amount)
);


2. インバウンド転送を使用して上位10件のアカウントを検索します。

SELECT acct_id, COUNT(1) AS Num_Transfers 
FROM graph_table ( BANK_GRAPH
MATCH (src) - [IS BANK_TRANSFERS] -> (dst)
COLUMNS ( dst.id AS acct_id )
) GROUP BY acct_id ORDER BY Num_Transfers DESC FETCH FIRST 10 ROWS ONLY;


3. 同じアカウントで開始および終了する5ホップ転送を確認します。

SELECT acct_id, COUNT(1) AS Num_5hop_Chains 
FROM graph_table (BANK_GRAPH
MATCH (src) - []->{5} (src)
COLUMNS (src.id AS acct_id)
) GROUP BY acct_id ORDER BY Num_5hop_Chains DESC;


4.3 から5ホップの循環支払チェーンがあるアカウントの一部(10)をリストします。

SELECT DISTINCT(account_id) 
FROM GRAPH_TABLE(BANK_GRAPH
MATCH (v1)-[IS BANK_TRANSFERS]->{3,5}(v1)
COLUMNS (v1.id AS account_id)
) FETCH FIRST 10 ROWS ONLY;


PGQLを使用したグラフ問合せの実行


1.PGQLワークシートを開きます。データベース接続のオプションを展開し、プロパティ・グラフを右クリックします。「Open PGQL Worksheet」を選択します。


PGQLワークシートを開く


2. 作成した2つの表からプロパティ・チャートを作成します。

CREATE PROPERTY GRAPH BANK_GRAPH_PGQL
VERTEX TABLES (
BANK_ACCOUNTS
KEY ( ID )
LABEL accounts PROPERTIES ( ID, name )
)
EDGE TABLES (
BANK_TRANSFERS
SOURCE KEY ( src_acct_id ) REFERENCES BANK_ACCOUNTS(ID)
DESTINATION KEY ( dst_acct_id ) REFERENCES BANK_ACCOUNTS(ID)
LABEL transfers PROPERTIES ( amount, description, src_acct_id, dst_acct_id, txn_id )
) OPTIONS (PG_VIEW);


3. インバウンド転送を使用して上位10件のアカウントを検索します。

SELECT dst.id as acct_id, COUNT(1) AS Num_Transfers 
FROM MATCH (src) - [:TRANSFERS] -> (dst) ON BANK_GRAPH_PGQL
GROUP BY dst.id
ORDER BY Num_Transfers DESC FETCH FIRST 10 ROWS ONLY;


4. 同じアカウントで開始および終了する5ホップ転送を確認します。

SELECT src.id AS acct_id, COUNT(1) AS Num_5hop_Chains 
FROM MATCH (src) - []->{5} (src) ON BANK_GRAPH_PGQL
GROUP BY acct_id
ORDER BY Num_5hop_Chains DESC;


5.3 から5ホップの循環支払チェーンがあるアカウントの一部(10)をリストします。

SELECT DISTINCT(v1.id) AS account_id 
FROM MATCH (v1)-[:TRANSFERS]->{3,5}(v1) ON BANK_GRAPH_PGQL
FETCH FIRST 10 ROWS ONLY;


おめでとうございます!SQL Developerのデータベース接続を作成し、データをロードして、いくつかのグラフ問合せを実行しました。


Medium (= todos los artículos con la etiqueta Oracle Graph)

Stack Overflow (= preguntas con etiqueta oracle-graph)

Slack AnDOUC (= enlace de invitación, visite #graph)

Slack OracleDevRel (= enlace de invitación, visite #oracle-db-graph)

Canal de Youtube

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

ミリ秒の問題: BCCグループとOCIが市場データ・パフォーマンスを再定義する方法(AWSに対するベンチマークを使用) (2025/11/13)

OCIサービスを利用したWebサイトの作成 その4~Identity Cloud Serviceでサイトの一部を保護 (2021/12/30)