DB2 に格納されたジオデータベースの XML 列
XML はドキュメント内のデータ エレメントを定義するためのオープンな規格です。XML データを IBM DB2 データベースに格納するには、ArcSDE XML または ネイティブ IBM DB2(PureXML)XML のデータ タイプを使用できます。
どちらのタイプの XML でも、ユーザ定義の XML ドキュメントを格納できます。XML_COLUMN_STORAGE DBTUNE パラメータは、使用する XML のタイプを制御します。デフォルトでは、このパラメータは DB_XML に設定されます。したがって、デフォルトでは PureXML データ タイプが使用されます。
ArcSDE XML データ タイプを使用するには、DB2 Text Search Extender をインストールする必要があります。インストールの方法については、「ArcSDE XML 列をサポートする DB2 データベースの設定」をご参照ください。
ArcSDE XML データ タイプは、ArcIMS メタデータ サービスをサポートするための一連のメタデータ ドキュメントの格納に使用されます。したがって、ArcIMS メタデータ サービスを使用する場合は、XML_COLUMN_STORAGE パラメータを SDE_XML に設定する必要があります。
ArcGIS Desktop の XML 列
XML 列はジオデータベースでは完全にサポートされません。したがって、次の点に注意してください。
- ArcCatalog で、テーブル内の XML 列のコンテンツをプレビューできません。XML 列は空になるか、文字化けした状態となります。
- [テーブル プロパティ] ダイアログ ボックスの [フィールド] タブでは、XML 列のデータ タイプは表示されません。
- XML 列が含まれているテーブルをジオデータベース間でコピーして貼り付けることはできません。
- ジオプロセシング ツールを使ってテーブルをインポートまたはエクスポートする場合は、XML 列を除外する必要があります。
- XML 列を含むテーブルを、ArcCatalog を使用して、バージョン対応テーブルとして登録することはできません。
- XML 列を含むテーブルを ArcMap で開いた場合、XML 列は空になります。
- XML 列を含むテーブルを ArcMap で編集するには、バージョン非対応の編集セッションを使用します。ただし、編集できるのはテーブルの他のフィールドだけであり、XML 列自体は編集できません。
DB2 DBMS での XML 列
ネイティブの DB2 PureXML を使用する場合、追跡用の特別なジオデータベース システム テーブルはなく、DB2 のシステム テーブルで追跡されます。DB2 の PureXML の詳細については、IBM DB2 のドキュメント セットをご参照ください。
使用できる XML 列には、ArcSDE XML と DB2 PureXML の 2 種類があります。ジオデータベースで作成するデータセットでどちらを使用するかは、DBTUNE テーブルの XML_STORAGE パラメータによって制御されます。
ArcSDE XML の場合、XML 列を管理するために、SDE_XML_COLUMNS、SDE_XML_INDEX_TAGS、SDE_XML_INDEXES という 3 つの ArcSDE ジオデータベース システム テーブルが使用されます。これらのテーブルの所有者は、ArcSDE 管理ユーザです。ArcSDE は、XML 列ごとに追加のテーブルを 2 つ作成します(SDE_XML_DOC<COLUMN_ID> テーブルと SDE_XML_IDX_<COLUMN_ID> テーブル)。これらは、XML ドキュメントの格納とインデックスの作成に使用されます。これらのテーブルの所有者は、XML 列が含まれたビジネス テーブルを所有しているユーザです。
ArcSDE XML を使用するときに、ArcSDE は次のテーブルを作成します。これらのテーブルは、XML ドキュメントの格納およびインデックス作成に使用されます。
SQL を使用して、これらのテーブルを変更しないでください。
SDE_XML_COLUMNS
ビジネス テーブルに ArcSDE XML 列を追加すると、SDE_XML_COLUMNS テーブルに行が 1 つ追加されます。このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
COLUMN_ID |
INTEGER |
XML 列の ID。テーブルの主キー。 この値は ArcSDE XML 列の作成時に ArcSDE によって割り当てられます。 |
いいえ |
REGISTRATION_ID |
INTEGER |
ArcSDE XML 列が含まれているビジネス テーブルの ID。TABLE_REGISTRY システム テーブルへの外部キー。 |
いいえ |
COLUMN_NAME |
VARCHAR(32) |
ビジネステーブルの ArcSDE XML 列の名前。 |
いいえ |
INDEX_ID |
INTEGER |
ArcSDE XML 列が存在する場合は、関連付けられている XPath インデックスの ID。SDE_XML_INDEXES テーブルへの外部キー。 |
|
MINIMUM_ID |
INTEGER |
個々の XML ドキュメントを識別するためにビジネス テーブルの ArcSDE XML 列で使用される初期値の値。 |
|
CONFIG_KEYWORD |
VARCHAR(32) |
それらのテーブルで作成される XML ドキュメント、XML XPath インデックス テーブル、テキスト インデックスをデータベースで定義する方法を決定するパラメータを含む、DBTUNE コンフィグレーション キーワード。 DBTUNE キーワードとそれらのパラメータの詳細については、「DBTUNE コンフィグレーション キーワードおよびコンフィグレーション パラメータとは」と「DB2 の DBTUNE コンフィグレーション パラメータ」をご参照ください。 |
|
XFLAGS |
INTEGER |
XML ドキュメント テーブルの元のドキュメントが圧縮されているかどうかを示す値 デフォルトでは、ドキュメントは圧縮されます(圧縮されたドキュメントのほうがパフォーマンスが向上します)。 |
SDE_XML_INDEXES
このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。このテーブルには、XPath インデックスが付いている ArcSDE XML 列ごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
INDEX_ID |
INTEGER |
XPath インデックスの ID。テーブルの主キー。 |
いいえ |
INDEX_NAME |
VARCHAR(32) |
XPath インデックスの名前 ArcIMS メタデータ サービスに関連する XPath インデックスの場合、名前は「ims_xml#」になります。シャープ記号(#)はメタデータ サービス ビジネス テーブルの ArcSDE XML 列の ID を表します。 |
いいえ |
OWNER |
VARCHAR(32) |
ArcSDE XML 列を所有しているデータベース ユーザ。 ArcIMS メタデータ サービスの場合は、サービスの ArcXML 構成ファイルで指定されたユーザ。 |
いいえ |
INDEX_TYPE |
INTEGER |
XPath インデックスのタイプを示す値 ArcSDE 9.1 以降のリリースでは、この値は SE_XML_INDEX_DEFINITION インデックス タイプで 2、SE_XML_INDEX_TEMPLATE インデックス タイプで 1 です。ArcIMS メタデータ サービスに関連する XPath インデックスの場合は、SE_XML_INDEX_DEFINITION インデックス タイプのみがサポートされます。 |
いいえ |
DESCRIPTION |
VARCHAR(64) |
XPath インデックスを説明するテキスト インデックスの作成にインデックス定義ファイルが使用された場合は、インデックスの説明がファイルの先頭に指定されている場合があります。 |
SDE_XML_INDEX_TAGS
ArcSDE XML 列には、必要に応じて XPath インデックスが含まれます。このインデックスにより、ユーザが各ドキュメントで特定の XML エレメントまたは属性の内容を検索できるようになります。エレメントや属性が各 XPath インデックスに含まれるかどうかの定義は、このテーブルに記録されます。
このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。このテーブルには、ArcSDE XML 列の XPath インデックスに関連付けられた XPath ごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
INDEX_ID |
INTEGER |
ArcSDE XML 列が存在する場合は、関連付けられている XPath インデックスの ID。SDE_XML_INDEXES テーブルへの外部キー。 |
いいえ |
TAG_ID |
INTEGER |
XPath(タグ)の ID |
いいえ |
TAG_NAME |
VARCHAR(1024) |
XML ドキュメントに存在する XML エレメントまたは属性を識別する絶対 XPath /metadata/mdDateSt は XML エレメントを識別し、/metadata/dataIdInfo/tpCat/TopicCatCd/@value は XML 属性を識別します。 これらの XPath には、XML エレメントまたは属性のグループを参照するアスタリスク(*)が含まれていてはなりません。各エレメントまたは属性は、このテーブルに指定された XPath に基づいて正確に照合されます。有効な XML ドキュメントのエレメントに「*」という名前を付けることはできません。 |
いいえ |
DATA_TYPE |
INTEGER |
XML エレメントまたは属性が数値、可変長の文字、またはテキストとしてインデックス付けされるかどうかを示す値。 1 はタグの内容がテキストとしてインデックス付けされることを示し、2 はタグの内容が数値としてインデックス付けされることを示し、3 はタグの内容が可変長の文字としてインデックス付けされることを示します。 |
いいえ |
TAG_ALIAS |
INTEGER |
XPath を識別するために使用されるコード たとえば、Z39.50 通信プロトコルは数値コードを使用して検索可能なコンテンツを示します。 この列は ArcIMS Z39.50 Connector では使用されません。 |
|
DESCRIPTION |
VARCHAR(64) |
XML エレメントまたは属性に含まれるべき内容を示すテキスト |
|
IS_EXCLUDED |
INTEGER |
XML エレメントが XPath インデックスに含まれるかどうかを示す値:
|
いいえ |
SDE_XML_DOC<COLUMN_ID>
SDE_XML_DOC<COLUMN_ID> テーブルは、XML ドキュメントを格納し、XML ドキュメントのコンテンツに関するフルテキスト インデックスを管理します。ArcSDE データベースには、ArcSDE XML 列ごとにこれらのテーブルが 1 つ含まれます。テーブル名の番号は、ArcSDE XML 列の ID です。このテーブルには、ArcSDE XML 列に格納される XML ドキュメントごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
SDE_XML_ID |
INTEGER |
ArcSDE XML 列に格納される XML ドキュメントの ID。テーブルの主キー。 |
いいえ |
DOC_PROPERTY |
INTEGER |
XML ドキュメントのコンテンツを XPath インデックスに追加したときに競合が検出されたかどうかを示す値 1 = 競合が検出されました。たとえば、数値でインデックス付けされるはずのエレメントが、ドキュメントに文字列で含まれているなど。 NULL値 = ドキュメントのインデックスの作成時に問題は検出されませんでした。 |
|
XML_DOC |
BLOB |
XML ドキュメント |
いいえ |
XML_DOC_VAL |
BLOB |
すべての XML タグと他のマークアップが削除された状態の XML ドキュメント全体のコンテンツ この列にはテキスト インデックスがデフォルトで構築されます。このインデックスはフルテキスト検索への応答に使用されます。ArcIMS メタデータ サービスでは、このインデックスは FULLTEXT リクエストへの応答に使用されます。 |
SDE_XML_IDX<COLUMN_ID>
SDE_XML_IDX<COLUMN_ID> テーブルは、XPath テキスト インデックスを持つ ArcSDE XML 列に対して作成されます。このテーブルには、インデックスが作成されている XPath ごとにテキストまたは数値のコンテンツが格納されます。
テーブル名の ID 番号は、ArcSDE XML 列の内部登録番号です。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
XML_KEY_COLUMN |
INTEGER |
インデックス付けされた値の ID。テーブルの主キー |
いいえ |
SDE_XML_ID |
INTEGER |
インデックス付けされた値が含まれている XML ドキュメントの ID |
いいえ |
TAG_ID |
INTEGER |
ArcSDE XML 列の XPath インデックスに関連付けられたタグの ID。ドキュメントのどこに値が格納されているかを識別します。 |
いいえ |
DOUBLE_TAG |
FLOAT |
XPath インデックス定義においてタグが DOUBLE として定義されている場合のインデックス付けされた値 |
|
STRING_TAG |
VARCHAR2(256) |
XPath インデックス定義においてタグが VARCHAR として定義されている場合のインデックス付けされた値 |
|
TEXT_TAG |
CLOB |
XPath インデックス定義においてタグが STRINGE として定義されている場合のインデックス付けされた値 |
次に、ArcSDE XML 列が含まれているテーブルとそれを追跡するためのシステム テーブルの図を示します。破線はテーブル間の暗黙的なリレーションシップを示し、実線は明示的に定義されたリレーションシップを示しています。
デフォルトでは、XML ドキュメントを DB2 のジオデータベースの XML 列に格納したとき、その列に対応するテキスト インデックスは自動的に更新されず、新しいドキュメントのテキストも追加されません。テキスト インデックスを更新するまで、インデックス化されていない XML ドキュメントは検索の対象になりません。
XML 列のテキスト インデックスに対する更新を手動でトリガするためのユーティリティは、ArcSDE にはありません。XML 列が ArcIMS メタデータ サービスに関連付けられている場合は、ArcIMS 標準の設定オプションとコマンド ライン ユーティリティを使用してテキスト インデックスを更新することができます。テキスト インデックスを更新する際の ArcIMS のオプションについては、ArcIMS のヘルプをご参照ください。
XML ドキュメントでの XML 列
XML 列が含まれているテーブルを XML ワークスペース ドキュメントにエクスポートすることはできません。XML レコードセット ドキュメントにエクスポートすることは可能ですが、列を XML として見分ける方法はありません。