Андрей Прохоров
В последние годы все большее количество поставщиков программного обеспечения
заявляют о поддержке в своих продуктах технологий XML. Не остался в стороне и
такой поставщик СУБД, как компания Informix Software.
Как именно объектно-реляционный сервер может поддерживать XML - вопрос далеко
не однозначный даже для специалистов. Задача данной статьи - рассказать о том,
как в принципе объектно-реляционная СУБД (ОРСУБД) может поддерживать
XML-технологии и как эти подходы реализованы в СУБД Informix Dynamic Server
9.
По сути XML обеспечивает текстовое представление структурированных данных.
Плохо ли, хорошо, но, для того чтобы структуру данных можно было представить в
виде XML-документа, она должна быть определена. Ниже приведен пример заголовка
статьи, структура которого описана при помощи XML: <ARTICLE>
<AUTHOR>
<FNAME>Петр</FNAME>
<LANME>Васин</LNAME>
</AUTHOR>
<TITLE>СУБД и XML</TITLE>
<DATE>25.04.01</DATE>
</ARTICLE>
С первого взгляда видно, что достоинством XML является наглядность. Однако не
менее очевидно и то, что этого еще не достаточно для распространения данного
стандарта. Главным достоинством XML является его приспособленность к
преобразованию. Значительная часть технологий, связанных с XML, нацелены как раз
на обеспечение преобразования документов из одного представления в другое.
Потребность в гибком процессе преобразования структур данных чаще всего
возникает при организации взаимодействия в распределенной неоднородной системе.
В этом случае существует ряд подсистем, использующих свои методы хранения и
обработки данных. При этом данные должны быть извлечены в некоторый
универсальный формат, которым является XML, из одного приложения, а затем
восприняты другим приложением. Таким образом, XML становится форматом, в который
могут выгружать и из которого могут считывать данные подавляющее большинство
продуктов.
Другой прикладной задачей, требующей применения XML-технологии, является
хранение документов, которые по требованию пользователя должны быть
предоставлены в самых различных форматах. Типичным примером может служить
техническая документация, которая в любой момент должна быть доступна в самых
различных форматах - HTML, PostScript, PDF и др.
Так формируется широкий спектр задач, требующих применения унифицированных
средств преобразования данных в различных форматах.
Для хранения XML в реляционной или объектно-реляционной СУБД сейчас
используются три основных подхода. Первый заключается в том, что XML-документ
сохраняется в неизменном виде как последовательность символов. При втором
подходе XML-документ разбирается, а его части раскладываются по некоторому
набору связанных логической схемой таблиц. Третий способ заключается в том,
чтобы попытаться сохранить иерархическую структуру XML и получить возможность
эффективного доступа к его элементам.
С точки зрения реализации самым простым способом является первый. Он очень
часто применяется при использовании РСУБД для хранения XML-данных. Все
возможности обработки сводятся к записи документа в поле типа BLOB или CLOB и к
его извлечению по запросу пользователя. При этом вся осмысленная обработка
ложится на приложение.
Использование объектно-реляционных технологий позволило расширить
интеллектуальные возможности СУБД по обработке документов при данном методе
хранения. В частности, в ОРСУБД Informix Dynamic Server 9 (IDS 9) появилась
такая структура хранения данных, как Smart BLOB. Отличительной особенностью
Smart BLOB является то, что сервер может выполнять более тонкие операции с таким
объектом. В частности, сервер предоставляет возможность выбирать, изменять и
блокировать не весь Smart BLOB целиком, а только указанные фрагменты поля
данного типа.
Кроме того, IDS 9 предоставляет открытый API для определения вторичных
методов доступа, то есть индексов. Благодаря такой открытости разработаны три
модуля полнотекстового поиска компаниями Excalibur, Verity и RedLab для IDS 9. В
частности, модуль Verity позволяет осуществлять контекстный поиск по
XML-документам. При помощи Verity Text Search DataBlade можно осуществлять
индексированный поиск по определенным разделам документа. Если вернуться к
приведенному выше примеру с заголовками статей, то можно запросить все статьи, в
заголовках которых встречается указанное слово или словосочетание.
Таким образом, применение сервера IDS 9 позволяет существенно расширить
возможности по обработке XML-документов при их хранении в неизменном виде.
Простота реализации данного способа хранения вполне оправданна при работе с
данными относительно несложной структуры.
Самый простой способ далеко не всегда оказывается оптимальным. Не все
прикладные решения позволяют хранить XML-документы в уже сформированном виде.
Часто возникает необходимость формировать XML из содержимого классической
реляционной базы данных, и наоборот, содержимое приходящего XML-документа
вносить в такую базу.
В свою очередь, данный метод формирования и разбора XML-документа может быть
реализован двумя способами:
- путем осуществления преобразования внешним приложением;
- путем преобразования документов внутри сервера баз данных.
В первом случае вся нагрузка, связанная с формированием и разбором
XML-документов, ложится на клиентское приложение либо на сервер приложений.
Такой подход имеет как преимущества, так и недостатки. К преимуществам можно
отнести:
- относительную простоту реализации метода;
- разнесение вычислительной нагрузки между СУБД и приложением.
Естественно, что наряду с достоинствами имеются и недостатки. В этом случае
каждое приложение, нуждающееся в XML-документе, должно само заботиться о его
формировании и разборе XML. Для облегчения данного процесса Informix предлагает
инструментальное средство Informix Object Translator. Это визуальное средство
разработки позволяет связать объекты, в самом общем понимании, с реляционной
структурой базы данных. При этом автоматически генерируется код, обеспечивающий
сохранение и извлечение объектов из базы данных. Object Translator имеет
встроенные средства поддержки XML как одного из таких типов объектов. Генерация
кода обеспечивается для языков Visual Basic и Java.
Специальное расширение JAXP интерфейса доступа к данным JDBC представила
компания Sun. Это расширение предназначено для работы с XML-документами из
Java-приложений. Компания Informix реализовала поддержку данного расширения в
очередной версии своего JDBC-драйвера 2.20.
Второй способ формирования XML-документов внутри сервера баз данных является
более сложным, но зато гораздо более элегантным. Дело в том, что вариант
поставки IDS 9, называемый Informix Internet Foundation, включает компонент
J/Foundation. Этот компонент позволяет выполнять Java-процедуры внутри сервера.
Таким образом, можно воспользоваться бесплатно распространяемыми XML-парсерами,
написанными на Java, для формирования и разбора XML-документов непосредственно
внутри сервера Informix.
В результате разработчики получают полную свободу выбора при реализации
методов хранения XML-документов в классических реляционных структурах.
Наиболее сложным и при этом наиболее перспективным методом организации
хранения XML-документов является воспроизведение иерархической структуры
документа в рамках объектно-реляционной модели. Данный подход сулит достижение
высокой эффективности в обработке данных.
В Informix разработан прототип иерархического метода хранения в виде Node
Blade. В рамках этого модуля реализован тип данных Node - узел дерева. С его
помощью структура приведенного выше примера XML-документа может быть
представлена в следующем виде: Node Value :: Node Tag Name :: Varchar
1 ARTICLE
1.1 AUTHOR
1.1.1 FNAME
1.1.2 LNAME
1.2 TITLE
1.3 DATE
При этом вполне естественным образом можно организовать переход между
различными уровнями иерархии. Для их осуществления могут быть задействованы
обычные B+-индексы. Так, для перехода от тэга <LNAME> на один уровень выше
необходимо урезать идентификатор исходного узла 1.1.1 до 1.1. Это вполне
очевидная, легко выражаемая и, что более важно, быстро исполняемая в терминах
SQL операция.
Очевидно, что концепция еще не завершена. Реляционная и объектно-реляционная
модель подразумевает, что в одной колонке должны храниться элементы,
принадлежащие одному типу данных. В случае XML ситуация осложняется тем, что с
различными тэгами могут быть связаны элементы различных типов.
Одним из возможных выходов из данной ситуации может быть использование для
хранения элементов XML-документа типа данных lvarchar. Все определяемые типы
данных сервера Informix должны иметь возможность приведения и к этому типу
данных. При извлечении элемента по названию тэга можно определять тип и
приводить lvarchar к нужному типу данных.
Так выглядит направление разработок Informix по обеспечению хранения
XML-документов в виде естественной для них иерархической структуры данных.
Таким образом, Informix поддерживает все основные методы работы с
XML-документами. При этом реализуется данная поддержка не только на уровне
объектно-реляционного сервера баз данных IDS 9, но и на уровне средств связности
и средств разработки. Это позволяет выбрать оптимальное для решения конкретной
прикладной задачи технологическое решение.
Литература по XML
|