26 PGXプログラミング・ガイド

非同期Java APIを介して、すべてのPGX機能を使用できます。各非同期メソッドには同等の同期メソッドがあり、これはサーバーがレスポンスを生成するまでコール元のスレッドをブロックします。

これらのAPIは、次のいずれかまたは任意の組合せを実行できます。
  • PGX上の複雑な非ブロッキングJavaアプリケーション
  • JShellによって実行される単純な順次Javaスクリプト
  • JShellでのShellPerforming対話型グラフ分析

PGX APIのレイヤー

PGX APIは、いくつかの異なるJavaインタフェースで構成されます。次の表に示すように、各インタフェースは、PGXの抽象化の個別レイヤーを提供します。

表26-1 PGX APIインタフェース

インタフェース 説明
ServerInstance ServerInstanceクラスは、PGXサーバー・インスタンスへのアクセスをカプセル化し、セッションの作成、PGXエンジンの起動と停止、エンジン・ステータスの監視およびその他の管理タスクに使用できます。インスタンスがリモート・インスタンスを指す場合、管理機能へのアクセスには、デフォルトでHTTPレベルにおける特別な認可が必要です。
PgxSession PgxSessionは、インスタンスに現在接続しているアクティブなユーザーを表します。各セッションは、グラフの読取り、インメモリー・データ構造の作成、分析結果とカスタム・アルゴリズムの保持に使用できる独自のワークスペースをサーバー側で取得します。PgxSessionクラスには、新しい一時データ(現時点ではコレクション)を作成するための様々なメソッドが用意されています。セッションのアイドル時間が長すぎる場合、PGXエンジンは自動的にそれを破棄して、リソースが浪費されないようにします。
PgxGraph PgxGraphは、PGXサーバーによって管理されるグラフ・データへのクライアント側ハンドルを表します。グラフには、タイプVertexPropertyまたはEdgeProperty (あるいはその両方)の任意の量のプロパティを含めることができます。

ノート:

PGXでは現在、パーティション化されていないグラフのみがサポートされています。つまり、それぞれの頂点/エッジは、他のすべての頂点/エッジと同じ名前およびタイプの同じプロパティを持ちます。
PgxGraphクラスには、新しい一時データ(マップおよびコレクションを含む)を作成するための様々なメソッドに加えて、無向化、ソート、フィルタリングなどのグラフ変更操作が用意されています。
Analyst Analyst APIには、PGXが提供するすべての組込みアルゴリズムが含まれています。Analystオブジェクトは、アルゴリズムの呼出し中に作成したすべての一時データをトラッキングして、分析結果を保持します。Analystが破棄されると、それが作成したすべての結果がサーバー側で自動的に解放されます。
CompiledProgram CompiledProgramクラス(PGXアルゴリズムAPI)は、ランタイムコンパイルされたカスタム・アルゴリズムをカプセル化し、PgxGraphVertexPropertyなどのPGXデータ・オブジェクトを引数として使用して、それらのアルゴリズムを呼び出すことができるようにします。

詳細は、Javadocのoracle.pgx.apiパッケージを参照してください。