1.12 RDFネットワーク索引の使用

RDFネットワーク索引は、RDFネットワークでRDFグラフおよび推論グラフで使用するために追加、変更および削除できる一意のBツリー索引です。

このような索引を使用すると、ネットワーク内のRDFグラフおよび推論グラフに対するSEM_MATCH問合せのパフォーマンスをチューニングできます。他の索引と同様に、RDFネットワーク索引によって、問合せワークロードに適した索引ベースのアクセスが可能になります。これによって、次の例のシナリオのようにパフォーマンスが大幅に向上する可能性があります。

  • グラフ・パターンが'{<John> ?p <Mary>}'の場合は、ターゲットRDFグラフおよび対応する推論グラフ(問合せで使用される場合)で、使用可能な'CSPGM'または'SCPGM'索引を使用できます。

  • グラフ・パターンが'{?x <talksTo> ?y . ?z ?p ?y}'の場合は、Cを先行キーとして使用して('CPSGM'など)、関連するRDFグラフおよび推論グラフにRDFネットワーク索引を使用できます。

ただし、RDFネットワーク索引を使用すると、DML、ロードおよび推論操作に必要な時間が増加して、パフォーマンス全体が影響を受ける可能性があります。

RDFネットワーク索引は、次のサブプログラムを使用して作成および管理できます。

これらのサブプログラムはすべてindex_codeパラメータを持ち、このパラメータには、PCSGMを任意の順序(繰返しなし)で含めることができます。index_code内で使用されたこれらの文字は、ビューSEMM_*およびSEMI_*の列P_VALUE_ID、CANON_END_NODE_ID、START_NODE_ID、G_IDおよびMODEL_IDに対応しています。

SEM_APIS.ADD_NETWORK_INDEXプロシージャは、RDFネットワーク索引を作成します。これにより、既存のRDFグラフおよび推論グラフごとに、UNUSABLEステータスの一意のBツリー索引が作成されます。索引の名前はRDF_LNK_<index_code>_IDXで、索引はネットワーク所有者によって所有されます。この操作が許可されるのは、起動者がDBAロールを持つか、ネットワーク所有者である場合のみです。次の例では、キー<P_VALUE_ID, START_NODE_ID, CANON_END_NODE_ID, G_ID, MODEL_ID>を使用してPSCGM索引を作成しています。

EXECUTE SEM_APIS.ADD_NETWORK_INDEX('PSCGM' network_owner=>'RDFUSER', network_name=>'NET1');

RDFネットワーク索引を作成すると、対応する一意でない各Bツリー索引がUNUSABLEステータスになります。これは、この索引を使用可能にすると、大量の時間とリソースが使用され、後続の索引のメンテナンス操作で発生するパフォーマンスが低下する可能性があるためです。SEM_APIS.ALTER_INDEX_ON_RDF_GRAPHおよびSEM_APIS.ALTER_INDEX_ON_INFERRED_GRAPHプロシージャをコールし、'REBUILD'または'UNUSABLE'commandパラメータとして指定することで、所有する特定のRDFグラフまたは推論グラフに対してRDFネットワーク索引を使用可能または使用不可にできます。このように、様々なRDFネットワーク索引を使用可能および使用不可にし、パフォーマンスの違いを確認できます。たとえば、次の文は、PSCGM索引をFAMILY RDFグラフで使用できるように設定します。

EXECUTE SEM_APIS.ALTER_INDEX_ON_RDF_GRAPH('FAMILY','PSCGM','REBUILD' network_owner=>'RDFUSER', network_name=>'NET1');

また、次の点にも注意してください。

  • 自分で作成したRDFネットワーク索引に関係なく、RDFネットワークが作成されると自動的に作成される索引の1つに、この項に示したサブプログラムをコールするときにindex_code'PSCGM'と指定することで管理できる索引があります。

  • 新規のRDFグラフまたは新規の推論グラフを作成すると、RDFネットワーク索引ごとに一意でない新規のBツリー索引が作成されますが、このようなBツリー索引はいずれも、USABLEステータスになります。

  • (index_code値に「M」を含めることによって)RDFネットワーク索引キーにMODEL_ID列を含めると、問合せのパフォーマンスが向上することがあります。これは、RDFグラフ・コレクションが使用される場合に特に有効です。

1.12.1 SEM_NETWORK_INDEX_INFO View

RDFグラフおよび推論グラフのすべてのネットワーク索引に関する情報は、SEM_NETWORK_INDEX_INFOビューに保持されます。これには、表1-29に示すこのビューの列(一部のリスト)が含まれ、1行が1つのネットワーク索引に対応します。

表1-29 SEM_NETWORK_INDEX_INFOビューの列(一部のリスト)

列名 データ型 説明

NAME

VARCHAR2(30)

RDFグラフまたは推論グラフの名前

TYPE

VARCHAR2(10)

索引が構築されるオブジェクトのタイプ: MODELENTAILMENTまたはNETWORK

ID

NUMBER

RDFグラフまたは推論グラフのID番号、またはネットワーク上の索引の場合はゼロ(0)

INDEX_CODE

VARCHAR2(25)

索引のコード(たとえばPSCGM)

INDEX_NAME

VARCHAR2(30)

索引の名前(たとえば、RDF_LNK_PSCGM_IDX)

LAST_REFRESH

TIMESTAMP(6)WITH TIME ZONE

このコンテンツがリフレッシュされた最終時刻のタイムスタンプ

表1-29に示した列の他に、SEM_NETWORK_INDEX_INFOビューには、ALL_INDEXESおよびALL_IND_PARTITIONSビュー(どちらも『Oracle Databaseリファレンス』を参照)から得られる次の列を含みます。

  • ALL_INDEXESビュー: UNIQUENESS、COMPRESSION、PREFIX_LENGTH

  • ALL_IND_PARTITIONSビュー: STATUS、TABLESPACE_NAME、BLEVEL、LEAF_BLOCKS、NUM_ROWS、DISTINCT_KEYS、AVG_LEAF_BLOCKS_PER_KEY、AVG_DATA_BLOCKS_PER_KEY、CLUSTERING_FACTOR、SAMPLE_SIZE、LAST_ANALYZED

SEM_NETWORK_INDEX_INFOビューの情報は失効している場合があることに注意してください。SEM_APIS.REFRESH_NETWORK_INDEX_INFOプロシージャを使用して、この情報をリフレッシュできます。