Столбцы XML в базе геоданных в SQL Server

XML - это открытый стандарт определения элементов данных в документах. Для хранения данных XML в базе данных Microsoft SQL Server можно использовать собственные столбцы XML или ArcSDE XML.

Пользовательские XML-документы можно хранить в любом типе XML. Параметр XML_COLUMN_STORAGE DBTUNE управляет типом XML, который используется. По умолчанию значением параметра является DB_XML. Поэтому, по умолчанию используется собственный тип данных XML SQL Server.

ПримечаниеПримечание:

Если вы намереваетесь использовать запросы XPath в собственных столбцах XML SQL Server, вам необходимо создать также полнотекстовые каталоги. Более подробную информацию можно найти в документации SQL Server.

Для типов данных XML ArcSDE необходимо, чтобы база данных SQL Server поддерживала полнотекстовый поиск и содержала полнотекстовый каталог. Информацию о том, как это сделать, можно найти в Подготовка SQL Server к хранению столбцов XML ArcSDE и Cоздание полнотекстового каталога в SQL Server.

XML-столбцы в ArcGIS for Desktop

В базы геоданных XML-столбцы поддерживаются не полностью. Поэтому верно следующее:

Столбцы XML ArcSDE в СУБД SQL Server

Для хранения столбцов XML используются три системные таблицы ArcSDE: SDE_xml columns, SDE_xml_index_tags и SDE_xml_indexes. Эти таблицы принадлежат пользователю - администратору ArcSDE ArcSDE создает также для каждого столбца XML две дополнительные таблицы, используемые для хранения и индексирования XML-документов: таблицы SDE_xml_document и SDE_xml_xpath_index. Эти таблицы принадлежат пользователю - владельцу бизнес-таблицы, содержащей столбец XML.

ArcSDE создает следующие таблицы, используемые для хранения и индексирования XML-документов.

ВниманиеВнимание:

Не изменяйте ни одну из указанных таблиц с использованием SQL.

SDE_xml_columns

При добавлении столбца XML в бизнес-таблицу, в таблице столбцов XML появляется новая строка. Эта таблица есть в каждой базе данных ArcSDE.

Имя поля

Тип поля

Описание

Null?

column_id

int

Идентификатор столбца XML и первичный ключ таблицы

ArcSDE присваивает его в момент создания столбца XML.

NOT NULL

registration_id

int

Идентификатор бизнес-таблицы, содержащей столбец XML и внешний ключ системной таблицы SDE_table_registry

NOT NULL

column_name

nvarchar(32)

Имя столбца, являющегося столбцом XML в бизнес-таблице

NOT NULL

index_id

int

Идентификатор индекса XPath, связанного со столбцом XML (если существует) и внешним ключом таблицы SDE_xml_indexes

minimum_id

int

Начальное значение идентификационного номера отдельных XML-документов в столбце XML бизнес-таблицы

config_keyword

nvarchar(32)

Ключевое слово конфигурации DBTUNE, параметры которого определяют описание в базе данных XML-документа, таблиц индексов XML XPath и текстовых индексов, созданных в этих таблицах.

Более подробную информацию можно найти в Параметры XML ArcSDE в SQL Server.

xflags

int

Значение, показывающее, хранятся ли документы в таблицах документов XML в сжатом или в несжатом виде

По умолчанию, документы хранятся в сжатом виде, поскольку это повышает производительность.

NOT NULL

SDE_xml_indexеs

Эта таблица есть в каждой базе данных ArcSDE. Она содержит строку для каждого столбца XML, имеющего индекс XPath.

Имя поля

Тип поля

Описание

Null?

index_id

int

Идентификатор индекса XPath и первичный ключ таблицы

NOT NULL

index_name

nvarchar(32)

Имя индекса XPath

NOT NULL

владелец

nvarchar(32)

Пользователь базы данных, которому принадлежит столбец XML

NOT NULL

index_type

int

Значение, указывающее тип индекса XPath

Начиная с версии ArcSDE 9.1, значение 2 обозначает тип индекса SE_XML_INDEX_DEFINITION, а 1 - тип индекса SE_XML_INDEX_TEMPLATE.

NOT NULL

описание

nvarchar(64)

Текст, определяющий индекс XPath

Если для создания индекса использовался файл определения индекса, описание индекса может привести вверху этого файла.

SDE_xml_index_tags

Столбец XML может дополнительно иметь индекс XPath, который позволяет выполнять поиск по содержимому определенного элемента XML или по атрибуту в каждом документе. В этой таблице записано, какие элементы и атрибуты включаются или исключаются из каждого индекса XPath

Эта таблица есть в каждой базе данных ArcSDE. Она содержит строку для каждого XPath, связанного с индексом XPath столбца XML.

