Открыть сервис

SQL/XML

SQL/XML — это открытый стандарт, определяющий методы интеграции реляционных баз данных с языком разметки XML (Extensible Markup Language). Он позволяет обрабатывать XML-данные с помощью языка SQL, выполнять преобразование реляционных данных в XML-формат и обратно, а также выполнять запросы к XML-документам, хранящимся в базах данных. Стандарт является частью семейства стандартов языка SQL (ISO/IEC 9075).

История

Потребность в интеграции SQL и XML возникла в конце 1990-х годов с ростом популярности XML как универсального формата для обмена данными между различными информационными системами. Реляционные базы данных, доминировавшие в тот период, хранили данные в таблицах, что затрудняло их прямое использование в XML-ориентированных протоколах и веб-сервисах.

Первая версия стандарта SQL/XML, известная как «SQL/XML:2003», была опубликована Международной организацией по стандартизации (ISO) в 2003 году как часть ISO/IEC 9075-14. Она вводила базовые типы данных для XML, функции для генерации XML из реляционных данных и операторы для запросов к XML-документам.

Последующие версии стандарта:

Стандарт SQL/XML постоянно развивается параллельно с основным стандартом SQL, обеспечивая совместимость между различными системами управления базами данных (СУБД).

Основные компоненты

Стандарт SQL/XML определяет несколько ключевых компонентов, обеспечивающих взаимодействие между SQL и XML.

Типы данных XML

Стандарт вводит специальный тип данных, обычно называемый XML (или XMLType в некоторых реализациях, например, в Oracle). Этот тип может хранить:

Данные этого типа могут быть проверены на соответствие определённой XML-схеме (XSD) и могут индексироваться для ускорения запросов.

XML-функции

Стандарт определяет набор функций для создания, преобразования и извлечения XML-данных из реляционных таблиц.

  1. Генерация XML из реляционных данных:
  1. Преобразование реляционных данных в XML-документ:
  1. Манипуляции с XML:

Встраивание XQuery

Стандарт SQL/XML включает поддержку языка запросов XQuery. Это позволяет выполнять сложные запросы к XML-данным непосредственно из SQL-выражений. Например, запрос XMLQuery('for $x in /books/book where $x/author = "Толстой" return $x/title') возвращает список книг автора «Толстой» из XML-документа.

Применение

SQL/XML широко используется в следующих областях:

Реализации в СУБД

Стандарт SQL/XML реализован во многих коммерческих и открытых СУБД, хотя степень поддержки может различаться.

СУБДТип данных XMLКлючевые возможностиПримечания
Oracle DatabaseXMLTypeXMLElement, XMLAgg, XMLQuery, XMLTable, XQueryНаиболее полная реализация. Поддерживает индексация XML-данных, проверка по XSD-схемам.
Microsoft SQL ServerxmlXML.value(), XML.query(), XML.exist(), XML.nodes() (через методы типа xml)Поддерживает XQuery, XPath, XSD-схемы. FOR XML для преобразования реляционных данных в XML.
PostgreSQLxmlXMLElement, XMLForest, XMLQuery, XMLTable, XPath-функции (xpath, xpath_exists)Реализация близка к стандарту. Поддерживается проверка по XSD.
IBM Db2XMLXMLElement, XMLAgg, XMLQuery, XMLTable, XQueryВстроенная поддержка, возможность индексации.
MySQLJSON (функции XML ограничены)Функции ExtractValue(), UpdateXML()Поддержка XML минимальна. Основной акцент — на JSON.

Пример использования

Пусть имеется реляционная таблица employees со столбцами id, name, position и salary.

``sql -- Преобразование данных в XML-документ SELECT XMLElement("employees", XMLAgg( XMLElement("employee", XMLForest(e.id AS "id", e.name AS "name", e.position AS "position") ) ) ) FROM employees e; ``

Результат (XML-документ):

``xml <employees> <employee> <id>1</id> <name>Иван Петров</name> <position>Менеджер</position> </employee> <employee> <id>2</id> <name>Мария Сидорова</name> <position>Разработчик</position> </employee> </employees> ``

Критика и ограничения

Источники

  1. ISO/IEC 9075-14:2016 — Information technology — Database languages — SQL — Part 14: XML-Related Specifications (SQL/XML).
  2. «SQL:2003 Has Been Published», Andrew Eisenberg, Jim Melton, и Krishna Kulkarni, SIGMOD Record, 2004.
  3. «SQL/XML:2006 – Even More Standard», Andrew Eisenberg, Jim Melton, Krishna Kulkarni, Michel Peltier, SIGMOD Record, 2005.
  4. «Database Systems: A Practical Approach to Design, Implementation, and Management», Thomas Connolly и Carolyn Begg.
  5. «Pro SQL Server 2012 Relational Database Design and Implementation», Louis Davidson.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →