7 グラフ視覚化アプリケーション(GraphViz)

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

7.1 グラフ視覚化アプリケーション(GraphViz)について

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

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

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

7.2 GraphVizのデプロイ

GraphVizのデプロイでは、$PG_HOMEを設定し、Big Data Spatial and Graphプロパティ・グラフのインストール・ディレクトリを指すようにしてください。/opt/oracle/oracle-spatial-graph/property_graph

7.2.1 デモ環境およびテスト環境へのGraphVizのデプロイ

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

注意:

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

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

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

mTLSを介したインメモリー分析サーバーとのセキュアな接続を作成するには、GraphVizをOracle WebLogic Serverにデプロイする必要があります。

ユーザー、GraphVizおよびインメモリー分析サーバー間の通信はすべて暗号化されます。

次の手順は、Oracle WebLogic Server 12.2.1.3についてのものです。次のものがあることを確認します。

  • セキュアにデプロイされたPGXサーバーのHTTPSエンドポイント(相互TLSを使用)
  • PGXで認証するための、認証されたクライアント証明書と信頼ストア(パスワードで保護されたJKS形式)へのアクセス権限
  1. WebLogic Serverを起動します。
    # Start Server
    cd $MW_HOME/user_projects/domains/base_domain
    ./bin/startWebLogic.sh
    
  2. PGXクライアント証明書をWebLogic Serverに登録します。

    認可されたクライアント証明書が信頼ストアにすでに追加されている場合は、信頼ストアを使用するためにはWebLogic Serverを指定する必要があります。WLSで信頼ストアを指定するには、多くの方法があります。ただし、WebLogicの管理インタフェースを使用してストアの場所とパスワードを設定する方法をお薦めします。

    管理コンソール(デフォルトではhttp://localhost:7001/console)に移動して、「環境」(左パネル) >「サーバー」(左側パネル) > myserver(admin)(メイン・パネル) >「SSL」(上部タブ・バー)を選択します。

    • 「SSL」メニューで、キーストア・タイプ(「カスタム・アイデンティティとカスタム信頼」)を選択します。
    • アイデンティティ・キーストアの場合は、保護されたPGXサーバーによって信頼されている署名済証明書があるキーストア・ファイルへのパスを入力します。そのキーストアのパスワードを追加します。
    • 信頼キーストアの場合は、PGXサーバー証明書を含む、信頼できる証明書のチェーンが含まれるパスを入力します。そのキーストアのパスワードを追加します。PGXの設定によっては、これらの2つのキーストアが同じファイルになる場合があります。
    • 両方のキーストアについて、正しい「カスタム・アイデンティティ・キーストアのタイプ」を選択します。Java KeyStoreの場合、正しいタイプはJKSです。このパラメータでは大文字と小文字が区別されることに注意してください。
  3. トンネリングを有効にします。

    HTTPを介してGraphViz WARファイルをデプロイできるようにするには、最初にトンネリングを有効にする必要があります。WebLogic管理コンソールで、「環境」(左パネル) >「サーバー」(左パネル) >「myserver(admin)」(メイン・パネル) >「プロトコル」(上部タブ・バー) >「トンネリングの有効化」チェック・ボックスを選択して「保存」をクリックします。

  4. アウトバウンド接続用の双方向TLSを使用するようにWebLogic Serverを構成します。

    この構成は、WLSTスクリプトを使用するのが最も簡単です。WebLogic Serverスクリプト・ツールにアクセスするには、次のコマンドを実行します。

    source $MW_HOME/user_projects/domains/base_domain/wlserver/server/bin/setWLSEnv.sh
    java weblogic.WLST
    

    スクリプト・ツールで、次のスクリプトを実行し、マーカー<<...>>を環境に合う値に置き換えます。

    url="t3://localhost:7001"
    adminUsername="<<admin username>>"
    adminPassword="<<admin password>>"
    connect(adminUsername, adminPassword, url)
    edit()
    server=cmo.lookupServer('<<server name>>')
    cd('Servers')
    cd('AdminServer')
    startEdit()
    cd('SSL')
    cd('<<server name>>')
    ssl = server.getSSL()
    ssl.setUseServerCerts(true)
    ssl.setUseClientCertForOutbound(true)
    ssl.setClientCertAlias("<<authorized cert alias>>")
    ssl.setClientCertPrivateKeyPassPhrase("<<cert alias password>>")
    save()
    activate()
    disconnect()
    exit()
    
  5. GraphVizデプロイメント記述子を構成します。

    これでWLSはアウトバウンドTLSを使用するように構成されたため、セキュアなPGXデプロイメントを指すようにGraphVizを構成する必要があります。これを行うには、GraphViz WARファイル内のWEB-INF/web.xmlファイルを変更します。WARファイルは、$PG_HOME/pgviz/pgviz-webapp-<<version>>.warにあります。

    これを行う1つの方法として、WARファイルを抽出し、ファイルの内容を直接変更する方法があります。抽出するには、次のようにします。

    unzip $PG_HOME/pgviz/pgviz-webapp-*.war -d /tmp/pgviz/

    これで、任意のファイル・エディタを使用してweb.xml記述子を編集できるようになりました。次に例を示します。

    nano /tmp/pgviz/WEB-INF/web.xml

    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>
    
  6. Webアプリケーション認証を構成します。

    GraphVizユーザーの認証方式を構成します。WebLogic Serverには、Webアプリケーションのユーザーを認証する様々な方法があります。これらの手順では、簡単に設定できるBASIC Auth認証方式を使用します。ただし、ほとんどのユースケースではBASIC Authがセキュアとみなされないため、組織に適した認証方法について自社のシステム管理者に確認し、方法が異なる場合はWebLogic Serverを構成してその方法を使用します。

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

    <security-constraint>
          <web-resource-collection>
                <web-resource-name>pgviz</web-resource-name>
                <url-pattern>/*</url-pattern>
               <http-method>GET</http-method>
          </web-resource-collection>
          <auth-constraint>
              <role-name>webuser</role-name> 
          </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>default</realm-name>
    </login-config>
     <security-role>
         <role-name>webuser</role-name>
     </security-role>
    

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

    <security-role-assignment>
        <role-name>webuser</role-name>
        <principal-name>myGroup</principal-name>
    </security-role-assignment>
    
  7. WARファイルを再パッケージ化します。

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

    # create a backup of the original file
    mv $PG_HOME/pgviz/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 $PG_HOME/pgviz/pgviz-webapp-<<version>>.war
    

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

    java weblogic.Deployer -adminurl <<admin-console-url>> -username <<admin-user>> -password <<admin-password>> -name $PG_HOME/pgviz/pgviz-webapp-<<version>>.war -undeploy
  9. デプロイメントをテストします。

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

    ブラウザがユーザーとパスワードの入力を求めます。ログイン後に、GraphVizのユーザー・インタフェース(UI)が表示され、PGXからのグラフが取得されます。

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

7.3 GraphVizの使用

GraphVizアプリケーションの主なエントリ・ポイントは、クエリー・エディタとグラフ・リストです。

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

問合せの準備ができて、目的のグラフが選択されたら、「Run」をクリックして問合せを実行します。次の図は、グラフ内の頂点から他の頂点へのすべてのエッジを識別する問合せの視覚化を示しています。

図7-1 問合せの視覚化

図7-1の説明が続きます
「図7-1 問合せの視覚化」の説明

問合せが成功すると、ノードとその接続を含むグラフの視覚化が表示されます。ノードまたは接続を右クリックすると、ツールチップ情報を表示でき、ノードをドラッグして動かすことができます。

7.3.1 GraphVizモード

右のボタンで、グラフ操作とズーム/移動の2つのモードを切り替えられます。

  • Graph Manipulation」モードでは、視覚化を変更するアクションを実行できます。これらのアクションには次のものがあります。
    • Drop」は、選択した頂点を視覚化から削除します。ツールチップから実行することもできます。
    • Group」は複数の頂点を選択し、それらを閉じて1つにグループ化します。
    • Ungroup」は、閉じた頂点のグループを選択し、グループ化を解除します。
    • Expand」は、選択した頂点の構成可能な数の近傍(ホップ)を取得します。ツールチップから実行することもできます。
    • Focus」は、「Expand」のように構成可能な数の近接を取得し、他のすべての頂点を削除します。ツールチップから実行することもできます。
    • Undo」は、最後のアクションを元に戻します。
    • Redo」は、最後のアクションをやり直します。
    • Reset」は、問合せの後に視覚化を元の状態にリセットします。
  • Zoom/Move」モードでは、ズーム・インおよびズーム・アウトしたり、視覚化の別の部分に移動したりできます。「Pan to Center」ボタンを使用すると、ズームがリセットされ、ビューは元のビューに戻ります。

スティッキー・モードと呼ばれる追加モードを使用すると、ノードのドラッグ操作を取り消すことができます。

7.3.2 GraphVizの設定

Settings」ボタンをクリックして、GraphVizの設定ウィンドウを表示できます。

設定ウィンドウでは、可視化の一部のパラメータを変更でき、「General」、「Visualization」および「Highlights」のタブがあります。次の図は、このウィンドウで「Visualization」タブが選択された状態を示しています。

図7-2 GraphVizの設定ウィンドウ

図7-2の説明が続きます。
「図7-2 GraphVizの設定ウィンドウ」の説明

General」タブには次が含まれています。

  • Number of Hops: 拡張およびフォーカス・アクションの構成可能なホップ数。
  • Truncate Label:最大長を超える場合は、ラベルを切り捨てます。
  • Max. visible label length:切捨て前の最大長。
  • Show Label on Hover:カーソルを合わせたときにラベルを表示するかどうかを制御します。
  • Display the graph legend:凡例を表示するかどうかを制御します。

Visualization」タブには次が含まれています。

  • Theme:明るいモードまたは暗いモードを選択します。
  • Edge Style:直線または曲線のエッジを選択します。
  • Edge Marker:矢印またはエッジなしマーカーを選択します。これは有向のエッジにのみ適用されます。
  • Similar Edges:保持または収集を選択します。
  • Page Size: 1ページに表示される頂点およびエッジの数を指定します。
  • Layouts:異なるレイアウト(ランダム、グリッド、円、同心など...)間で選択します。
  • Vertex Label:頂点ラベルとして使用するプロパティを選択します。
  • Vertex Label Orientation:頂点ラベルの相対位置を選択します。
  • Edge Label:エッジ・ラベルとして使用するプロパティを選択します。

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

図7-3 頂点の強調表示オプション

図7-3の説明が続きます。
「図7-3 頂点の強調表示オプション」の説明

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

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

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

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

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

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