5.1.1 プロパティ・グラフ表(詳細情報)

プロパティ・グラフがデータベースに確立された後、いくつかの表がユーザーのスキーマに自動的に作成され、接頭辞としてグラフ名が、接尾辞としてVT$またはGE$が付きます。たとえば、myGraphという名前のグラフの場合、表myGraphVT$が作成されて頂点およびそのプロパティ(K/Vペア)が格納され、表myGraphGE$が作成されてエッジおよびそのプロパティが格納されます。

追加の内部表がIT$およびGT$の接尾辞で作成され、テキスト索引メタデータおよびグラフ・スケルトン(トポロジ構造)が格納されます。

表myGraphVT$およびmyGraphGE$の定義は次のとおりです。これらはSQLベースの分析およびSQLベースのプロパティ・グラフの問合せに重要です。VT$およびGE$表の両方で、VTS、VTEおよびFEは予約済の列で、列SLはセキュリティ・ラベル用、列K、T、V、VNおよびVTはグラフ要素のプロパティ(K/Vペア)に関する情報をまとめて格納します。VT$表で、VIDは頂点IDを格納するための長整数です。GE$表で、EID、SVIDおよびDVIDは、エッジID、出力(from)頂点IDおよび入力(to)頂点IDを格納するための長整数列です。

SQL> describe myGraphVT$
 Name                       Null?    Type
 ----------------------------------------- -------- ----------------------------
 VID                       NOT NULL NUMBER
 K                                  NVARCHAR2(3100)
 T                                  NUMBER(38)
 V                                  NVARCHAR2(15000)
 VN                                 NUMBER
 VT                                 TIMESTAMP(6) WITH TIME ZONE
 SL                                 NUMBER
 VTS                                DATE
 VTE                                DATE
 FE                                 NVARCHAR2(4000)


SQL> describe myGraphGE$
 Name                       Null?    Type
 ----------------------------------------- -------- ----------------------------
 EID                        NOT NULL NUMBER
 SVID                       NOT NULL NUMBER
 DVID                       NOT NULL NUMBER
 EL                                  NVARCHAR2(3100)
 K                                   NVARCHAR2(3100)
 T                                   NUMBER(38)
 V                                   NVARCHAR2(15000)
 VN                                  NUMBER
 VT                                  TIMESTAMP(6) WITH TIME ZONE
 SL                                  NUMBER
 VTS                                 DATE
 VTE                                 DATE
 FE                                  NVARCHAR2(4000)

簡単にするために、1つのグラフ名だけを許可し、大文字と小文字は区別されません。

VT$表とGE$表の両方で、列K、T、V、VN、VTはグラフ要素のプロパティ(K/Vペア)に関するすべての情報をまとめて格納し、SLはセキュリティラベルに使用され、VTS、VTEおよびFEは予約列になります。

プロパティ・グラフのスキーマ設計で、プロパティ値は数値データ型(long、int、double、float)の場合、VN列に格納され、タイムスタンプの場合、VT列に格納され、文字列、booleanおよびその他のシリアライズ可能データ型の場合、V列に格納されます。よりよいOracleテキスト問合せサポートのために、プロパティ値のリテラル表現は、データ型が数値またはタイムスタンプであっても、V列に格納されます。すべてのサポートされるデータ型を区別するために、整数IDはT列に格納されます。

VT$およびGE$表の両方のK列にはプロパティ・キーが格納されます。各エッジにはString型のラベルが必要で、そのラベルはGE$表のEL列に格納されます。

VT$表とGE$表のT列は、その列が示すプロパティの値のデータ型を表す数値です。たとえば、1は値が文字列、2は値が整数、などを意味します。T列に指定できる値および関連するデータ型の一部は次のとおりです。

  • 1: STRING

  • 2: INTEGER

  • 3: FLOAT

  • 4: DOUBLE

  • 5: DATE

  • 6: BOOLEAN

  • 7: LONG

  • 8: SHORT

  • 9: BYTE

  • 10: CHAR

  • 20: 空間データ

