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行):
  • ET_NAME: 要素表の名前(別名)
  • ET_TYPE: VERTEXまたはEDGE
  • SCHEMA_NAME: 基礎となる表のスキーマの名前
  • TABLE_NAME: 基礎となる表の名前
graphName_LABEL$ 要素表のラベルのメタデータ(ラベルごとに1行、要素表ごとに1ラベル):
  • LABEL_NAME: ラベルの名前
  • ET_NAME: 要素表の名前(別名)
  • ET_TYPE: VERTEXまたはEDGE
graphName_PROPERTY$

ラベルを介して公開される列を記述するメタデータ(プロパティごとに1行)

  • PROPERTY_NAME: プロパティの名前
  • ET_NAME: 要素表の名前(別名)
  • ET_TYPE: VERTEXまたはEDGE
  • LABEL_NAME: このプロパティが属するラベルの名前
  • COLUMN_NAME: 列の名前(最初は、プロパティ名が列名と等しいケースのみが許可されます)
graphName_KEY$

頂点/エッジ・キーを記述するメタデータ(キーの列ごとに1行)

  • COLUMN_NAME: キーの列の名前
  • COLUMN_NUMBER: キー内の列の番号

    たとえば、KEY ( a, b, c )では、aの番号は1、bの番号は2、cの番号は3です。

  • KEY_TYPE: VERTEXまたはEDGE
  • ET_NAME: 要素表の名前(別名)

graphName_SRC_DST_KEY$

エッジのソース/宛先キーを記述するメタデータ(キーの列ごとに1行):

  • ET_NAME: 常にエッジ表である要素表の名前(別名)
  • VT_NAME: 頂点表の名前
  • KEY_TYPE: EDGE_SOURCEまたはEDGE_DESTINATION
  • ET_COLUMN_NAME: キー列の名前
  • ET_COLUMN_NUMBER: キー内の列の番号

    たとえば、KEY ( a, b, c )では、aの番号は1、bの番号は2、cの番号は3です。

ノート:

現在、サポートされているのは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問合せの実行を参照してください。