6 グラフ・ビジュアライゼーション・アプリケーション(GraphViz)

グラフ・ビジュアライゼーション・アプリケーション(GraphViz)により、プロパティ・グラフの対話型の探索やビジュアライゼーションが可能になります。

6.1 グラフ・ビジュアライゼーション・アプリケーション(GraphViz)について

GraphVizは、インメモリー・グラフ分析サーバーで動作する単一ページのWebアプリケーションです。

インメモリー・グラフ分析サーバーは、埋込みモードでデプロイしたり、Apache TomcatまたはOracle Weblogic Serverにデプロイできます。GraphVizでは、入力としてPGQL問合せを使用し、結果を視覚的にレンダリングします。クライアント側の探索およびビジュアライゼーション機能の豊富なセットにより、グラフ・データの新しいインサイトを明らかにすることができます。

GraphVizは、インメモリー分析サーバーで機能します。インメモリー分析サーバーの起動時に事前ロードされたか、クライアント・アプリケーションによって実行時にロードされ、graph.publish() APIを介して使用可能になった、インメモリー分析サーバーにロードされたグラフを視覚化できます。

6.2 GraphVizのデプロイ

GraphVizのデプロイでは、$PG_HOMEを設定し、ディレクトリ/opt/oracle/graphを指すようにする必要があります

6.2.1 デモ環境およびテスト環境のためのGraphVizのデプロイ

このアプローチは、GraphVizをテストまたはデモする上で信頼できる環境でのみ使用してください。

ノート:

PGX認証を無効にすると、すべてのユーザーがPGXに接続して、認証なしでビジュアライゼーションUIを開くことができます。認証を有効にしたセキュアなデプロイメントの場合、Oracle WebLogic Serverにデプロイします。

  1. /etc/oracle/graph/server.confenable_tlsfalseに設定します。
  2. インメモリー分析サーバーを起動する際に、事前ロードするグラフの構成ファイルを/etc/oracle/graph/pgx.confにリストすることにより、これらのグラフをリストします。次に例を示します。
    "preload_graphs": [{
             "name": "my-graph",
             "path": "/scratch/data/graphs/my-graph.json"
           }]
    
  3. サーバーを起動します: /opt/oracle/graph/pgx/bin/start-server
  4. ブラウザでhttp://localhost:7007/uiを開きます。

6.2.2 Oracle WebLogic ServerでのGraphVizのデプロイ

