18.2 オプションを使用したプロパティ・グラフの作成

グラフ最適化、および頂点が欠落しているエッジの処理の様々なオプションについて学習します。

CREATE PROPERTY GRAPH文でOPTIONS句を使用すると、次の各項で説明するオプションを指定できます。

グラフ最適化オプションの使用

問合せや分析、または更新操作を実行するためのグラフをロードできます。要件に応じて、CREATE PROPERTY GRAPH文のOPTIONS句を使用して、読取りまたは更新のパフォーマンスを最適化できます。

次の表に、OPTIONS句でサポートされる有効なオプションを示します。

表18-1 グラフ最適化オプション

オプション 説明
OPTIMIZED_FOR_READ これは、読取り集中型のシナリオに使用できます。
OPTIMIZED_FOR_UPDATES これはデフォルトのオプションで、高速更新に使用できます。
SYNCHRONIZABLE これにより、フラッシュバック・テクノロジを介してグラフを同期できるようになります。ただし、エッジ・キーのいずれかがコンポジット・キーであるか、または数値以外のキーである場合は、例外がスローされます。このような場合、通常はグラフのロードはできますが、PGXによって新しい(コンポジット以外および数値の)エッジ・キーが生成されます。そのため、このようなエッジをデータベースと同期することはできません。

たとえば、次のグラフは、OPTIMIZED_FOR_UPDATESおよびSYNCHRONIZABLEオプションを使用して設定されます。

CREATE PROPERTY GRAPH hr 
VERTEX TABLES ( 
employees LABEL employee, departments LABEL department 
) 
EDGE TABLES ( 
departments AS managed_by 
SOURCE KEY ( department_id ) REFERENCES departments (department_id)
DESTINATION employees 
NO PROPERTIES 
) OPTIONS (OPTIMIZED_FOR_UPDATES, SYNCHRONIZABLE)

ノート:

  • SYNCHRONIZABLEオプションは、OPTIMIZED_FOR_UPDATESおよびOPTIMIZED_FOR_READと組み合せて使用できます。ただし、OPTIMIZED_FOR_UPDATESOPTIMIZED_FOR_READは一緒には使用できず、一緒に使用すると例外がスローされます。
  • 同期可能なグラフを作成する場合は、頂点キーとエッジ・キーが数値であり、コンポジットではないことを確認します。

オプションを使用した頂点が欠落しているエッジの処理

エッジのソース頂点または宛先頂点のいずれか、あるいはその両方が欠落している場合は、CREATE PROPERTY GRAPH文のOPTIONS句で次のいずれかの値を構成できます。

  • IGNORE EDGE ON MISSING VERTEX: 欠落した頂点のエッジを無視する必要があることを指定します。
  • IGNORE EDGE AND LOG ON MISSING VERTEX: 欠落した頂点のエッジを無視し、無視されたすべてのエッジをログに記録する必要があることを指定します。
  • IGNORE EDGE AND LOG ONCE ON MISSING VERTEX: 欠落した頂点のエッジを無視し、最初の無視されたエッジのみをログに記録する必要があることを指定します。
  • ERROR ON MISSING VERTEX (デフォルト): 頂点が欠落しているエッジに対してエラーをスローする必要があることを指定します。

たとえば、次のグラフはERROR ON MISSING VERTEXオプションを使用して設定されます。

CREATE PROPERTY GRAPH region_graph 
VERTEX TABLES ( 
regions KEY (region_id), 
countries KEY (country_id)
) 
EDGE TABLES ( 
countries AS countries_regions 
SOURCE KEY ( country_id ) REFERENCES countries(country_id) 
DESTINATION KEY (region_id) REFERENCES regions(region_id) 
NO PROPERTIES 
) OPTIONS ( ERROR ON MISSING VERTEX)

実行すると、次のエラー・レスポンスが表示されます。

unknown vertex ID received in destination 4 of edge 5

IGNORE EDGE AND LOG ON MISSING VERTEXまたはIGNORE EDGE AND LOG ONCE ON MISSING VERTEXオプションを使用する場合は、/etc/oracle/graph/logback.xmlのデフォルトのLogback構成ファイルと、/etc/oracle/graph/logback-server.xmlのグラフ・サーバー(PGX)ロガー構成ファイルを更新して、DEBUGログを記録する必要があります。そのようにすることでのみ、無視されたエッジを/var/opt/log/pgx-server.logファイルで確認できます。