頂点を格納するためのVT$表スキーマには、次の列があります。

  • VID: 頂点のIDを示す長い列。

  • VL: 頂点のラベルを表す文字列列。

  • K: プロパティの名前を示す文字列の列。頂点に関連付けられているプロパティがない場合、この列の値は空白にする必要があります。

  • T: プロパティのタイプを示す長い列。

  • V: プロパティの値を文字列として示す文字列の列。プロパティ・タイプが数値である場合、値の文字列書式バージョンがこの列に格納されます。同様に、プロパティがタイムスタンプ・ベースである場合、値の文字列書式バージョンが格納されます。

  • VN: 数値プロパティの値を示す数値列。この列には、プロパティ・タイプが数値である場合のみ、プロパティ値が格納されます。

  • VT: 日時プロパティの値を格納するタイムゾーン列のあるタイムスタンプ。この列には、プロパティ・タイプがタイムスタンプ・ベースである場合のみ、プロパティ値が格納されます。

  • SL: Oracle Label Securityを使用してセキュリティ・ラベル・セット用に予約された数値列(セキュリティ・ラベルの使用の詳細は、プロパティ・グラフ・データのアクセス制御(グラフレベルおよびOLS)を参照)。

  • VTS: 今後の拡張用として予約されているタイムゾーン列のタイムスタンプ。

  • VTE: 今後の拡張用として予約されているタイムゾーン列のタイムスタンプ。

  • FE: 今後の拡張用として予約されている文字列列。

次の例では、CONNECTIONSVT$という名前の表に行を挿入します。これには、(様々なデータ型を表す) 1から10のT列値が含まれます。

INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '1-STRING', 1, 'Some String', NULL, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '2-INTEGER', 2, NULL, 21, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '3-FLOAT', 3, NULL, 21.5, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '4-DOUBLE', 4, NULL, 21.5, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '5-DATE', 5, NULL, NULL, timestamp'2018-07-20 15:32:53.991000'); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '6-BOOLEAN', 6, 'Y', NULL, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '7-LONG', 7, NULL, 42, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '8-SHORT', 8, NULL, 10, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '9-BYTE', 9, NULL, 10, NULL); 
INSERT INTO connectionsvt$(vid,k,t,v,vn,vt) VALUES (2001, '10-CHAR', 10, 'A', NULL, NULL); 
...
UPDATE connectionsVT$ SET V = coalesce(v,to_nchar(vn),to_nchar(vt)) WHERE vid=2001; 
COMMIT;

エッジを格納するためのGE$表スキーマには、次の列があります。

  • EID: エッジのIDを示す長い列。

  • SVID: 出力(元の)頂点のIDを示す長い列。

  • DVID: 入力(宛先)頂点のIDを示す長い列。

  • EL: エッジのラベルを表す文字列列。

  • K: プロパティの名前を示す文字列の列。頂点に関連付けられているプロパティがない場合、この列の値は空白にする必要があります。

  • T: プロパティのタイプを示す長い列。

  • V: プロパティの値を文字列として示す文字列の列。プロパティ・タイプが数値である場合、値の文字列書式バージョンがこの列に格納されます。同様に、プロパティがタイムスタンプ・ベースである場合、値の文字列書式バージョンが格納されます。

  • VN: 数値プロパティの値を示す数値列。この列には、プロパティ・タイプが数値である場合のみ、プロパティ値が格納されます。

  • VT: 日時プロパティの値を格納するタイムゾーン列のあるタイムスタンプ。この列には、プロパティ・タイプがタイムスタンプ・ベースである場合のみ、プロパティ値が格納されます。

  • SL: Oracle Label Securityを使用してセキュリティ・ラベル・セット用に予約された数値列(セキュリティ・ラベルの使用の詳細は、プロパティ・グラフ・データのアクセス制御(グラフレベルおよびOLS)を参照)。

  • VTS: 今後の拡張用として予約されているタイムゾーン列のタイムスタンプ。

  • VTE: 今後の拡張用として予約されているタイムゾーン列のタイムスタンプ。

  • FE: 今後の拡張用として予約されている文字列列。

VT$およびGE$表に加えて、Oracle Spatial and Graphはその他の内部表も保持します。

GT$接尾辞を使用して定義された内部グラフ・スケルトン表は、グラフのトポロジ構造を格納するために使用され、次の列を含んでいます。

  • EID: エッジのIDを示す長い列。

  • EL: エッジのラベルを表す文字列列。

  • SVID: 出力(元の)頂点のIDを示す長い列。

  • DVID: 入力(宛先)頂点のIDを示す長い列。

  • ELH: エッジ・ラベルのハッシュ値を指定する未加工の列。

  • ELS: 合計文字数を基準にしてエッジ・ラベル・サイズを指定する整数列。

Oracleの内部専用として、SS$接尾辞を使用して定義された内部表が作成されます。