以下の節では、XML 列についての計画タスクを解説します。
アクセスおよび保管の方式を選択した後、 データの妥当性検査 を行うかどうかを決めて、 DAD を指定することができます。 DTD を使用して XML データの妥当性検査を行います。 DTD を使用すると、XML 文書が有効であることを確認し、 XML データを構造化検索できるようになります。 DTD は DTD リポジトリーに保管されています。
推奨: XML 文書をアーカイブ目的で保管する場合を除き、 XML データは DTD を使用して妥当性検査を行ってください。 妥当性検査を行うためには、DTD が XML エクステンダー・リポジトリーに存在しなければなりません。 DTD をリポジトリーに挿入する方法については、DTD リポジトリーへの DTD の保管を参照してください。
複数の異なる DTD を使用して、同じ XML 列内の文書の妥当性検査を行うことができます。 つまり、類似の要素を持つ類似の構造の文書が、異なる DTD を呼び出すようにすることができます。 複数の DTD を参照するためには、以下の指針に従ってください。
重要: XML データを DB2 に挿入する前に、 妥当性検査を行うかどうかを決めてください。 XML エクステンダーは、すでに DB2 に挿入されているデータの妥当性検査はサポートしません。
考慮事項:
XML 文書は UDT として XML 列に保管します。
使用可能な UDT については、表 4 を参照してください。
ユーザー定義タイプ列 | ソース・データ・タイプ | 使用法の説明 |
---|---|---|
XMLVARCHAR | VARCHAR(varchar_len) | XML 文書の全体を VARCHAR として DB2 内に保管します。 |
XMLCLOB | CLOB(clob_len) | XML 文書の全体を CLOB として DB2 内に保管します。 |
XMLFILE | VARCHAR(1024) | XML 文書のファイル名を DB2 内に保管して、 XML 文書を DB2 サーバーにとってローカルのファイル内に保管します。 |
サイド表の計画を立てるとき、この表の編成方法、いくつの表を作成するか、 およびサイド表のデフォルト視点を作成するかどうかを考察しなければなりません。 その場合の決断は、要素と属性が複数回出現するかどうかや、 照会のパフォーマンス上の要件などのいくつかの考慮事項をベースに下します。
ロケーション・パスが複数回出現する文書の場合、 XML エクステンダーは、複数回出現する要素の順序を追跡記録するために、 各サイド表内にタイプ INTEGER の列 DXX_SEQNO を追加します。 DXX_SEQNO を使うと、SQL 照会内に ORDER BY DXX_SEQNO と指定することで、 元の XML 文書と同じ順序で要素を取り出すことができます。
XML 列を使用可能にするときに、 ROOT ID という名前の固有 ID を使ってアプリケーション表をサイド表に結合するための デフォルトの読み取り専用視点を指定することができます。 デフォルト視点を使うと、サイド表を照会することで XML 文書を検索することができます。 たとえば、アプリケーション表が SALES_TAB、 サイド表が ORDER_TAB、PART_TAB、および SHIP_TAB であるとすると、次のようにします。
SELECT sales_person FROM sales_order_view WHERE price > 2500.00
この SQL ステートメントは、 PRICE が 2500.00 より大きい列 ORDER に注文を保管している SALES_TAB 内の営業担当者の名前を戻します。
デフォルト視点を照会すると、 アプリケーション表とサイド表の 1 つの視点が提示されるという利点があります。 しかし、作成されるサイド表の数が多い場合、照会の負荷は大きくなります。 したがって、デフォルト視点の作成をお勧めするのは、サイド表の合計列数が少ない場合のみです。 アプリケーションで、サイド表の重要な列を結合して独自の視点を作成することができます。
XML 列文書に索引を付けるかどうかは、計画時の重要な決断事項です。 この決断は、データへのアクセスが必要になる頻度、 および構造化検索の際のパフォーマンスの重要性に基づいて下します。
XML 文書の全体を含む XML 列を使用するとき、 XML 要素または属性値を含めるためのサイド表を作成してから、 これらの列に索引を作成することができます。 どの要素および属性に索引を作成するのかを決めなければなりません。
XML 列を索引付けすることによって、頻繁に照会される整数、10 進数、 または日付などの汎用データ・タイプのデータを、 データベース・エンジンのネイティブ DB2 索引サポートを使用して索引付けすることができます。 XML エクステンダーは XML 要素または属性の値を XML 文書から抽出して、 それらをサイド表 に保管し、 それらのサイド表に索引を作成できるようにします。
サイド表の各列は、XML 要素または属性および SQL データ・タイプを識別するロケーション・パスによって指定できます。 図 8 は、サイド表のある XML 列を示しています。
![]() |
XML エクステンダーは、XML 文書を XML 列に保管するときに自動的にサイド表にデータを取り入れます。
高速検索のために、DB2 B-tree 索引付け テクノロジーを使用してこれらの列に索引を作成します。 索引の作成に使用される方式はオペレーティング・システムによって異なり、 XML エクステンダーはそれらの方式をサポートします。
たとえば、/Order/Part/ExtendedPrice に索引を作成して、 /Order/Part/ExtendedPrice がデータ・タイプ REAL になるように指定したいと仮定します。 この場合、XML エクステンダーは /Order/Part/ExtendedPrice の値をサイド表内の PRICE 列に保管します。
アプリケーション表に単一の基本キーが存在しない場合、 または何かの理由でそれを使用したくない場合、XML エクステンダーはアプリケーション表を変更して、 挿入時に作成される固有の ID を保管する列 DXXROOT_ID を追加します。 すべてのサイド表には、固有の ID を持つ DXXROOT_ID 列があります。 基本キーを ROOT ID として使用すると、 アプリケーション表内の基本キー列と同じ名前とタイプの列が、 すべてのサイド表に入り、基本キーの値が保管されます。
ロケーション・パスとは、 XML 要素または属性を識別する一連の XML タグ です。 XML エクステンダーは、ロケーション・パスを以下の状況で使用します。
図 9 は、ロケーション・パスおよび XML 文書との関係を示しています。
図 9. 文書を構造化 XML 文書として DB2 表の列に保管する
![]() |
以下のリストは、XML エクステンダーでサポートされるロケーション・パスの構文を説明しています。
ワイルドカード: ロケーション・パス内の要素をアスタリスクに置き換えて、 任意のストリングに一致させることができます。
単純ロケーション・パス は、
要素タイプ名を順番に並べてシングルスラッシュ (/) で区切ったものです。
属性値は、要素タイプの後で大括弧で囲まれて示されます。
ロケーション・パスの構文 の 3 および 6 の構文説明は、
単純ロケーション・パスについて解説しています。
表 5 は構文を説明しています。
対象 | ロケーション・パス | 説明 |
---|---|---|
XML 要素 | /tag1/tag2/..../tagn-1/tagn | tagn という名前の要素およびその親によって識別される要素の内容 |
XML 属性 |
/tag_1/tag_2/..../tag_n-1
/tag_n/@attr1
| tagn およびその親によって識別される要素の、attr1 という名前の属性 |
XML エクステンダーには、DAD 内での要素または属性の定義にロケーション・パスを使用することに関して制限があります。 XML エクステンダーは要素または属性と DB2 列との間で 1 対 1 マッピングを使用するので、 ロケーション・パスのための特殊な規則が必要になります。 表 6 には、ロケーション・パスについての制限が説明されています。 サポートされるロケーション・パスの列に指定されている数字は、 ロケーション・パスの構文での構文表示を示します。
表 6. ロケーション・パスの使用に関する XML エクステンダーの制限
ロケーション・パスの使用 | サポートされるロケーション・パス |
---|---|
DAD 内の要素 | 3、6 (表 5 で説明されている単純ロケーション・パス) |
UDF の抽出 | 1-9 |
テキスト・エクステンダーによる UDF の検索 | 1-9 |
XML 列では、DAD は基本的に、XML 列に保管された文書を索引付けする方法を指定します。 DAD は XML 形式の文書で、クライアントに存在します。 XML 文書を DTD を使用して妥当性検査することを選択した場合、 DAD ファイルをその DTD に関連付けることができます。 DAD ファイルのデータ・タイプは CLOB です。
XML 列の DAD ファイルには XML ヘッダーが含まれ、 クライアント上の DAD ファイルおよび DTD へのディレクトリー・パスを指定し、 索引付けのためにサイド表に保管する XML データのマップを提供します。
XML 列のアクセスおよび保管の方法を指定するには、 DAD ファイル内で以下のタグを使用します。
XML について使用可能にされた列は、XML エクステンダーの UDT です。 アプリケーションには、任意のユーザー表 内の列を含めることができます。 XML 列データには、主に SQL ステートメントおよび XML エクステンダーの UDF を介してアクセスします。
XML エクステンダー管理ウィザードまたはエディターを使用して、DAD の作成および更新を行うことができます。