はじめに
本記事について
OCI(Oracle Cloud Infrastructure)上のOracle Databaseに格納したプロパティ・グラフ(Oracleのグラフ・データベース機能)をローカルPCのCytoscape(OSSのgraph visualization tool)からPGX(グラフ分析エンジン、Parallel Graph AnalytiXの略)でページランクアルゴリズムの実行やPGQL(Property Graph Query Language)を実行してそれらの結果を元に可視化する手順です。
動作環境について
- Windows 7のローカルPC
- Cytoscape 3.2.1 (Oracle Pluginを利用する際はCytoscape 3.2.1以上であることが条件、PCにインストール)
- Cytoscape Plugin for Oracle Database 18c(Cytoscapeにより、Oracle Databaseに格納されたプロパティ・グラフの可視化に必要)
- Teraterm(SSHポート転送のため)
- OCI(Oracle Cloud Infrastructure)上に作成した Database - Virtual Machines
- Oracle Database 18.2 Enterprise Edition High Performance (プロパティ・グラフの利用にはHigh Performance以上のEditionが必要)
Cytoscapeによるプロパティ・グラフの可視化
事前準備
Oracle Cloudのサービス・コンソールより、Oracle Netリスナー経由でのDatabase接続のため1521ポートへの接続を許可します。対象DB SystemsのVCNへのリンクよりSecurity Listを更新します。
CytoscapeからOCI上のOracle Databaseに接続するため、TeratermでSSHポート転送の設定をします。リモート側ホストにはPublic IPを指定します。
CytoscapeからOCI上のPGXサーバーに接続するため、TeratermでSSHポート転送の設定をします。リモート側ホストにはPrivate IPを指定します。
OCI上にてPGXをサーバーモードで起動します。
PGXをサーバーモードで起動のため設定ファイルは以下のように変更しております。ポートは任意です。
$ cd $ORACLE_HOME/md/property_graph/pgx/conf
$ cat server.conf
{
"port": 7008,
"enable_tls": false,
"enable_client_authentication": false
}
PGXをサーバーモードで起動します。
$ cd $ORACLE_HOME/md/property_graph/pgx
$ nohup sh ./bin/start-server &
ログに以下メッセージが出力されていましたら、正常に起動ができています。
INFO: Starting Protocol Handler [“http-nio-7007]
リスナーが接続要求を受け入れるアドレスにlocalhostを許可するため、リスナーのADDRESS_LISTに「(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))」を追記します。localhostを許可しない場合、PGXサーバーからDatabase接続する際に以下エラーが発生します。
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
(略)
Caused by: java.io.IOException: Connection refused, socket connect lapse 1 ms. /127.0.0.1 1521 0 1 true
Cytoscapeを実行しDB接続
ローカルPCにインストールしていたCytoscapeを「startCytoscape.bat」を実行して起動します。Cytoscapeよりオリジナルで提供されている「cytoscape.bat」ではなく、プロパティ・グラフ、PGX機能活用のため「startCytoscape.bat」を利用します。以下、起動画面です。
起動後、「File」タブより辿り「Connect to Oracle Database」を選択します。
表示されたダイアログに「JDBC url」(SSHポート転送元として指定したポートを利用)、「Username」、「Passwrd」を入力するとDBに格納済みの「Graph name」を表示できます。以下例では「CONNECTIONS」という名称のプロパティ・グラフが格納済みです。
Cytoscapeよりプロパティ・グラフ内ノードのページランクを求め、トップ5を描画
「Choose the starting point」欄より「page rank」を選択し、「Analyst service endpoint」にPGXサーバーを指定(SSHポート転送元)、「Top-ranked」に「5」を入力しをクリックします。
以下、出力イメージです。トップ5のノードが出力されますが、ノードidが表示されているため、表示項目を変更しています。
ノードの繋がりを可視化するため、全ノードを選択し、各ノードに隣接しているノードを表示します。
グラフレイアウトは以下のように用意されているため、グラフの特性や表現したい目的に応じて選択ができます。
CytoscapeよりPGQLを実行し結果を描画
「Start from PGQL」タブを選択し、上記と同様にDB、PGXサーバーへの接続設定をし、画面中部のテキストボックスにPGQLを記載します。
画面下部のをクリックすることで結果が描画されます。
Oracleフラット・ファイルからの描画
DBに格納されていないプロパティ・グラフでも、フラットファイル(opv, opeファイル)があれば、Cytoscapeで描画できます。
以下のように「View」タブから「Visualize text files (opv and ope files)」を選択し、opv, opeファイルを指定します。
リファレンス
Effective Graph Visualization with Cytoscape and Oracle's Property Graph Database
Oracle Cloud Infrastructure 環境へのアクセスにまつわる小ネタ集
サーバー・モードで起動する