PostgreSQL に格納されたジオデータベースの XML 列
XML はドキュメント内のデータ エレメントを定義するためのオープンな規格です。XML データを PostgreSQL データベースに格納するには、ArcSDE XML 列または ネイティブ PostgreSQL XML 列を使用できます。
どちらのタイプの XML でも、ユーザ定義の XML ドキュメントを格納できます。sde_dbtune の XML_COLUMN_STORAGE パラメータは、使用する XML のタイプを制御します。デフォルトでは、このパラメータはネイティブ PostgreSQL XML データ タイプに設定されます。
ArcGIS for Desktop の XML 列
XML 列はジオデータベースでは完全にサポートされません。したがって、次の点に注意してください。
- ArcCatalog で、テーブル内の XML 列のコンテンツをプレビューできません。XML 列は空になるか、文字化けした状態となります。
- [テーブル プロパティ] ダイアログ ボックスの [フィールド] タブでは、XML 列のデータ タイプは表示されません。
- XML 列が含まれているテーブルをジオデータベース間でコピーして貼り付けることはできません。
- ジオプロセシング ツールを使ってテーブルをインポートまたはエクスポートする場合は、XML 列を除外する必要があります。
- XML 列を含むテーブルを、ArcCatalog を使用して、バージョン対応テーブルとして登録することはできません。
- XML 列を含むテーブルを ArcMap で開いた場合、XML 列は空になります。
- XML 列を含むテーブルを ArcMap で編集するには、バージョン非対応の編集セッションを使用します。ただし、編集できるのはテーブルの他のフィールドだけであり、XML 列自体は編集できません。
PostgreSQL DBMS での XML ドキュメントが含まれる列
ArcSDE XML と PostgreSQL のネイティブ XML タイプの 2 種類の XML 列を使用できます。ジオデータベースで作成するデータセットでどちらを使用するかは、sde_dbtune テーブルの XML_STORAGE パラメータによって制御されます。
ネイティブ PostgreSQL XML タイプを使用する場合、これを追跡する追加のジオデータベース システム テーブルはありません。PostgreSQL のシステム テーブルで追跡されます。
ArcSDE XML の場合、XML 列を管理するために、sde_xml_columns 、sde_xml_index_tags、sde_xml_indexes という 3 つのジオデータベース システム テーブルが使用されます。これらのテーブルの所有者は、ArcSDE 管理者ユーザです。ArcSDE は、XML 列ごとに追加のテーブルを 2 つ作成します(sde_xml_doc<column_id> テーブルと sde_xml_idx_<column_id> テーブル)。これらは、XML ドキュメントの格納とインデックスの作成に使用されます。これらのテーブルの所有者は、XML ドキュメントが含まれたビジネス テーブルを所有しているユーザです。
ArcGIS は次のテーブルを作成します。これらは XML ドキュメントの格納とインデックスの作成に使用されます。
SQL を使用して、これらのテーブルを変更しないでください。
ビジネス テーブルに XML ドキュメントを格納するための列を追加すると、XML_COLUMN テーブルに行が 1 つ追加されます。このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
column_id |
integer |
XML 列の ID およびテーブルの主キー この値は XML 列の作成時に ArcSDE によって割り当てられます。 |
いいえ |
registration_id |
integer |
XML 列が含まれているビジネス テーブルの ID。table_registry システム テーブルへの外部キー。 |
いいえ |
column_name |
varchar(32) |
ビジネス テーブルの XML 列の名前。 |
いいえ |
index_id |
integer |
XML 列が存在する場合は、関連付けられている XPath インデックスの ID。sde_xml_indexes テーブルへの外部キー。 |
|
minimum_id |
integer |
個々の XML ドキュメントを識別するためにビジネス テーブルの XML 列で使用される初期値の値 |
|
config_keyword |
varchar(32) |
それらのテーブルで作成される XML ドキュメント、XML XPath インデックス テーブル、テキスト インデックスがデータベースで定義される方法を決定するパラメータが含まれた DBTUNE コンフィグレーション キーワード。 |
|
xflags |
integer |
XML ドキュメント テーブルの元のドキュメントが圧縮されているかどうかを示す値 デフォルトでは、ドキュメントは圧縮されます(圧縮されたドキュメントのほうがパフォーマンスが向上します)。 |
いいえ |
このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。このテーブルには、XPath インデックスが付いている列ごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
index_id |
integer |
XPath インデックスの ID およびテーブルの主キー |
いいえ |
index_name |
varchar(32) |
XPath インデックスの名前 |
いいえ |
所有者 |
varchar(32) |
XML 列を所有しているデータベース ユーザ |
いいえ |
index_type |
integer |
XPath インデックスのタイプを示す値 この値は、SE_XML_INDEX_DEFINITION インデックス タイプの場合は 2、SE_XML_INDEX_TEMPLATE インデックス タイプの場合は 1 です。 |
いいえ |
説明 |
varchar(64) |
XPath インデックスを説明するテキスト インデックスの作成にインデックス定義ファイルが使用された場合、インデックスの説明がファイルの先頭に指定されていることがあります。 |
XML ドキュメントが含まれる列には必要に応じて XPath インデックスが含まれます。このインデックスにより、ユーザが各ドキュメントで特定の XML エレメントまたは属性の内容を検索できるようになります。エレメントや属性が各 XPath インデックスに含まれるかどうかの定義は、このテーブルに記録されます。
このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。このテーブルには列の XPath インデックスに関連付けられた XPath ごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
index_id |
integer |
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 通信プロトコルは数値コードを使用して検索可能なコンテンツを示します。 |
|
説明 |
varchar(64) |
XML エレメントまたは属性に含まれるべき内容を示すテキスト |
|
is_excluded |
integer |
XML エレメントが XPath インデックスに含まれるかどうかを示す値。0 = XPath は含まれます。1 = XPath は含まれません。 |
いいえ |
sde_xml_doc<column_id> テーブルは、XML ドキュメントを格納し、ドキュメントのコンテンツに関するフルテキスト インデックスを管理します。ArcSDE データベースには、XML ドキュメントが含まれる列ごとにこれらのテーブルが 1 つ含まれます。テーブル名の番号は、列の ID です。このテーブルには、列に格納される XML ドキュメントごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
sde_xml_id |
integer |
XML 列に格納される XML ドキュメントの ID。テーブルの主キー |
いいえ |
doc_property |
integer |
XML ドキュメントのコンテンツを XPath インデックスに追加したときに競合が検出されたかどうかを示す値。1 = 競合が検出されました。たとえば、数値でインデックス付けされるはずのエレメントが、ドキュメントに文字列で含まれている場合などです。 |
|
xml_doc |
bytea |
XML ドキュメント |
いいえ |
xml_doc_val |
bytea |
すべての XML タグと他のマークアップが削除された状態の XML ドキュメント全体のコンテンツ この列にはテキスト インデックスがデフォルトで構築されます。このインデックスはフルテキスト検索への応答に使用されます。 |
sde_xml_idx<column_id> テーブルは、XPath テキスト インデックスを持つ列に対して作成されます。このテーブルには、インデックスが作成されている XPath ごとにテキストまたは数値のコンテンツが格納されます。
テーブル名の ID 番号は、XML ドキュメントが含まれる列の内部登録番号です。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
xml_key_column |
integer |
インデックス付けされた値の ID。テーブルの主キー |
いいえ |
sde_xml_id |
integer |
インデックス付けされた値が含まれている XML ドキュメントの ID |
いいえ |
tag_id |
integer |
XML 列の XPath インデックスに関連付けられたタグの ID。ドキュメントのどこに値が格納されているかを識別します。 |
いいえ |
double_tag |
double precision |
XPath インデックス定義においてタグが倍精度として定義されている場合のインデックス付けされた値。 |
|
string_tag |
varchar(256) |
XPath インデックス定義においてタグが varchar として定義されている場合のインデックス付けされた値。 |
|
text_tag |
text |
XPath インデックス定義においてタグが STRINGE として定義されている場合のインデックス付けされた値。 |
次に、XML ドキュメントが含まれる列を含むテーブルとそれを追跡するためのシステム テーブルの図を示します。破線はテーブル間の暗黙的なリレーションシップを示し、実線は明示的に定義されたリレーションシップを示しています。
XML ワークスペース ドキュメントでの XML ドキュメントが含まれる列
XML ドキュメントが含まれる列を含むテーブルを XML ワークスペース ドキュメントにエクスポートすることはできません。XML レコードセット ドキュメントにエクスポートすることは可能です。