次の手順は、Oracle WebLogic Server 12.2.1.xでGraphVizをデプロイするためのものです。

  1. WebLogic Serverを起動します。
    # Start Server
    cd $MW_HOME/user_projects/domains/base_domain
    ./bin/startWebLogic.sh
    
  2. トンネリングを有効にします。

    HTTPを介してGraphViz WARファイルをデプロイできるようにするには、最初にトンネリングを有効にする必要があります。WebLogic管理コンソール(デフォルトではhttp://localhost:7001/console)に移動します。「環境」(左パネル)→「サーバー」(左パネル)を選択します。グラフ・ビジュアライゼーションを実行するサーバーをクリックします(メイン・パネル)。選択し(上部タブ・バー)、「トンネリングの有効化」を選択して「保存」をクリックします。

  3. GraphVizユーザー・インタフェースにアクセスできるグループおよびユーザーを作成します。管理コンソール(デフォルトではhttp://localhost:7001/console)に移動し、「セキュリティ・レルム」 (左パネル)→「myrealm」(メイン・パネル)→「ユーザーとグループ」(上部パネル)の順に選択し、1人以上のユーザーが含まれる新しいグループGraphAnalystsを作成します。GraphAnalystsグループに属するユーザーは、グラフ・ビジュアライゼーション・アプリケーションにアクセスできます。
  4. GraphVizデプロイメント記述子を構成します。

    GraphViz WARファイル内のWEB-INF/web.xmlファイルを変更します。Oracle Graph Serverパッケージをインストールすると、WARファイルは /opt/oracle/graph/graphviz/pgviz-webapp-<<version>>.warにあります。

    • ファイルの内容を直接変更するには、WARファイルを抽出します。たとえば、次のように抽出します。
      unzip /opt/oracle/graph/graphviz/pgviz-webapp-*.war -d /tmp/pgviz/
    • 任意のファイル・エディタを使用して、web.xml記述子を編集します。次に例を示します。
      nano /tmp/pgviz/WEB-INF/web.xml

    安全なPGXデプロイメントと通信するようにGraphVizを構成するには:

    1. graphviz.driver.classコンテキスト・パラメータを見つけます。必要に応じて、値をoracle.pgx.graphviz.driver.PgxDriverに設定します。次に例を示します。
      <context-param>
          <param-name>graphviz.driver.class</param-name>
          <param-value>oracle.pgx.graphviz.driver.PgxDriver</param-value>
      </context-param>
    2. pgx.base_urlコンテキスト・パラメータを見つけます。セキュアなPGXデプロイメント・エンドポイントに一致するように値を変更します。正しいポートとともに、正しいFQDNまたはIPアドレスを使用します。プロトコルとしてhttpではなくhttpsを指定してください。書式の例を次に示します。
      <context-param>
          <param-name>pgx.base_url</param-name>
          <param-value>https://<<fqdn-or-ip>>:<<port>></param-value> 
      </context-param>
      

    Oracle Database上のPGQLと通信するようにGraphVizを構成するには

    1. Weblogic ServerでJDBCデータ・ソースを作成します(構成ステップは、Weblogic Serverのドキュメントを参照してください: https://docs.oracle.com/en/middleware/fusion-middleware/weblogic-server/12.2.1.4/jdbca/jdbc_datasources.html)。
    2. graphviz.driver.classコンテキスト・パラメータを見つけます。必要に応じて、値をoracle.pg.rdbms.PgqlDriverに設定します。次に例を示します。
      <context-param>
          <param-name>graphviz.driver.class</param-name>
          <param-value>oracle.pg.rdbms.PgqlDriver</param-value>
      </context-param>
    3. 値として作成したデータ・ソースの名前を参照するコンテキスト・パラメータgraphviz.driver.rdbms.datasource_idを設定します。次に例を示します。
      <context-param>
          <param-name>graphviz.driver.rdbms.datasource_id</param-name>
          <param-value>myContainerDataSource</param-value>
      </context-param>

      myContainerDataSourceを、ステップaで作成したWebLogic Server JDBCデータソースの名前に置き換えます。

  5. Webアプリケーション認証を構成します。

    Webアプリケーション認証を構成します。web.xml構成ファイル(前述のステップと同じファイル)の<web-app>要素に次の行を追加して、セキュリティ制約を有効にします。

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>freePages</web-resource-name>
            <url-pattern>/login/*</url-pattern>
            <url-pattern>/login/css/*</url-pattern>
            <url-pattern>/login/img/*</url-pattern>
            <url-pattern>/error_pages/*</url-pattern>
        </web-resource-collection>
    </security-constraint>
    <security-constraint>
        <display-name>SecurityCheck</display-name>
        <web-resource-collection>
            <web-resource-name>SecurityCheck</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <role-name>analysts</role-name>
        </auth-constraint>
        <user-data-constraint>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>myrealm</realm-name>
        <form-login-config>
            <form-login-page>/login/login.html</form-login-page>
            <form-error-page>/login/login_failed.html</form-error-page>
        </form-login-config>
    </login-config>
    <security-role>
        <role-name>analysts</role-name>
    </security-role>
    <error-page>
        <error-code>403</error-code>
        <location>/login/login_failed.html</location>
    </error-page>

    /tmp/pgviz/WEB-INF/weblogic.xmlディスクリプタ・ファイルで、ステップ3で作成したWeblogicグループにアプリケーション・セキュリティ構成ロールをマップします。<principal-name>タグを使用してデフォルトのセキュリティ・レルムの任意のユーザーまたはグループを指定できます。

    <security-role-assignment>
        <role-name>webuser</role-name>
        <principal-name>myGroup</principal-name>
    </security-role-assignment>
    
  6. (オプション) PGX証明書をWebLogic Serverに登録します。ノート: このステップは、PGXサーバーとの通信にGraphVizを使用する場合にのみ必要です。次のものがあることを確認します。
    • セキュアにデプロイされたPGXサーバーのHTTPSエンドポイント(相互TLSを使用)
    • PGXを使用して認証するために認可されたクライアント証明書および信頼ストア(パスワードで保護されたJKS形式)へのアクセス

    Weblogicを信頼できるPGXクライアントとして識別するクライアント証明書がすでにキーストアに追加されているとした場合、PGXへのアウトバウンドHTTPS接続を確立するときにキーストアを使用するようにWebLogic Serverを構成する必要があります。また、PGXサーバー証明書がデフォルトでWebLogic Serverによって信頼されている認証局によって署名されていない場合は、その証明書を信頼するようにWeblogic Serverを構成する必要があります。

    管理コンソール(デフォルトではhttp://localhost:7001/console)に移動し、「環境」(左パネル)→「サーバー」(左パネル)を選択します。メイン・パネルで、グラフ・ビジュアライゼーション・アプリケーションを実行するサーバーをクリックします。次に、「構成」タブの2行目にある「サーバーの起動」タブを選択します。「引数」テキスト領域で、次のシステム・プロパティを指定します。

    -Djavax.net.ssl.trustStore=<<path-to-truststore>>
          -Djavax.net.ssl.keyStore=<<path-to-keystore>>
          -Djavax.net.ssl.keyStorePassword=<<keystore-password>>

    説明:

    1. <<path-to-truststore>>は、PGXサーバーとの信頼を確立するために必要な証明書が含まれるトラスト・ストア・キーストア(JKS形式)ファイルへのローカル・ファイル・パスです。
    2. <<path-to-truststore>><<path-to-keystore>>は、PGXによって信頼されるWeblogic Serverのクライアント証明書が含まれるキーストア(JKS形式)ファイルへのローカル・ファイル・パスです。
    3. <<keystore-password>>は、キーストア・ファイルのキーストア・パスワードです。
    次に、「保存」をクリックします。
  7. WARファイルを再びパッケージします。

    web.xmlおよびweblogic.xmlファイルを編集するためにWARファイルを圧縮解除したため、アプリケーションをデプロイする前にこのファイルを再パッケージ化してください。

    # create a backup of the original file
    mv /opt/oracle/graph/graphviz/pgviz-webapp-<<version>>.war ~/pgviz-webapp-<<version>>.war.bkp
    cd /tmp/pgviz/
    jar -cvf $PG_HOME/pgviz/pgviz-webapp-<<version>>.war *
    
  8. 再パッケージ化したWARファイルをデプロイします。

    再パッケージ化したWARファイルをWebLogic Serverにデプロイするには、次のコマンドを使用します。この場合、<<...>>マーカーは、インストールに一致する値に置き換えます。

    cd $MW_HOME/user_projects/domains/base_domain
    source bin/setDomainEnv.sh
    java weblogic.Deployer -adminurl <<admin-console-url>> -username <<admin-user>> -password <<admin-password>> -deploy -upload /opt/oracle/graph/graphviz/pgviz-webapp-<<version>>.war

    再度アンデプロイするには、次のコマンドを使用します。

    java weblogic.Deployer -adminurl <<admin-console-url>> -username <<admin-user>> -password <<admin-password>> -name /opt/oracle/graph/graphviz/pgviz-webapp-<<version>>.war -undeploy
  9. インバウンドWeblogic Server接続のSSLを有効にします。(暗号化された接続を有効にする方法は、Weblogic Serverのドキュメントを参照してください。)
  10. デプロイメントをテストします。

    デプロイメントをテストするには、ブラウザ内でhttps://<<fqdn-ip>>:<<port>>/uiにナビゲートします

    ブラウザによって、ユーザー名およびパスワードが要求されます。ログイン後に、GraphVizのユーザー・インタフェース(UI)が表示され、PGXからのグラフが取得されます。

    • 認証が失敗した場合、または何も戻されない場合は、セキュリティ・レルムに問題がある可能性があります。レルムがユーザーまたはグループとともに存在することを確認してください。
    • UIがロードされたが、グラフを取得するコールに失敗した場合、証明書にエラーがある可能性があります。信頼ストアに格納された証明書をリストして、PGX用の署名付き証明書があることを確認します。

6.3 GraphVizの使用

GraphVizアプリケーションの主なエントリ・ポイントは、問合せエディタおよびグラフ・リストです。

GraphVizを起動すると、PGXにロードされたグラフがグラフ・リストに移入されます。グラフに対して問合せを実行するには、そのグラフを選択します。問合せでは、視覚化できるPGQL問合せを作成できます。(PGQLは、GraphVizでサポートされているSQLのような問合せ言語です。)

問合せの準備ができて、目的のグラフを選択したら、実行アイコンをクリックして問合せを実行します。次の図は、グラフ内の頂点から他の頂点へのすべての有向エッジを識別する問合せのビジュアライゼーションを示しています。

図6-1 問合せの視覚化

図6-1の説明を次に示します
「図6-1 問合せの視覚化」の説明

図6-2 問合せの視覚化

図6-2の説明を次に示します
「図6-2 問合せの視覚化」の説明

問合せが成功すると、ノードとその接続を含むグラフのビジュアライゼーションが表示されます。ノードまたは接続を右クリックすると、ツールチップ情報が表示され、ノードをドラッグして移動できます。

6.3.1 GraphVizの並列度

「並列度」入力フィールドを使用すると、特定の問合せの実行に使用されている並列度をカスタマイズできます。

デフォルトでは、0 (ゼロ)に設定されており、基礎となる問合せ実行エンジンのデフォルト値が使用されています。0より大きい値を指定すると、基礎となる問合せ実行エンジンでは指定された並列度が使用されます。

ただし、基礎となるエンジンがインメモリー・グラフ・サーバー(PGX)の場合は、PGXサーバーを構成してエンタープライズ・スケジューラを有効にする必要があります。そうしないと、0より大きい並列度の値はエラーになります。

6.3.2 GraphVizのモード

右のボタンを使用すると、「グラフの操作」と「ズーム/移動」の2つのモードを切り替えることができます。

  • 「グラフの操作」モードでは、ビジュアライゼーションを変更するアクションを実行できます。次のアクションがあります。
    • 「削除」は、選択した頂点をビジュアライゼーションから削除します。ツールチップから実行することもできます。
    • 「グループ」は、複数の頂点を選択し、それらを1つの頂点にまとめます。
    • 「グループ解除」は、まとめた頂点のグループを選択し、それらのグループを解除します。
    • 「展開」は、選択した頂点の構成可能な隣接範囲(ホップ)の数を取得します。ツールチップから実行することもできます。
    • 「展開」などの「フォーカス」は、隣接範囲の構成可能な数を取得しますが、他のすべての頂点の削除も行います。ツールチップから実行することもできます。
    • 「元に戻す」は、最後の操作を元に戻します。
    • 「再実行」は、最後の操作をやり直します。
    • 「リセット」は、問合せの後にビジュアライゼーションを元の状態にリセットします。
  • 「ズーム/移動」モードでは、ズーム・インおよびズーム・アウトしたり、ビジュアライゼーションの別の部分に移動できます。「中央にパン」ボタンは、ズームをリセットし、ビューを元のビューに戻します。

「固定」モードと呼ばれる追加モードを使用すると、ノードのドラッグ操作を取り消すことができます。

6.3.3 GraphVizの設定

「設定」歯車アイコンをクリックして、GraphViz設定ウィンドウを表示できます。

設定ウィンドウでは、ビジュアライゼーションの一部のパラメータを変更でき、「一般」、「ビジュアライゼーション」および「強調表示」のタブがあります。次の図は、このウィンドウで「ビジュアライゼーション」タブが選択された状態を示しています。

図6-3 GraphVizの設定ウィンドウ

図6-3の説明を次に示します
「図6-3 GraphVizの設定ウィンドウ」の説明

「一般」タブには次が含まれています。

  • ホップ数: 拡張操作およびフォーカス操作の構成可能なホップ数。
  • ラベルの切捨て: 最大長を超える場合は、ラベルを切り捨てます。
  • 表示ラベル最大長: 切捨て前の最大長。
  • ホバー時にラベルを表示: カーソルを合せたときにラベルを表示するかどうかを制御します。
  • グラフの凡例の表示: 凡例を表示するかどうかを制御します。

「ビジュアライゼーション」タブには次が含まれています。

  • テーマ: 明るいモードまたは暗いモードを選択します。
  • 辺スタイル: 直線エッジまたは曲線エッジを選択します。
  • 辺マーカー: 矢印を選択するか、またはエッジ・マーカーを選択しません。これは有向エッジにのみ適用されます。
  • 類似辺: 保持または収集を選択します。
  • ページ・サイズ: 1ページごとに表示される頂点およびエッジの数を指定します。
  • レイアウト: 異なるレイアウト(ランダム、グリッド、円、同心、...)の中から選択します。
  • 頂点ラベル: 頂点ラベルとして使用するプロパティを選択します。
  • 頂点ラベルの方向: 頂点ラベルの相対位置を選択します。
  • 辺ラベル: エッジ・ラベルとして使用するプロパティを選択します。

「強調表示」タブには、エッジや頂点の外観を変更できるカスタマイズ・オプションが含まれています。強調表示は、単一または複数の要素上の条件(フィルタ)に基づいて適用できます。次の図に、頂点の条件(country = United States)と視覚的な強調表示オプションを示します。

図6-4 頂点の強調表示オプション

図6-4の説明を次に示します
「図6-4 頂点の強調表示オプション」の説明

強調表示のフィルタには、要素のプロパティに関する複数の条件を含めることができます。次の条件がサポートされています。

  • = (等しい)
  • < (より小さい)
  • <=(以下)
  • > (より大きい)
  • >=(以上)
  • != (等しくない)
  • ~ (フィルタは正規表現)
  • * (任意: ワイルドカードと同様に、任意のものと一致)

視覚的な強調表示のカスタマイズ・オプションは次のとおりです。

  • 辺:
    • ラベル
    • スタイル
    • アニメーション
  • 頂点:
    • サイズ
    • アイコン
    • ラベル
    • イメージ
    • アニメーション

メイン・ウィンドウの「保存」および「インポート」ボタンをクリックすると、強調表示オプションをエクスポートおよびインポートできます。「保存」では、強調表示オプションを保持でき、「ロード」では、前に保存した強調表示オプションを適用できます。

「保存」をクリックすると、強調表示構成を持つJSONオブジェクトを含むファイルが保存されます。後でそのファイルをロードして、保存したセッションの強調表示を復元できます。

6.3.4 ライブ検索の使用

ライブ検索では、表示されたグラフを検索し、各アイテムにライブのファジー検索スコアを追加できます。これにより、検索結果をすぐにグラフで視覚的に示す強調表示を作成できます。

問合せを実行してグラフが表示された場合は、設定ダイアログにライブ検索を追加できます。「全般」タブの下部に、次のオプションが表示されます。

  • ライブ検索の有効: ライブ検索機能を有効にし、検索入力をビジュアライゼーションに追加して、検索をさらにカスタマイズできるようにします。
  • 検索範囲の有効化: 「頂点」、「辺」、またはその両方のプロパティを検索するかどうかを選択できます。
  • 検索するプロパティ: 「検索範囲の有効化」で選択した内容に基づいて、検索する1つ以上のプロパティを設定できます。たとえば、辺の検索を無効にしても辺からのプロパティを選択していた場合、辺の検索を再度有効にすると、プロパティが保存されて追加されます。(これは頂点に対しても機能します)。
  • 詳細設定: 検索をさらに詳細に調整できます。それぞれの拡張オプションは、コンテキスト・ヘルプとともにドキュメント化されており、有効にすると表示されます。
    • 場所: テキスト内でパターンが見つかると予想されるおおよその場所を決定します。
    • 距離: あいまいな場所(「場所」で指定)に対する一致の距離を決定します。あいまいな場所から一定文字数離れた完全文字一致は、スコアが完全な不一致となります。距離0では、指定した正確な場所に一致が存在する必要があり、距離1000では、しきい値0.8を使用した場合にその場所から800文字以内に完全一致が見つかる必要があります。
    • パターン最大長: パターンの最大長。パターン(つまり、検索問合せ)が長いほど、検索操作はより集中的なものとなります。パターンがこの値を超えると、エラーが発生します。
    • 最小文字一致: パターンの最小長。パターンの長さがこの値を下回ると、エラーが発生します。

検索が有効になっている場合、入力はグラフ・ビジュアライゼーション・コンポーネントの左上に表示されます。入力を開始すると、設定と検索の一致に基づいて、すべての頂点または辺にスコアが追加されます。

結果を視覚的に確認できるようにするには、補間をライブ検索のスコアに設定した強調表示と、必要な視覚的変更に基づく別の設定を追加する必要があります。

6.3.5 URLパラメータを使用したGraphVizの制御

ユーザー・インタフェースのフォーム・フィールドを使用するかわりに、URLパラメータを介してGraphVizの入力データを提供できます。

URLにパラメータを指定すると、GraphVizアプリケーションにより指定された問合せが自動的に実行され、画面に入力フォーム・フィールドが表示されなくなります。このため、結果のビジュアライゼーション出力のみが表示されます。この機能は、結果のグラフ・ビジュアライゼーションをiframeなどを使用して既存のアプリケーションに埋め込む場合に便利です。

次の表に、使用可能なURLパラメータを示します。

表6-1 使用可能なURLパラメータ

パラメータ名 値(URLエンコードが必要) オプションかどうか
グラフ グラフ名 string いいえ
parallelism 必要な並列度 number はい(デフォルトではサーバー側のデフォルトの並列度)
問合せ PQL問合せ string いいえ

次のURLは、PGQL問合せSELECT v, e MATCH (v) -[e]-> () LIMIT 10を並列度4のグラフmyGraphで視覚化する例を示しています。

https://myhost:7007/ui/?query=SELECT%20v%2C%20e%20MATCH%20%28v%29%20-%5Be%5D-%3E%20%28%29%20LIMIT%2010&graph=myGraph&parallelism=4