1.17 マテリアライズド結合ビューのRDFサポート

RDF問合せで最も頻繁に使用される結合は、主語と主語、および主語と目的語の間の結合です。RDF問合せのパフォーマンスを向上させるため、これら2つの列に対してマテリアライズド結合ビューを作成できます。

マテリアライズド結合ビューは、単一のRDFグラフに作成するか、'ALLOW_DUP=T'オプションを使用してRDFグラフ・コレクションを作成してから、そのRDFグラフ・コレクションにマテリアライズド結合ビューを作成することによって、複数のグラフに作成できます。マテリアライズド・ビューはすべて、ネットワーク所有者が所有しています。(マテリアライズド結合ビューを作成するには、SEM_APIS.CREATE_MATERIALIZED_VIEWプロシージャを使用します。)

マテリアライズド・ビューはデフォルトで圧縮され、IMDBオプションがインストールされている場合はインメモリーを有効にできます。たとえばT0とT1などの2つの表の間で2つのマテリアライズド・ビューが主語と主語(SS結合)、および主語と目的語(SO結合)で作成され、G、S、P、Oすべての値が決定論的関数でIDによってフェッチされます。値は必要に応じて仮想列として定義できます。つまり、T0とT1の両方のG、S、P、O IDのみが実際の列で、残りは仮想列です。仮想列はインメモリー仮想列を有効にして使用することをお薦めします。これにより、IMDBオプションがインストールされている場合に値がメモリー内で実体化されます。

ビットマップ索引は、マテリアライズド・ビューの1つの列に作成できます。マテリアライズド・ビューの列の名前は、結合の各表で次のようになります。

  • グラフID: G
  • 主語ID: S
  • 述語ID: P
  • 目的語ID: O
  • グラフ名: GV
  • 主語名: SV
  • 述語名: PV
  • 目的語名: OV
  • 値のタイプ: $RDFVTYP
  • リテラル・タイプ: $RDFLTYP
  • 言語タイプ: $RDFLANG
  • order_type: $RDFORDT
  • order_num: $RDFORDN
  • order_date: $RDFORDD

たとえば、MVXという名前のマテリアライズド・ビューを作成すると、次の結合ビューが作成されます。

SS-join (MVX$SS) and SO-join (MVX$SO)

MVX$SS(T0G, T0S, T0P, T0O, T1G, T1S, T1P, T1O,
  T0GV, T0G$RDFVTYP, T0G$RDFLTYP, T0G$RDFLANG, T0G$RDFORDT, T0G$RDFORDN, T0G$RDFORDD
  T0SV, T0S$RDFVTYP, T0S$RDFLTYP, T0S$RDFLANG, T0S$RDFORDT, T0S$RDFORDN, T0S$RDFORDD
  T0PV, T0P$RDFVTYP, T0P$RDFLTYP, T0P$RDFLANG, T0P$RDFORDT, T0P$RDFORDN, T0P$RDFORDD
  T0OV, T0O$RDFVTYP, T0O$RDFLTYP, T0O$RDFLANG, T0O$RDFORDT, T0O$RDFORDN, T0O$RDFORDD
  T1GV, T1G$RDFVTYP, T1G$RDFLTYP, T1G$RDFLANG, T1G$RDFORDT, T1G$RDFORDN, T1G$RDFORDD
  T1SV, T1S$RDFVTYP, T1S$RDFLTYP, T1S$RDFLANG, T1S$RDFORDT, T1S$RDFORDN, T1S$RDFORDD
  T1PV, T1P$RDFVTYP, T1P$RDFLTYP, T1P$RDFLANG, T1P$RDFORDT, T1P$RDFORDN, T1P$RDFORDD
  T1OV, T1O$RDFVTYP, T1O$RDFLTYP, T1O$RDFLANG, T1O$RDFORDT, T1O$RDFORDN, T1O$RDFORDD)

MVX$SOの結合ビューと同じ列名も指定されます。

ビットマップ索引がSS結合ビューで作成されると、その索引には<MView name><index column name>_I0$という名前が付けられます。同様に、SO結合ビューの索引には<MView name><index column name>_I1$という名前が付けられます。たとえば、マテリアライズド・ビューMVX内の列T0Pに索引を作成すると、索引名はSS結合ビューの場合はMVXT0P_I0$、SO結合ビューの場合はMVXT0P_I1$となります。