Варианты использования
Упоминавшийся нами во введении Рональд Буре собирается подготовить обзор вариантов
  использования прирожденных XML -СУБД. С этой целью он подготовил документ [16],
  в котором содержатся его предварительные соображения о вариантах использования
  и вопросы к разработчикам и пользователям прирожденных XML -СУБД. Нельзя сказать,
  чтобы все соображения Буре были обоснованными, а некоторые даже производят
  впечатление не вполне продуманных фантазий. Однако на сегодняшний день этот
  материал является единственным, исходящим от независимого эксперта. Коротко
  обсудим некоторые из вариантов использования из списка Буре и соотнесем их
  с возможностями СУБД Sedna . (В начале каждого из следующих четырех пунктов
  приводится пересказ текста Буре, за которым следует наш коментарий.) 
Вариант 1: Большие документы. Во многих приложениях XML -документы обрабатываются
  в модели DOM или преобразуются с использованием процессоров XSLT . В обоих
  случаях, как правило, требуется присутствие в прямо адресуемой памяти всего
  обрабатываемого элемента. Поскольку для хранения документа, например, в модели
  DOM требуется примерно в десять раз больше памяти, чем для исходного XML -документа,
  большие документы обрабатывать оказывается невозможно. Здесь может помочь прирожденная
  XML -СУБД, в базе данных которой DOM или XSLT будут хранить узлы документа,
  извлекая их по мере потребности. 
Конечно, любая прирожденная (скорее всего, и любая приспособленная к XML )
  СУБД справится с поддержкой DOM или XSLT . Но кажется, что в подобных приложениях
  будет использоваться только незначительная часть функциональных возможностей
  системы. Нужна ли здесь, например, полная поддержка XQuery , или достаточен
  XPath ? Требуется ли поддержка транзакционности? И т.д. 
Вариант 2: Документно-центрические ( document - centric )
  XML -данные. Прирожденные XML -СУБД хорошо подходят для управления документно-центрическими
  XML -данными, потому что в них сохраняется порядок документа, и они легко справляются
  с обработкой смешанного контента (чего нет в большинстве СУБД, приспособленных
  к XML ). При управлении контентом могут оказаться востребованными развитые
  средства формулировки запросов. Однако Буре приводит ряд доводов в пользу того,
  что на практике для хранения фрагментов документов в системах управления контентом
  ( content management system ) оказывается
  достаточным применение CLOB 'ов SQL -ориентированных баз данных, если в соответствующей
  СУБД поддерживается полнотекстовый поиск с учетом специфики XML . Более развитые
  запросы могут быть полезны, но пользователи могут без них и обойтись. 
Как кажется нам, при анализе этого варианта использования нельзя говорить
  как про полезность абстрактных прирожденных XML -СУБД вообще, так и про потребности
  абстрактных систем управления контентом. Если (как в случае СУБД Sedna ) в
  системе полностью поддерживается язык XQuery , и его средства запросов и трансформации
  данных хорошо оптимизированы, а приложению требуется не только формировать,
  но и визуализировать контент, то этот вариант использования прирожденных XML
  -СУБД выглядит очень заманчивым (см. также конец этого раздела). 
