Hitachi

HiRDB 全文検索プラグイン HiRDB Text Search Plug-in Version 10


5.1.2 推奨する登録運用

Text Search Plug-inの推奨する登録運用には,次の四つの方法があります。

また,これらに加えて,次の二つの登録運用があります。

以降,各運用方法について説明します。

〈この項の構成〉

(1) UAPの更新およびバッチ登録による運用の場合

(a) 差分インデクスの定義

差分インデクスを定義しないで,インデクス定義をします。ただし,あとで必要になる場合は定義しておいてください。

(b) 運用方法

通常のHiRDBの運用に準じます。

(2) プラグインインデクスの遅延一括作成による運用の場合

(a) 差分インデクスの定義

バッチ登録およびUAPの更新時に差分インデクスを使用しない場合,差分インデクスの定義は不要です。

(b) 運用方法

UAPでバッチ運用をする場合にお勧めします。

削除要求(UPDATE文またはDELETE文)は即時反映しますが,追加要求は即時反映をしないためデータの整合性が確保できません。したがって,検索運用中の使用は推奨しません。

プラグインインデクスの遅延一括作成については,マニュアル「HiRDB システム運用ガイド」を参照してください。

(3) 差分インデクスによる運用の場合

(a) 差分インデクスの定義

差分インデクスを定義してください。

(b) 運用方法

UAPで通常の更新をする場合に使用をお勧めします。

ただし,次の手順での運用を前提とします。

  1. INSERT文またはUPDATE文を使用してデータを登録する

  2. 運用の合間に,差分インデクスの情報をMASTERインデクスへ反映する

    この処理中の注意点については,「付録C 資源の排他」を参照してください。

注意事項
  • 最初のデータは,定義内容に関係なく,MASTERインデクスに登録します。

  • 差分インデクスの情報をMASTERインデクスに反映するタイミングは,テキスト容量で約10メガバイトを目安にしてください。

(4) インデクス作成方法に初期分割登録を指定してインデクスを作成する運用の場合

(a) インデクス作成方法指定の定義

インデクス作成方法指定に初期分割登録を定義してください。

(b) 運用方法

表に大量の文書または文字列データを登録したあと,限られた時間単位でインデクスへ文書を登録する場合に使用をお勧めします。インデクス作成開始ユティリティによって,すべての文書または文字列データがインデクスに登録されるまでは,データの整合性を確保できません。したがって,すべての文書または文字列データをインデクスに登録する前に検索を実行する場合には,使用を推奨しません。インデクス作成開始ユティリティの詳細については,「3.2.14 phnstartidx(インデクス作成開始ユティリティ)」または「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。

注意事項
  • インデクス未登録状態の文書または文字列データがなくなれば,UAPによるデータ更新の運用,バッチ登録による運用,プラグインインデクスの遅延一括作成による運用,差分インデクスによる運用に移行できます。差分インデクスによる運用に移行するには,インデクス作成時に差分インデクスの定義が必要です。

(5) 登録・検索同時実行による運用の場合

(a) 登録・検索同時実行の定義

登録・検索同時実行を定義してください。

(b) 運用方法

SQLによる更新系トランザクションが,検索系トランザクションと同時に実行される環境での使用をお勧めします。

注意事項
  • インデクス未作成の場合の更新系トランザクション,またはHiRDBのプラグインインデクスの遅延一括作成を使用している場合のINSERT文によって登録する更新系トランザクションは複数同時に実行できますが,それ以外の更新系トランザクションは複数同時に実行できません。

  • HiRDBが提供しているユティリティによる登録と検索系トランザクションは同時に実行できません。また,Text Search Plug-inの一部のユティリティと検索系トランザクションは同時に実行できません。詳細は「3. Text Search Plug-inのユティリティ」を参照してください。

  • n-gramインデクスプラグインを使用している場合は,n-gramインデクスLOB用RDエリアに対してグローバルバッファを指定してください。また,IXFREEWORDプラグインを使用している場合は,IXFREEWORDインデクスLOB用RDエリアに対してグローバルバッファを指定してください。グローバルバッファを指定しない場合に比べて,登録性能が向上します。

  • 同時実行を設定している場合,Text Search Plug-inのデータの整合性確保のために,一時的に排他制御をします。このため,同時実行を設定していない場合に比べて,排他制御によるオーバヘッドが掛かります。

  • ほかのユーザが更新中(トランザクションが終了していない状態)の文書または文字列データを検索できます。

(6) インデクス作成方法に分割遅延登録を指定してインデクスを作成する運用の場合

(a) 分割遅延登録用インデクスの定義

