ページの先頭行へ戻る
Symfoware Server V12.7.0 RDB運用ガイド(XMLアダプタ編)
FUJITSU Software

3.2.2 XMLデータのインデックスを追加する

データベース設計、作成時には、XMLデータを使用する検索業務が決まっておらず、後の業務追加によりXMLデータを使用する検索業務を追加する場合の運用形態について説明します。ただし、この場合、データベースに以下のデータが格納されている必要があります。

以下に運用手順を示します。

図3.5 XMLアダプタの運用手順

以下の図に示す例でXMLデータのインデックスの追加の運用手順を説明します。

XMLデータのインデックスの追加

図3.6 初期業務時の表とインデックスの関係

図3.7 業務拡張後の表とインデックスの関係

図は、以下の状態を表しています。

  1. データベースの運用の停止

    該当データベースに関連する業務アプリケーションを停止します。


  2. 格納構造の定義

    XMLデータのインデックスのDSO定義およびXMLデータのインデックスのDSI定義を行います。格納構造の定義は、DSO定義文およびDSI定義文を実行することにより行います。

    CREATE DSO  伝票IXDSO  INDEX  ON  伝票スキーマ.伝票表  (伝票)
                      TYPE  XML(PAGESIZE1(16), PAGESIZE2(1)) 
                      BY  ADDRESS ;
      
    CREATE DSI  伝票IXDSI1  INDEX  DSO  伝票IXDSO
                  ALLOCATE  BASE   ON  DBSP_1  SIZE  200K ,
                            INDEX  ON  DBSP_1  SIZE   40K ;

  3. XMLグループの定義

    XMLデータのインデックスの構造を決めるため、XMLグループを定義します。XMLグループは、CREATE XMLGROUP文で定義します。
    XMLグループでは、XMLデータの構成要素の中で業務で検索対象とする検索パスを定義します。また、定義したXMLグループが適用される条件を規定する列とその列に格納される情報を選択条件として定義します。
    XMLグループは、1つのXMLデータのインデックスのDSOに対して、複数定義することができます。この場合、対象XMLデータのインデックスのDSOに対して、それぞれのXMLグループを定義してください。

    XMLグループを1つ定義する場合の例を以下に示します。ここでは、“XMLデータのインデックスの追加”に示す構造のXMLデータが「伝票」列に格納されているものとし、業務で検索対象とする検索パスは以下の3つとします。

    • /受注伝票/伝票番号

    • /受注伝票/受注先/社名

    • /受注伝票/商品/商品名

    なお、商品タグは繰り返し構造をもつものとし、定義したXMLグループを適用する条件の情報は、「伝票種別」列に格納され、その値は“1”であるとします。

    CREATE XMLGROUP    受注伝票GR    ON    伝票IXDSO  (
                    '/受注伝票/伝票番号'         NUMBER(10,0),
                    '/受注伝票/受注先/社名'      STRING(20), 
                    '/受注伝票/商品*/商品名'     STRING(20)
                ) RULE  (伝票種別)  =  ('1');

  4. データベース定義情報の保全

    データベースの定義情報の保全のために、RDBディクショナリのデータをバックアップします。アーカイブログ運用を行っている場合、この契機のバックアップは必須ではありません。RDBディクショナリのバックアップは、RDBディクショナリの規模やリカバリに要する時間を考慮して、任意の契機で、計画的にバックアップを行ってください。

    この場合のバックアップ手順例を以下に示します。

    SolarisLinuxSolaris/Linuxの場合

    rdbdmpdic -f dicback@/home/rdb1/backup -e -y

    WindowsWindowsの場合

    rdbdmpdic -f DICBACK@E:\HOME\RDB1\BACKUP -e -y

  5. 検索パスのインデックス作成

    表に格納されているXMLデータからXMLグループで定義した検索パスのインデックスを作成します。検索パスのインデックスは、rdbsloaderコマンドのxオプションにより作成します。

    以下にrdbsloaderコマンドの使用例を示します。

    rdbsloader  -x  -i  伝票管理DB.伝票IXDSI1

    ここで、検索対象を新規に格納されるXMLデータに限定し、すでに表に格納されているXMLデータを検索対象としない場合、表に格納されているXMLデータからXMLデータのインデックスを作成する必要はありません。この場合は、定義したXMLグループに対するXMLデータのインデックスを創成するだけで、以降で表に格納されたXMLデータを検索対象とすることができ、rdbsloaderコマンドのxオプションおよびzオプションにより創成します。

    以下にrdbsloaderコマンドの使用例を示します。

    rdbsloader  -x  -i  伝票管理DB.伝票IXDSI1  -z IGNORE_STORED_DATA

  6. データベースのデータ退避

    データベースの運用前に、データ破壊などの異常時のリカバリに備えて、データベースをバックアップします。

    インデックスのDSIは、ダンプレス機能および同期復元機能で表のDSIからリカバリする場合、バックアップ不要ですが、XMLデータのインデックスについては、表のDSIからインデックスを作成するのに、BTREE構造のインデックスと比べて時間がかかるため、インデックスのDSIの退避データを取得する運用を推奨しています。

    この場合は、XMLデータのインデックスのDSIだけをバックアップしてください。以下にバックアップ手順例を示します。

    SolarisLinuxSolaris/Linuxの場合

    rdbdmp -i 伝票管理DB.伝票IXDSI1 -f ixdsibak1@/home/rdb1/backup -e -y

    WindowsWindowsの場合

    rdbdmp -i 伝票管理DB.伝票IXDSI1 -f IXDSIBAK1@E:\HOME\RDB1\BACKUP -e -y

  7. データベースの運用

    停止中の該当データベースに関連する業務アプリケーションと、新規に追加したXMLデータの検索業務アプリケーションを起動します。