3 Oracle Database表のプロパティ・グラフ・ビュー
Oracle Databaseに格納されているデータに対してプロパティ・グラフ・ビューを作成できます。これらのビューでPGQLを使用して、様々なグラフ分析操作を実行できます。
PGQLのCREATE PROPERTY GRAPH
文を使用すると、グラフに関するメタデータを含むビューのようなオブジェクトを作成できます。このグラフはPGQLを使用して問い合せることができます。
プロパティ・グラフ・ビューは、リレーショナル・データベース表に存在するデータに対して直接作成されます。グラフはデータベース表に格納されているため、スキーマがあります。これは、Oracle Databaseのプロパティ・グラフ・スキーマ・オブジェクトで説明されているように、データがソース表からプロパティ・グラフ・スキーマ表にコピーされる柔軟なスキーマで作成されるグラフとは異なります。
プロパティ・グラフ・ビューの主な利点の1つは、データベース表に対するすべての更新がすぐにグラフに反映されることです。
PGビューのメタデータ表
CREATE PROPERTY GRAPH
文が実行されるたびに、ユーザー独自のスキーマにメタデータ表が作成されます。
次の表では、CREATE PROPERTY GRAPH
文の実行時にグラフごとに作成されるメタデータ表のセットについて説明します。
表3-1で下線が付いているすべての列が、表の主キーの一部です。また、すべての列にNOT NULL
制約があります。
表3-1 PGビューのメタデータ表
表名 | 説明 |
---|---|
graphName_ELEM_TABLE$ |
グラフ要素(頂点/エッジ)表のメタデータ(要素表ごとに1行):
|
graphName_LABEL $
|
要素表のラベルのメタデータ(ラベルごとに1行、要素表ごとに1ラベル):
|
graphName_PROPERTY$ |
ラベルを介して公開される列を記述するメタデータ(プロパティごとに1行)
|
graphName_KEY$ |
頂点/エッジ・キーを記述するメタデータ(キーの列ごとに1行)
|
graphName_SRC_DST_KEY$ |
エッジのソース/宛先キーを記述するメタデータ(キーの列ごとに1行):
ノート: 現在、サポートされているのはSOURCE KEY ( ... ) REFERENCES T1 のみです。そのため、エッジのソース/宛先キーのみが格納されます。
|
例3-1 プロパティ・グラフ・ビューの作成
次のCREATE PROPERTY GRAPH
文について考えます。
CREATE PROPERTY GRAPH student_network
VERTEX TABLES(
person
KEY ( id )
LABEL student
PROPERTIES( name ),
university
KEY ( id )
PROPERTIES( name )
)
EDGE TABLES(
knows
key (person1, person2)
SOURCE KEY ( person1 ) REFERENCES person
DESTINATION KEY ( person2 ) REFERENCES person
NO PROPERTIES,
person AS studentOf
key (id, university)
SOURCE KEY ( id ) REFERENCES person
DESTINATION KEY ( university ) REFERENCES university
NO PROPERTIES
)
OPTIONS (PG_VIEW)
OPTIONS
句を使用すると、プロパティ・グラフ・スキーマ・グラフを作成するかわりに、プロパティ・グラフ・ビューを作成できます。単純にCREATE PROPERTY GRAPH
文をexecute
メソッドに渡す必要があります。
ノート:
- RDBMS Java APIまたはSQLclを使用して、プロパティ・グラフ・ビューを作成できます。
- グラフ・ビジュアライゼーション・ツールまたはSQLclを使用して、プロパティ・グラフ・ビューを問い合せることができます。
stmt.execute("CREATE PROPERTY GRAPH student_network ...");
これにより、次のメタデータ表が作成されます。
SQL> SELECT * FROM STUDENT_NETWORK_ELEM_TABLE$;
ET_NAME ET_TYPE SCHEMA_NAME TABLE_NAME
--------------- ---------- --------------- ---------------
PERSON VERTEX SCOTT PERSON
UNIVERSITY VERTEX SCOTT UNIVERSITY
KNOWS EDGE SCOTT KNOWS
STUDENTOF EDGE SCOTT PERSON
SQL> SELECT * FROM STUDENT_NETWORK_LABEL$;
LABEL_NAME ET_NAME ET_TYPE
--------------- --------------- ----------
STUDENT PERSON VERTEX
UNIVERSITY UNIVERSITY VERTEX
KNOWS KNOWS EDGE
STUDENTOF STUDENTOF EDGE
SQL> SELECT * FROM STUDENT_NETWORK_PROPERTY$;
PROPERTY_NAME ET_NAME ET_TYPE LABEL_NAME COLUMN_NAME
--------------- --------------- ---------- --------------- ---------------
NAME PERSON VERTEX STUDENT NAME
NAME UNIVERSITY VERTEX UNIVERSITY NAME
SQL> SELECT * FROM STUDENT_NETWORK_KEY$;
COLUMN_NAME COLUMN_NUMBER KEY_TY ET_NAME
--------------- ------------- ------ ---------------
ID 1 VERTEX PERSON
ID 1 VERTEX UNIVERSITY
PERSON1 1 EDGE KNOWS
PERSON2 2 EDGE KNOWS
ID 1 EDGE STUDENTOF
UNIVERSITY 2 EDGE STUDENTOF
SQL> SELECT * FROM STUDENT_NETWORK_SRC_DST_KEY$;
ET_NAME VT_NAME KEY_TYPE ET_COLUMN_NAME ET_COLUMN_NUMBER
--------------- ---------- ---------------- --------------- ----------------
KNOWS PERSON EDGE_SOURCE PERSON1 1
KNOWS PERSON EDGE_DESTINATION PERSON2 1
STUDENTOF PERSON EDGE_SOURCE ID 1
STUDENTOF UNIVERSITY EDGE_DESTINATION UNIVERSITY 1
プロパティ・グラフ・ビューstudent_network
でPGQL問合せを実行できるようになりました。
プロパティ・グラフ・ビューを作成、問合せおよび削除する方法の詳細は、プロパティ・グラフ・ビューに対するPGQL問合せの実行を参照してください。
- プロパティ・グラフ・ビューからのグラフ・サーバー(PGX)へのグラフのロード
プロパティ・グラフ・ビューからグラフ・サーバー(PGX)にグラフを名前でロードできます。 - JSONの使用による頂点プロパティおよびエッジ・プロパティの格納
頂点プロパティおよびエッジ・プロパティを単一のJSON値としてエンコードすることで、プロパティ・グラフ・ビューで柔軟なスキーマ・アプローチを採用できます。その後、これをプロパティ・グラフ・ビューでプロパティ値にマップできます。
親トピック: Oracleプロパティ・グラフ・スタート・ガイド