分割遅延登録用インデクスを定義するには,次の方法があります。

(b) 運用方法

UAPでバッチ運用する場合にお勧めします。

  1. INSERT文またはUPDATE文を使用してデータを登録します。

  2. 運用の合間に,遅延されている情報をMASTERインデクスへ反映します。

    インデクスの作成は,インデクス作成開始ユティリティを使用して実行します。インデクス作成開始ユティリティの詳細については,「3.2.14 phnstartidx(インデクス作成開始ユティリティ)」または「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。

  3. 検索処理とインデクス作成の同時実行する場合は,ユティリティ実行時に同時実行指定(-w nowait)を指定します。また,サーバ側の定義を登録・検索同時実行で定義します。

  4. 分割遅延登録の開始/終了

    即時更新/分割遅延登録の切り替えは,インデクス分割遅延登録運用変更ユティリティを使用します。運用形態に合わせて選択してください。インデクス分割遅延登録運用変更ユティリティの詳細については,「3.2.15 phndelay(インデクス分割遅延登録運用変更ユティリティ)」または「3.3.10 phxdelay(インデクス分割遅延登録運用変更ユティリティ)」を参照してください。

注意事項
  • 削除要求(UPDATE文またはDELETE文)は即時反映します。しかし,追加要求は即時反映をしないため,データの整合性が確保できません。そのため,インデクス未作成文書に対して検索が必要である場合は推奨しません。

  • 分割遅延登録用領域使用率が100%になると,それ以上分割遅延登録を実行できません。100%にならないように,インデクスへ反映してください。インデクスへの反映を時間・件数で中断する場合は,使用率は下がりません。

    使用率を下げるためには,すべての未反映文書または文字列をインデクスに反映してください。分割遅延登録用領域を使い切った場合のSQLコマンドについては,環境定義ファイルによって,エラーリターン/即時更新を選択できます。

  • 即時更新へ切り替える際に,インデクス未登録文書があるときはすべて登録します。時間・件数による中断はできないので注意してください。

(7) 統一インデクスによる運用の場合

(a) 統一インデクスの定義

大文字と小文字,または全角文字と半角文字の違いを区別しないで検索を実行したい場合には,大小文字・全角文字半角文字統一指定を定義してください。また,検索時に「や」と「ゃ」,「よ」と「ょ」などの拗音を区別しないで検索を実行したい場合には,拗音統一指定を定義してください。「バ」と「ハ゛」,「ぱ」と「は゜」などの濁音や半濁音を区別しないで検索を実行したい場合には,濁音統一指定を定義してください。

(b) 運用方法

アルファベット大小文字展開や全角半角文字展開を必ず指定する運用の場合は,大小文字・全角文字半角文字統一指定での運用をお勧めします。また,カタカナ異表記展開やひらがな拗音展開を必ず指定する運用の場合は,拗音統一指定での運用をお勧めします。

注意事項
  • 大小文字・全角半角文字または拗音を区別した検索を実行したい場合は,インデクスを再作成する必要があります。

(8) 推奨する組み合わせ

登録運用を実行する場合の推奨するパラメタの組み合わせを次の表に示します。

表5‒3 登録運用で推奨するパラメタの組み合わせ

項番

create index文のプラグインオプション

環境定義ファイルの設定項目

phnstartidx,phxstartidxの-wオプション

phs_search_wait,phc_search_wait

phn_increment_practical_use,phx_increment_practical_use

1

CREATEMODE=2

wait

off

wait

2

CREATEMODE=2

nowait

off

nowait

3

CREATEMODE=3

nowait_with_update

off

nowait_with_update

項番1に適した業務

n-gramインデクス作成または更新をバッチで実行し,かつn-gramインデクス作成中にほかの業務を実行しない業務に適しています。なお,この業務では,データ更新と同時に全文検索または概念検索を実行する必要がないことが条件となります。

項番2に適した業務

n-gramインデクス作成または更新をバッチで実行し,かつn-gramインデクス作成中に検索を実行する業務に適しています。この場合,検索時には,SELECT文の排他オプションにはWITHOUT LOCK NOWAITだけが指定できます。なお,この業務では,データ更新と同時に全文検索または概念検索を実行する必要がないことが条件となります。

項番3に適した業務

インデクス作成開始ユティリティを10〜30分間隔で定期的に実行して,データの更新から少しあと(10分〜1時間後)に,全文検索または概念検索を実行する業務に適しています。また,n-gramインデクス作成,更新,または更新中に更新系SQLを実行する必要がある業務にも適しています。なお,検索時には,SELECT文の排他オプションにはWITHOUT LOCK NOWAITだけが指定できます。