LoginSignup
4
0

More than 5 years have passed since last update.

PG/PGX - OCI上のプロパティ・グラフをローカルPCのCytoscapeで可視化

Last updated at Posted at 2019-01-13

はじめに

本記事について

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を更新します。
サービスコンソール.PNG

CytoscapeからOCI上のOracle Databaseに接続するため、TeratermでSSHポート転送の設定をします。リモート側ホストにはPublic IPを指定します。
ssh_port_1.PNG

CytoscapeからOCI上のPGXサーバーに接続するため、TeratermでSSHポート転送の設定をします。リモート側ホストにはPrivate IPを指定します。
ssh_port_2.PNG

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」を利用します。以下、起動画面です。
image.png
起動後、「File」タブより辿り「Connect to Oracle Database」を選択します。
image.png
表示されたダイアログに「JDBC url」(SSHポート転送元として指定したポートを利用)、「Username」、「Passwrd」を入力するとDBに格納済みの「Graph name」を表示できます。以下例では「CONNECTIONS」という名称のプロパティ・グラフが格納済みです。
image.png

Cytoscapeよりプロパティ・グラフ内ノードのページランクを求め、トップ5を描画

「Choose the starting point」欄より「page rank」を選択し、「Analyst service endpoint」にPGXサーバーを指定(SSHポート転送元)、「Top-ranked」に「5」を入力しimage.pngをクリックします。
image.png

以下、出力イメージです。トップ5のノードが出力されますが、ノードidが表示されているため、表示項目を変更しています。
image.png

ノードの繋がりを可視化するため、全ノードを選択し、各ノードに隣接しているノードを表示します。
image.png

以下のように表示されます。
image.png

グラフレイアウトは以下のように用意されているため、グラフの特性や表現したい目的に応じて選択ができます。
image.png

CytoscapeよりPGQLを実行し結果を描画

「Start from PGQL」タブを選択し、上記と同様にDB、PGXサーバーへの接続設定をし、画面中部のテキストボックスにPGQLを記載します。
image.png
画面下部のimage.pngをクリックすることで結果が描画されます。
image.png

Oracleフラット・ファイルからの描画

DBに格納されていないプロパティ・グラフでも、フラットファイル(opv, opeファイル)があれば、Cytoscapeで描画できます。
以下のように「View」タブから「Visualize text files (opv and ope files)」を選択し、opv, opeファイルを指定します。
image.png
image.png

リファレンス

Effective Graph Visualization with Cytoscape and Oracle's Property Graph Database
Oracle Cloud Infrastructure 環境へのアクセスにまつわる小ネタ集
サーバー・モードで起動する

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0