データベース設計、作成時には、XMLデータを使用する検索業務が決まっておらず、後の業務追加によりXMLデータを使用する検索業務を追加する場合の運用形態について説明します。ただし、この場合、データベースに以下のデータが格納されている必要があります。
XMLデータ格納用のBLOB型の列が用意されており、XMLデータが格納されていること。
XMLグループを規定する列が用意されており、XMLグループを規定する意味のあるデータが格納されていること。
以下に運用手順を示します。
図3.5 XMLアダプタの運用手順
XMLデータのインデックスの追加
図3.6 初期業務時の表とインデックスの関係
図3.7 業務拡張後の表とインデックスの関係
図は、以下の状態を表しています。
初期業務では、XMLデータをBLOB型のデータとしてデータベースに格納はしていますが、XMLデータのインデックスは作成しません。
業務拡張により、XMLデータの検索業務を追加するため、格納済みのXMLデータに対してXMLデータのインデックスを作成します。
データベースの運用の停止
該当データベースに関連する業務アプリケーションを停止します。
格納構造の定義
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 ;
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');
データベースの定義情報の保全のために、RDBディクショナリのデータをバックアップします。アーカイブログ運用を行っている場合、この契機のバックアップは必須ではありません。RDBディクショナリのバックアップは、RDBディクショナリの規模やリカバリに要する時間を考慮して、任意の契機で、計画的にバックアップを行ってください。
この場合のバックアップ手順例を以下に示します。
Solaris/Linuxの場合
rdbdmpdic -f dicback@/home/rdb1/backup -e -y
Windowsの場合
rdbdmpdic -f DICBACK@E:\HOME\RDB1\BACKUP -e -y
表に格納されている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
データベースの運用前に、データ破壊などの異常時のリカバリに備えて、データベースをバックアップします。
インデックスのDSIは、ダンプレス機能および同期復元機能で表のDSIからリカバリする場合、バックアップ不要ですが、XMLデータのインデックスについては、表のDSIからインデックスを作成するのに、BTREE構造のインデックスと比べて時間がかかるため、インデックスのDSIの退避データを取得する運用を推奨しています。
この場合は、XMLデータのインデックスのDSIだけをバックアップしてください。以下にバックアップ手順例を示します。
Solaris/Linuxの場合
rdbdmp -i 伝票管理DB.伝票IXDSI1 -f ixdsibak1@/home/rdb1/backup -e -y
Windowsの場合
rdbdmp -i 伝票管理DB.伝票IXDSI1 -f IXDSIBAK1@E:\HOME\RDB1\BACKUP -e -y
データベースの運用
停止中の該当データベースに関連する業務アプリケーションと、新規に追加したXMLデータの検索業務アプリケーションを起動します。