9.1.1 readGraphByName
APIのオプションの指定
readGraphByName
APIを使用してプロパティ・グラフ・ビュー(PGビュー)をロードする場合は、グラフ最適化オプションまたはOnMissingVertexOption
、あるいはその両方を指定できます。
PGビューを名前でロードする際、ReadGraphOptionインタフェースでは追加のoptions
パラメータがサポートされます。
次の各項では、ReadGraphOption
インタフェースでサポートされている様々なオプションについて説明します。
グラフ最適化オプションの使用
PGビューを名前でロードする際の読取りまたは更新のパフォーマンスを最適化するには、次のいずれかのoptions
を使用します。
ReadGraphOption.optimizeFor(GraphOptimizedFor.READ)
: ロードされるグラフをREAD用に最適化することを指定します。ReadGraphOption.optimizeFor(GraphOptimizedFor.UPDATES)
: ロードされるグラフをUPDATE用に最適化することを指定します。ReadGraphOption.synchronizable()
: ロードされるグラフが同期できることを指定します。
次の点に注意してください。
-
synchronizable()
オプションは、UPDATE
およびREAD
と組み合せて使用できます。ただし、UPDATE
オプションとREAD
オプションは同時に使用できません。 SYNCHRONIZABLE
オプションのPGビューをロードする場合は、頂点キーとエッジ・キーが数値であり、コンポジットではないことを確認します。
次の例では、READ
およびSYNCHRONIZABLE
オプションのPGビューをロードします:
opg4j> var graph = session.readGraphByName("BANK_GRAPH_VIEW", GraphSource.PG_VIEW,
...> ReadGraphOption.optimizeFor(GraphOptimizedFor.READ),
...> ReadGraphOption.synchronizable())
graph ==> PgxGraph[name=BANK_GRAPH_VIEW_2,N=1000,E=5001,created=1648457198462]
PgxGraph graph = session.readGraphByName("BANKDATAVIEW", GraphSource.PG_VIEW, "BANK_GRAPH_VIEW", GraphSource.PG_VIEW,
ReadGraphOption.optimizeFor(GraphOptimizedFor.READ),
ReadGraphOption.synchronizable());
OnMissingVertex
オプションの使用
エッジのソース頂点または宛先頂点のいずれか、あるいはその両方が欠落している場合は、頂点が欠落しているエッジを処理するための動作を指定するOnMissingVertexOption
を使用できます。このオプションでは、次の値がサポートされています。
ReadGraphOption.onMissingVertex(OnMissingVertex.ERROR)
: これはデフォルト・オプションで、頂点が欠落しているエッジに対してエラーをスローする必要があることを指定します。ReadGraphOption.onMissingVertex(OnMissingVertex.IGNORE_EDGE)
: 欠落した頂点のエッジを無視する必要があることを指定します。ReadGraphOption.onMissingVertex(OnMissingVertex.IGNORE_EDGE_LOG)
: 欠落した頂点のエッジを無視し、無視されたすべてのエッジをログに記録する必要があることを指定します。ReadGraphOption.onMissingVertex(OnMissingVertex.IGNORE_EDGE_LOG_ONCE)
: 欠落した頂点のエッジを無視し、最初の無視されたエッジのみをログに記録する必要があることを指定します。
次の例では、頂点が欠落しているエッジを無視し、最初の無視されたエッジのみをログに記録することによって、PGビューをロードします。ログを表示するには、/etc/oracle/graph/logback.xml
のデフォルトのLogback構成ファイルと、/etc/oracle/graph/logback-server.xml
のグラフ・サーバー(PGX)ロガー構成ファイルを更新して、DEBUGログを記録する必要があります。そのようにすると、無視されたエッジを/var/opt/log/pgx-server.log
ファイルで確認できます。
opg4j> session.readGraphByName("REGIONS", GraphSource.PG_VIEW,
...> ReadGraphOption.onMissingVertex(OnMissingVertex.IGNORE_EDGE_LOG_ONCE))
$7 ==> PgxGraph[name=REGIONVIEW_3,N=27,E=18,created=1655903219910]
PgxGraph graph = session.readGraphByName("REGIONS", GraphSource.PG_VIEW, ReadGraphOption.onMissingVertex(OnMissingVertex.IGNORE_EDGE_LOG_ONCE));