SQL:2003 и XML
В этой главе…
- Использование SQL с XML
- XML, базы данных и Internet
Одной из самых существенных новых функциональных возможностей языка SQL:2003 является поддержка файлов XML (extensible Markup Language – расширяемый язык разметки), которые все больше становятся универсальным стандартом обмена данными между разнородными платформами. Для XML не имеет значения, с какой средой приложения, операционной системой или аппаратным обеспечением работает пользователь, которому предоставляются данные. Таким образом, XML позволяет построить "мост" из данных между двумя независимыми пользователями.
Как XML связываемся, с SQL
XML, как и HTML, является языком разметки, а значит, не полнофункциональным языком, как, например, C++ или Java. Это даже не подъязык манипулирования данными, как SQL. Однако он достаточно осведомлен в отношении перемещаемых им данных. Там, где HTML имеет дело только с форматированием текста и графики в документе, XML позволяет работать со структурой содержимого документа. Однако сам XML не предназначен для прямого форматирования. Для осуществления задачи форматирования необходимо дополнить XML таблицей стилей, которая, как и в HTML, позволяет форматировать XML-документы.
SQL и XML структурируют данные двумя различными способами. Таким образом, вы можете сохранить данные и выбрать из них необходимую информацию одним из следующих способов.
- SQL представляет собой прекрасный инструмент для работы с числовыми и текстовыми данными, классифицированными по типам данных и имеющими точно описанный размер. Язык SQL был создан как стандартный инструмент для поддержки и работы с данными, хранящимися в реляционных базах данных.
- Если речь идет о произвольных данных, которые не могут быть однозначно классифицированы, то здесь лучше использовать язык XML. Движущей силой для разработчиков при создании языка XML было стремление обеспечить универсальный стандарт для перемещения данных между разнородными компьютерами и отображения их в World Wide Web.
SQL и XML как бы дополняют цели и возможности друг друга. Каждый несет в себе определенные непревзойденные преимущества в отношении собственных альянсов доменов и форм, что позволяет пользователю получить всю необходимую информацию в любое время и в любом месте.
Тип данных XML
В SQL:2003 впервые был представлен новый для SQL тип данных – тип XML. Это означает, что согласованные между собой реализации могут хранить и работать непосредственно с данными формата XML, без их предварительного преобразования из какого-либо типа данных SQL в тип XML.
Несмотря на то что XML-данные встроены в любую поддерживающую их реализацию, они работают как тип данных, определяемый пользователем (UDT-тип, user-defined type). XML-данные обеспечивают непосредственное взаимодействие языков SQL и XML, поскольку позволяют приложениям выполнять SQL-операции над содержимым XML и, наоборот, XML-операции над содержимым SQL. Вы можете использовать столбцы с XML-данными совместно со столбцами, содержащими любые предопределенные типы данных (см. главу 2), объединяя их в запросах с предложением WHERE. А ваша СУБД, в свою очередь, следуя истинным традициям реляционных баз данных, будет определять оптимальный путь для выполнения запроса, что в конце концов и произойдет.
Когда используются XML-данные
Необходимость хранения данных в формате XML зависит от того, что вы планируете делать с этим данными. Принятие такого решения целесообразно в следующих случаях.
- Если необходимо хранить целый блок данных для последующего получения этих данных в том же полном блоке.
- Если необходимо сделать запрос для целого XML-документа. Некоторые реализации имеют расширенные возможности оператора EXTRACT, которые позволяют извлечь содержимое из XML-документа.
- Если необходимо точно ввести данные вне операторов SQL. Использование типа данных XML гарантирует истинность значений XML, а не только произвольных текстовых строк.
- Для обеспечения совместимости с будущими, еще не установленными системами хранения, которые могут не поддерживать существующие типы, например CLOB (подробнее об этом см. в главе 2).
- Для получения преимуществ в будущих оптимизациях, которые будут поддерживать только XML-данные.