Имя поля

Тип поля

Описание

Null?

index_id

int

Идентификатор индекса XPath, связанного со столбцом XML (если существует) и внешним ключом таблицы SDE_xml_indexes

NOT NULL

tag_id

int

Идентификатор XPath или тега

NOT NULL

tag_name

nvarchar(1024)

Абсолютный XPath, идентифицирующий элемент или атрибут XML, который может находится в XML-документе

Например, /metadata/mdDateSt обозначает элемент XML, а /metadata/dataIdInfo/tpCat/TopicCatCd/@value обозначает атрибут XML. Пути XPath не должны содержать знак звездочки (*) для ссылки на группу XML элементов или атрибутов - каждый элемент или атрибут должен указываться точно, в соответствии с XPath, заданным в этой таблице. В корректном XML-документе для имен элементов нельзя использовать знак звездочки (*).

NOT NULL

Тип данных (data_type)

int

Значение, указывающее, будет ли индексирован элемент или атрибут XML как число, строка переменной длины (varchar) или текст

1 - содержание тега будет индексировано как текст; 2 - содержание тега будет индексировано как число; 3 - содержание тега будет индексировано как строка переменной длины (varchar).

NOT NULL

tag_alias

int

Число, которое можно использовать для идентификации XPath

Например, протокол связи Z39.50 использует числовые коды для ссылки на содержимое, по которому может выполняться поиск.

описание

nvarchar(64)

Текст, определяющий содержание элемента или атрибута XML

is_excluded

int

Значение, показывающее, входит или нет элемент XML в индекс XPath

0 = входит; 1 = не входит.

NOT NULL

SDE_xml_doc<column_id>

В таблице SDE_xml_doc<column_id> хранится XML-документ и поддерживается полнотекстовый индекс его содержимого. База данных ArcSDE содержит одну из этих таблиц для каждого столбца XML. Число в имени таблицы является идентификатором столбца XML. Эта таблица содержит одну строку для каждого XML-документа, хранящегося в столбце XML.

Имя поля

Тип поля

Описание

Null?

sde_xml_id

int

Идентификатор XML-документа, хранящегося в столбце XML, и первичный ключ для таблицы.

NOT NULL

doc_property

int

Значение, указывающее, были ли обнаружены конфликты при добавлении содержимого XML-документа в индекс XPath

1 = Обнаружен конфликт; например, когда предполагается, что элемент документа должен иметь числовой индекс, но вместо этого в нем содержится строка. Значение NULL = Документ проиндексирован успешно.

NOT NULL

xml_doc

varbinarymax

XML-документ

NOT NULL

xml_doc_val

varbinarymax

Cодержимое XML-документа, включая все XML-теги и другую разметку, полностью удалено

Текстовой индекс этого столбца создается по умолчанию; этот индекс используется для ответа на полнотекстовые запросы.

NOT NULL

sde_time_stamp

timestamp

Используется для пошаговых обновлений текстового индекса

NOT NULL

SDE_xml_idx<column_id>

Таблица SDE_xml_idx<column_id> создается для столбцов XML, имеющих текстовый индекс XPath. В этой таблице хранится текстовое или числовое содержание каждого проиндексированного XPath.

Идентификационный номер в имени таблицы является внутренним регистрационным номером столбца XML.

Имя поля

Тип поля

Описание

Null?

xml_key_column

int

Идентификатор индексированного значения и первичный ключ таблицы

NOT NULL

sde_xml_id

int

Идентификатор XML-документа, который содержит индексированное значение

NOT NULL

tag_id

int

Идентификатор тега, связанного с индексом XPath столбца XML, который определяет, где именно в документе находится значение

NOT NULL

double_tag

float

Индексированное значение, используется, когда в определении индекса XPath тег задан в виде DOUBLE

string_tag

nvarchar(256)

Индексированное значение, используется, когда в определении индекса XPath тег задан в виде строки переменной длины (VARCHAR)

text_tag

ntext

Индексированное значение, используется, когда в определении индекса XPath тег задан в виде STRING

sde_time_stamp

timestamp

Используется для пошаговых обновлений текстового индекса

NOT NULL

Ниже показана диаграмма таблицы со столбцом XML и системными таблицами, использующимися для хранения информации о нем. Пунктирными линиями показаны неявные отношения; сплошной линией обозначены явно заданные отношения между таблицами.

Бизнес-таблица и системные таблицы, используемые для отслеживания столбцов XML в SQL Server

Столбцы XML в XML-документе

Таблицу, содержащую столбец XML, нельзя экспортировать в XML-документ рабочей области Вы можете экспортировать ее в XML-документ набора записей, но в документе не будет никакого указания на то, что столбец является столбцом XML.

Связанные темы

9/11/2013