Столбцы XML в базе геоданных, хранящейся в PostgreSQL
XML - это открытый стандарт для определения элементов данных в документах. Для хранения данных XML в базе данных PostgreSQL можно использовать столбцы ArcSDE XML или PostgreSQL XML.
Пользовательские XML документы можно хранить в любом типе XML. Параметр XML_COLUMN_STORAGE sde_dbtune управляет типом использующегося XML. По умолчанию, используется тип данных PostgreSQL XML.
XML-столбцы в ArcGIS for Desktop
В базы геоданных XML-столбцы поддерживаются не полностью. Поэтому верно следующее:
- Вы не можете выполнять просмотр содержимого XML-столбца таблицы в ArcCatalog. Столбец будет пустым или будет содержать нечитаемые символы.
- В закладке Поля (Fields) диалогового окна Свойства (Properties) для XML-столбца тип данных не отображается.
- Вы не можете копировать и вставить таблицу, содержащую XML-столбец из одной базы геоданных в другую.
- Если вы импортируете или экспортируете таблицу с использованием инструментов геообработки, то XML-столбец необходимо исключить.
- Вы не можете зарегистрировать таблицу с XML-столбцом как версионную с использованием ArcCatalog.
- Если вы откроете таблицу, содержащую XML-столбец в ArcMap, то он будет пустым.
- Для редактирования таблицы с XML-столбцом в ArcMap вы можете использовать неверсионный сеанс редактирования. Однако вы не можете редактировать сам XML-столбец, только другие поля таблицы.
Столбцы, содержащие документы XML, в СУБД PostgreSQL
Существует два различных типа столбцов XML, которые вы можете использовать: ArcSDE XML или собственный XML тип PostgreSQL. Тип, который используется в создаваемом вами наборе данных, задается параметром XML_STORAGE в таблице sde_dbtune.
Если вы используете собственный PostgreSQL тип XML, дополнительные системные таблицы в базе геоданных не требуются, они отслеживаются с помощью системных таблиц PostgreSQL.
В ArcSDE XML, для управления столбцами XML используются три системные таблицы базы геоданных: sde_xml_columns , sde_xml_index_tags и sde_xml_indexes. Эти таблицы принадлежат администратору ArcSDE. ArcSDE создает также для каждого столбца XML две дополнительные таблицы, используемые для хранения и индексирования XML-документов: sde_xml_doc<column_id> и sde_xml_idx_<column_id>. Эти таблицы принадлежат пользователю - владельцу бизнес-таблицы, содержащей документ XML.
ArcGIS создает следующие таблицы, использующиеся для хранения и индексирования документов XML.
Не изменяйте ни одну из указанных таблиц с использованием SQL.
При добавлении столбца в бизнес-таблицу для хранения XML документов, в таблице столбцов XML появляется новая строка. Эта таблица есть в каждой базе геоданных ArcSDE.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
column_id |
целое |
Идентификатор столбца XML и первичный ключ таблицы ArcSDE присваивает его в момент создания столбца XML. |
NOT NULL |
registration_id |
целое |
Идентификатор бизнес-таблицы, содержащей столбец XML и внешний ключ системной таблицы table_registry |
NOT NULL |
column_name |
varchar(32) |
Имя столбца, являющегося столбцом XML в бизнес-таблице |
NOT NULL |
index_id |
целое |
Идентификатор индекса XPath, связанного со столбцом XML (если есть) и внешним ключом таблицы sde_xml_indexes |
|
minimum_id |
целое |
Значение начального числа, использующегося в столбце XML бизнес-таблицы для идентификации отдельных XML документов. |
|
config_keyword |
varchar(32) |
Ключевое слово конфигурации DBTUNE, параметры которого определяют, как XML документ, индексные таблицы XML XPath и текстовые индексы, созданные в этих таблицах, задаются в базе данных. |
|
xflags |
целое |
Значение, показывающее, хранятся ли документы в таблицах документов XML в сжатом или в несжатом виде По умолчанию, документы хранятся в сжатом виде, поскольку это повышает производительность. |
NOT NULL |
Эта таблица есть в каждой базе данных ArcSDE. Она содержит строку для каждого столбца, имеющего индекс XPath.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
index_id |
целое |
Идентификатор индекса XPath и первичный ключ таблицы |
NOT NULL |
index_name |
varchar(32) |
Имя индекса XPath |
NOT NULL |
владелец |
varchar(32) |
Пользователь базы данных, которому принадлежит столбец XML |
NOT NULL |
index_type |
целое |
Значение, указывающее тип индекса XPath Тип индекса SE_XML_INDEX_DEFINITION обозначается цифрой 2, тип SE_XML_INDEX_TEMPLATE - цифрой 1. |
NOT NULL |
описание |
varchar(64) |
Текст, определяющий индекс XPath Если для создания индекса используется файл определения индекса, описание индекса можно ввести вверху этого файла. |
Столбец, содержащий XML документ может дополнительно иметь индекс XPath, который позволяет выполнять поиск по содержимому определенного элемента XML или по атрибуту в каждом документе. В эту таблицу записывается определение каждого элемента, который включается, или исключается, из каждого индекса XPath.
Эта таблица есть в каждой базе данных ArcSDE. Она содержит строку для каждого XPath, связанного с индексом XPath столбца.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
index_id |
целое |
Идентификатор индекса XPath, связанного со столбцом XML (если есть) и внешним ключом таблицы sde_xml_indexes |
NOT NULL |
tag_id |
целое |
Идентификатор XPath или тег |
NOT NULL |
tag_name |
varchar(1024) |
Абсолютный XPath, идентифицирующий элемент XML или атрибут, который может находится в документе XML Например, /metadata/mdDateSt идентифицирует элемент XML, а /metadata/dataIdInfo/tpCat/TopicCatCd/@value определяет XML атрибут. Пути XPath не могут использовать знак звездочки (*) для ссылки на группу XML элементов или атрибутов - каждый элемент или атрибут должен указываться точно, в соответствии с XPaths, заданным в этой таблице. Имена элементов в документе XML не могут содержать знак звездочки (*). |
NOT NULL |
Тип данных (data_type) |
целое |
Значение, определяющее тип индексации элемента XML или атрибута: 1 - содержание тега будет индексировано как текст; 2 - содержание тега будет индексировано как число; 3 - содержание тега будет индексировано как строка переменной длины (varchar). |
NOT NULL |
tag_alias |
целое |
Число, использующееся для идентификации XPath Например, протокол коммуникации Z39.50 использует числовые коды для ссылок на содержимое, в котором может выполняться поиск. |
|
описание |
varchar(64) |
Текст, определяющий содержимое элемента или атрибута XML |
|
is_excluded |
целое |
Значение, показывающее, входит или нет элемент XML в индекс XPath; 0 = входит в XPath, 1 = не входит в XPath. |
NOT NULL |
В таблице sde_xml_doc<column_id> хранится XML документ и полнотекстовый индекс его содержимого. В базе данных ArcSDE находится одна из этих таблиц для каждого столбца, содержащего документ XML. Число в имени таблицы является идентификатором столбца. Эта таблица содержит одну строку для каждого XML-документа, хранящегося в столбце.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
sde_xml_id |
целое |
Идентификатор XML-документа, хранящегося в столбце XML, и первичный ключ для таблицы. |
NOT NULL |
doc_property |
целое |
Значение, показывающее наличие конфликтов при добавлении содержимого документа XML в индекс XPath; 1 = найден конфликт; например, предполагается, что элемент должен индексироваться в числовом виде, но элемент документа содержит строку. |
|
xml_doc |
bytea |
XML-документ |
NOT NULL |
xml_doc_val |
bytea |
Cодержание XML-документа, включая все XML-теги и другую разметку, полностью удалено Текстовой индекс этого столбца создается по умолчанию; этот индекс используется для ответа на полнотекстовые запросы. |
Для столбцов, имеющих текстовой индекс XPath, создается таблица sde_xml_idx<column_id>. В этой таблице хранится числовое или текстовое содержание каждого проиндексированного XPath.
Идентификационный номер в имени таблицы является внутренним регистрационным номером столбца, содержащего документ XML.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
xml_key_column |
целое |
Идентификатор индексированного значения и первичный ключ таблицы |
NOT NULL |
sde_xml_id |
целое |
Идентификатор XML-документа, который содержит индексированное значение |
NOT NULL |
tag_id |
целое |
Идентификатор тега, связанного с индексом XPath столбца XML, который определяет, где именно в документе находится значение |
NOT NULL |
double_tag |
двойная точность |
Индексированное значение, используется, когда в определении индекса XPath тег задан в виде числа с двойной точностью |
|
string_tag |
varchar(256) |
Индексированное значение, используется, когда в определении индекса XPath тег задан в виде строки переменной длины (varchar) |
|
text_tag |
текст |
Индексированное значение, используется, когда в определении индекса XPath тег задан в виде STRING |
Ниже показана диаграмма таблицы со столбцом, содержащим XML документ, и системными таблицами, использующимися для хранения информации о нем. Пунктирными линиями показаны неявные отношения; сплошной линией обозначены явно заданные отношения между таблицами.
Столбцы, содержащие документ XML в XML-документе рабочей области
Экспортировать таблицу, содержащую столбец с документом XML, в XML-документ рабочей области нельзя. Вы можете экспортировать ее в документ набора записей XML.