XML for DB2 Information Integration

С радостью обнаружил, что «красная книга» IBM под названием XML for DB2 Information Integration выложена в открытый доступ (pdf). Один из авторов—известный эксперт по теме XML и базам данных Рональд Буре. Более чем на 700 страницах книги обсуждаются не только особенности реализации поддержки XML в СУБД DB2, но и общие вопросы—например, в первой главе даётся обзор задачи хранения XML-данных и работы с ними, областей применимости РСУБД с поддержкой XML и прирождённых (native) XML СУБД.

Ну и, конечно же, книга содержит детальное описание особенностей реализации поддержки XML в DB2 —СУБД, которая, несомненно, сегодня имеет самую мощную реализацию типа данных XML среди реляционных систем.

Это знак :-)

Научил дочку набирать на ноутбуке первые слова: МАМА, ПАПА, ТАНЯ. Передал на дальнейшее обучение жене, попросил научить словам БАБА, ДЕД.

Минут через 10 смотрю—Таня после слова ДЕД набрала... XML!

Я в шоке :-) Первое самостоятельное слово. Понятно, конечно, что с PostgreSQL такое бы не произошло. Но всё равно—это ж какое совпадение, а :-)
Танино первое самостоятельно написанное слово

Начальная поддержка XML-типа (SQL/XML) в PostgreSQL

Peter Eisentraut закоммитил в CVS Postgres-а дополненный и отшлифованный им патч начальной поддержки XML-типа и SQL/XML-функций публикации документов – функциональность, над которой я работал летом в рамках Google Summer of Code 2006. Стоит отметить, что очень-очень многое ещё предстоит сделать. Патч добавляет поддержку XML-типа (в простейшем виде, обёртка над VARCHAR-ом), основные SQL/XML-функции для публикации XML-документов и простую поддержку DTD-валидации. Для задач парсинга документов и фрагментов документов (в некотором роде эмуляция sequences из XDM) используется известная библиотека libxml2. Поддержка XPath временно убрана – сначала необходимо “разрулить” все вопросы, связанные с самим типом данных, причём, пока на логическом уровне.

В ближайшее время (хорошо всё-таки, что близится куча праздников) я собираюсь обновить и расширить TODО, как можно быстрее разрешить все известные мне проблемы/баги/недоделки и приступить к реализации эффективной поддержки XPath – на основе специального рода индексов, базирующихся на нумерующей схеме SLS и специальном GiST-типе.

Помимо индексов для XPath-выражений, существует огромное количество задач – это и поддержка XML Schema с её типами (очень важная задача, т.к. необходимо двигаться в направлении XQuery Data Model), XML Namespaces, различных кодировок (сейчас функицональность работает только для UTF-8) и т.д. и т.п. Надеюсь, функциональность будет востребована – только в этом случае возможна реализация действительно хорошей поддержки типа данных XML во всеми любимой ОРСУБД :-)

Все желающие могут ознакомиться с данными возможностями, скачав патч: xmltype.pgsql820.patch.tar.bz2. Любые комментарии можно отправлять по адресу xml4pgsql at samokhvalov dot com.

XML-функции в MySQL 5.1

В MySQL 5.1 появилась пара функций для работы с XML-данными:

  • ExtractValue – оценка XPath-выражения для XML-документа, хранящегося в традиционном текстовом поле;

  • UpdateXML – обновление части документа.

Подробнее об этом можно прочитать в официальной документации.

Возникает ряд закономерных вопросов. Во-первых, зачем торопиться с реализацией операции обновления. Есть подозрение, что реализация эта в некотором роде фиктивна – наверняка, при обновлении документа на физическом уровне происходит перезапись всего поля (а скорее, всего кортежа). Повторюсь, это всего лишь подозрение :-) Если я ошибаюсь, значит реализована задача частичного обновления XML-документов. Не такая уж простая, надо сказать, задача. Как правило, когда доходит до её решения, СУБД уже обрастает богатыми возможностями для работы с XML-данными, чего о MySQL на данный момент не скажешь.
Во-вторых, лично меня удивляет тот факт, что выбран именно такой синтаксис и что не решены предварительно задачи а) более простые (SQL/XML publishing functions, 14-я часть стандартов SQL:200n) и б) более фундаментальные (проверка на well-formedness, кодировки, согласование типов).

Реализация XPath у них, видимо, своя. Хотя, почему бы не использовать libxml2? :-) По крайней мере, то, что есть сейчас, так или иначе напоминает некоторое “прощупывание” почвы, пробу пера. Возможностей libxml2 для этого было бы более чем достаточно.

Update. Наткнулся на прошлогоднюю презентацию (к сожалению, только в гугловом кэше). Простенькие примеры XPath-запросов, ничего особенного. “Гениальная” идея ускорения оценки XPath-выражений на большом количестве документов – воспользоваться полнотекстовым индексом :-) Поле-то, где хранится XML-документ, текстовое, почему бы и нет, просто дополнительный фильтр, сужающий выборку.

Ну что ж, пожелаем, творцам TheirSQL дальнейших творческих успехов :-)

XML and Relational Databases

There is a wide hype about XML support in relational DBMSs nowadays. The basic feature of newest IBM’s system DB2 version 9 (a.k.a. ‘Viper’) is native XML storage support, they use a lot of XML-noise in their marketing program, write a lot of technical articles, attract scientists eyes and ears at conferences [1], etc. Actually, not only IBM’s developers do a lot of work trying to achieve a good support of XML in their DBMS products. Microsoft and Oracle obtained pretty good results during several years of XML type support development and I’m sure that Open Source people may learn many good things from that work. Well, what it all for? Is it really necessary to have abilities for working with XML in relational databases? Let me give several examples and decide yourself, yes or no.

I will give a very simple classification. It is based on dividing all major cases to as little as two parts, by direction of XML data flow (сan you suggest simpler way?). Then, I provide two types of examples, business-to-business (“B2B”) and ones from web development world (“webdev”). As for webdev, it’s pretty clear that any web developer can imagine plenty examples in addition to mine – and there is no strange here, because XML is widely used by web developers and actually, Internet is “native land” of XML.
At the end, I’ll give two remarks, which, I suppose, are pretty essential and should be taken into account if we want to talk about XML support in relational databases today.

→ continue reading