Вариант 3: Управление полуструктурированными данными. В соответствии с Буре,
  полуструктурированным данными свойственны следующие характеристики: самоописательность
  – метаданные ассоциируются с элементарными частями данных; возможность представления
  разными способами одного и того же вида данных; возможность наличия произвольных
  дополнительных полей; разреженность данных. XML и прирожденные XML -СУБД весьма
  пригодны для представления полуструктурированных данных и управления ими соответственно:
  наличие схемы необязательно, разреженные данные представляются эффективно (последнее
  свойство отсутствует – по Буре! – в реляционных системах. 
Здесь снова опасно говорить про пригодность для управления полуструктурированными
  данными абстрактной прирожденной XML -СУБД. Имеется сильная зависимость от
  конкретных технических особенностей индивидуальной системы. Например, СУБД
  Sedna пригодна для этого варианта использования, поскольку в основе структуры
  хранения XML -документа и обеспечения доступа к его узлам лежит описывающая
  схема, которая строится вне зависимости от наличия или отсутствия предписывающей
  схемы. Язык XQuery позволяет формулировать запросы без предварительного знания
  схемы документа. Все, что потеряется в СУБД Sedna при работе с базой XML -данных
  без предписывающей схемы, – это возможность выполнения некоторых оптимизационных
  преобразований запросов (см. выше), полезных, но не обязательных. 
Вариант 4: Иерархические данные. Модель данных XML является иерархической,
  поэтому иерархические данные представляют собой естественный вариант использования
  прирожденных XML-СУБД. Иерархические данные могут быть однородными или неоднородными.
  У однородных иерархических данных большая часть узлов ветвления или все узлы
  имеют один и тот же тип. Однородные иерархические данные могут иметь произвольную
  глубину. В неоднородных иерархических данных – к которым относится большая
  часть иерархических данных – узлы потомков имеют типы, отличные от типов своих
  предков. По определению, неоднородные иерархии имеют фиксированную глубину.
  Реляционные базы данных могут управлять и однородными, и неоднородными иерархическими
  данными, хотя в каждом случае могут встретиться проблемы. Большая часть данных
  в реляционных базах данных используется для построения неоднородных иерархий.
  Здесь ограничивающим фактором является глубина. Каждая таблица представляет
  отдельный тип узла, и для построения иерархии требуется соединение данных из
  нескольких таблиц. Построение глубокой иерархии означает выполнение многих
  соединений, что, в конце концов, вызовет деградацию производительности до недопустимого
  уровня. Вот почему в базах данных, приспособленных к работе с XML путем использования
  объектно-реляционных отображений, возникают проблемы эффективности при работе
  с глубоко вложенными XML-документами. Однородные иерархии хранятся в одной
  таблице. Имеется ряд способов запросов однородных иерархических данных, большинству
  из которых свойственны проблемы 
Конечно, прирожденные XML -СУБД обеспечивают возможности работы и с однородными,
  и с неоднородными иерархическими данными. Конечно, такие возможности существуют
  и в SQL -ориентированных СУБД. Например, в стандарте SQL :1999 имеются средства
  формулировки рекурсивных запросов, прямо оптимизированные для эффективной работы
  с однородными иерархиями неизвестной глубины. По всей видимости, сравнивать
  эффективность можно только на разных классах запросов. При выполнении запросов
  над иерархическими данными, в которых соединения требуются только для воссоздания
  иерархии, прирожденные XML -СУБД могут оказаться эффективнее реляционных. Для
  тех запросов, в которых потребность в соединениях возникает и в реляционных
  СУБД, и в прирожденных XML -СУБД, более эффективными могут оказаться реляционные
  системы (по крайней мере, до тех пор, пока методы выполнения операции соединения
  в прирожденных XML -СУБД не будут оптимизированы до такого же уровня, как в
  реляционных системах). 
На этом мы прекратим обсуждение вариантов использования из списка Рональда
  Буре, поскольку оставшиеся пять вариантов являются менее понятными, и кратко
  рассмотрим еще один вариант, для которого оптимизирована XML -СУБД Sedna .
  Предлагаемый вариант использования можно назвать “ XML -СУБД как платформа
  Web -приложений управления контентом”. 
Основная идея (которая в менее явной форме затрагивалась в первых разделах
  статьи) состоит в следующем. В настоящее время во многих прирожденных XML -СУБД
  поддерживается язык XQuery . Этот язык можно считать не только языком запросов
  и трансформации XML -данных, но и функциональным языком программирования общего
  назначения (поскольку он полон по Тьюрингу, и в нем поддерживается возможность
  определения пользовательских функций – к сожалению, только функций первого
  порядка). Поэтому на языке XQuery можно реализовать Web -приложение целиком,
  не только ту часть, которая связана с запросами XML -данных, но и визуализацию
  путем трансформации XML -данных в форматы XHTML , VoiceML и т.д., а также и
  логику приложений. В этом случае XML -СУБД являлась бы единственным движущим
  механизмом всего Web -приложения. 
Некоторым разработчикам предложение использовать XQuery (с применением XML
  для представления структур данных) для выражения логики приложения может показаться
  неожиданным и даже пугающим, но эта возможность вполне реальна и обеспечивает
  ряд преимуществ. 
Во-первых, этот подход позволяет избежать потребности в решении проблемы потери
  соответствия ( impedance mismatch ), которая возникает при
  одновременном использовании ряда языков, основанных на разных моделях и парадигмах.
  Например, если разработчик использует Java (для выражения логики приложения)
  и XSLT (для визуализации), он вынужден заботиться об отображении между объектно-ориентированной
  моделью данных и моделью данных XML . Обеспечение такого отображения не только
  чревато техническими сложностями, но может также привести и к общему падению
  эффективности. 
Во-вторых, становится возможной статическая проверка наличия ошибок. Например,
  если динамическая XHTML -страница генерируется с использованием некоторого
  (обычно, скриптового) языка, не основанного на модели данных XML (например,
  Java / JSP ), то ошибки в динамической части страницы могут быть обнаружены
  только во время выполнения. Если же динамическая XHTML -страница реализуется
  с использованием XQuery , то ее динамическая часть может быть проверена на
  предмет наличия ошибок путем использования механизма статического вывода типов
  XQuery.
Наконец, если в XML -СУБД наряду со средствами управления собственными базами
  данных поддерживаются средства интеграции данных, то тот же язык XQuery может
  быть использован для запросов внешних источников данных (например, реляционных
  баз данных) в терминах XML . В этом случае XQuery позволяет избежать еще одной
  потери соответствия – между моделью языка, на котором выражается логика приложения,
  и моделью данных внешнего источника данных. 
Из описания особенностей СУБД Sedna , приведенного в первых разделах статьи,
  легко увидеть, что система действительно оптимизируется в расчете на этот вариант
  использования. Чтобы обеспечить эффективное выполнение запросов и операций
  обновления наряду с эффективным выполнением “программ” XQuery , в системе хранения
  СУБД Sedna поддерживаются прямые указатели в 64-разрядном адресном пространстве
  базы данных, эффективно отображаемые в указатели 32-разрядной виртуальной памяти.
  При выполнении операций XQuery исполнитель динамически изменяет режим исполнения
  с ленивого на строгий, и наоборот в зависимости от природы исполняемой операции
  (связана ли эта операция с интенсивным потреблением данных, или же в основном
  имеет вычислительный характер). 
Для обеспечения эффективного использования XQuery в качестве языка трансформаций
  введена операция отложенного конструирования XML -элемента. Использование этой
  операции позволяет при выполнении большинства трансформационных запросов XQuery
  избежать дорогостоящего глубокого копирования XML -элементов. 
Наконец, еще одна возможность, не упоминавшаяся ранее в этой статье. В предыдущем
проекте группы MODIS была реализована система виртуальной интеграции BizQuery
[15], обеспечивающая доступ через глобальную схему к совокупности распределенных
внешних источников данных. В планах группы MODIS числится включение возможностей
BizQuery в СУБД Sedna.
содержание       назад       вперед