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ネットワーク索引は、次のサブプログラムを使用して作成および管理できます。
- SEM_APIS.ADD_NETWORK_INDEX
- SEM_APIS.ALTER_INDEX_ON_RDF_GRAPH
- SEM_APIS.ALTER_INDEX_ON_INFERRED_GRAPH
- SEM_APIS.DROP_NETWORK_INDEX
これらのサブプログラムはすべてindex_code
パラメータを持ち、このパラメータには、P
、C
、S
、G
、M
を任意の順序(繰返しなし)で含めることができます。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) |
索引が構築されるオブジェクトのタイプ: |
ID |
NUMBER |
RDFグラフまたは推論グラフのID番号、またはネットワーク上の索引の場合はゼロ(0) |
INDEX_CODE |
VARCHAR2(25) |
索引のコード(たとえば |
INDEX_NAME |
VARCHAR2(30) |
索引の名前(たとえば、 |
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プロシージャを使用して、この情報をリフレッシュできます。
親トピック: RDFネットワーク索引の使用