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

pureXML

pureXML — это технология хранения, обработки и запросов XML-данных, реализованная в реляционной системе управления базами данных (СУБД) IBM Db2 (ранее — IBM DB2 Universal Database). В отличие от традиционных подходов, где XML-документы хранятся в виде текстовых строк (CLOB) или разбиваются на реляционные таблицы, pureXML обеспечивает нативное (естественное) хранение XML в иерархическом формате, сохраняя структуру документа, порядок элементов и поддержку пространств имён. Технология была впервые представлена компанией IBM в 2006 году в версии DB2 9 (Viper) и с тех пор является одной из ключевых инноваций в области гибридных (реляционно-иерархических) баз данных.

История

Развитие pureXML связано с ростом популярности XML как формата обмена данными в веб-сервисах, электронном документообороте, финансовой отчётности и научных вычислениях. До середины 2000-х годов СУБД либо хранили XML в виде больших текстовых полей (что замедляло поиск и обновление), либо требовали сложного преобразования в реляционные таблицы (что нарушало иерархию и порядок). IBM, имея многолетний опыт в разработке СУБД (DB2, Informix), решила создать нативное XML-хранилище, интегрированное в реляционное ядро.

Первая реализация — DB2 9 (2006 год) — предложила новый тип данных XML и язык запросов XQuery в дополнение к SQL. В 2007 году вышла версия DB2 9.5 с улучшенной производительностью индексации XML-данных. В 2009 году в DB2 10 появилась поддержка XML Schema для валидации документов при вставке. Последующие версии (DB2 11, Db2 11.5, Db2 12) расширили функциональность: добавлена поддержка JSON (как подмножества XML-модели), улучшена параллельная обработка и интеграция с облачными платформами (IBM Cloud, Amazon RDS для Db2).

Архитектура и принципы работы

Нативное хранение XML

В pureXML XML-документы не преобразуются в реляционные строки и не хранятся как простой текст. Вместо этого СУБД использует внутреннее иерархическое представление, основанное на дереве разбора (parse tree). Каждый элемент, атрибут, текстовый узел и пространство имён сохраняются в виде узлов, связанных родительско-дочерними отношениями. Это позволяет:

  • Сохранять порядок элементов (в отличие от реляционных таблиц, где порядок строк не гарантирован).
  • Поддерживать произвольную вложенность (до 32 уровней по умолчанию, настраивается).
  • Обрабатывать XML-документы без потери структуры (например, CDATA-секции, комментарии, инструкции обработки).

Физически данные хранятся в специальных страницах (XML-страницах), отделённых от реляционных данных, но в рамках одного табличного пространства. Для каждого XML-документа создаётся уникальный идентификатор (XMLID), а сам документ разбивается на узлы, которые сжимаются для экономии места.

Индексация XML

Для ускорения запросов pureXML поддерживает несколько типов индексов:

  • Путевые индексы (path indexes) — индексируют пути к элементам и атрибутам (например, /root/employee/name).
  • Значенческие индексы (value indexes) — индексируют значения узлов (например, строки, числа, даты).
  • Полнотекстовые индексы (full-text indexes) — для поиска по текстовому содержимому XML-документов (начиная с DB2 9.5).

Индексы создаются с помощью оператора CREATE INDEX с указанием типа XMLPATTERN и пути.

Языки запросов

pureXML поддерживает два основных языка запросов:

  • SQL/XML — расширение SQL, позволяющее встраивать XQuery-выражения в SQL-запросы. Пример: SELECT XMLQUERY('$d/employee/name' PASSING doc AS "d") FROM employees.
  • XQuery — самостоятельный язык запросов, ориентированный на XML. Пример: xquery for $e in db2-fn:xmlcolumn('EMPLOYEES.DOC')/employee where $e/salary > 50000 return $e/name.

Оба языка могут использоваться в хранимых процедурах, функциях и триггерах.

Классификация и виды

По способу хранения

pureXML относится к классу гибридных (dual-mode) СУБД, которые одновременно поддерживают реляционную и иерархическую модели данных. В отличие от:

  • Чисто реляционных СУБД (Oracle, PostgreSQL, MySQL) — где XML хранится как CLOB или разбивается на таблицы.
  • Чисто XML-ориентированных СУБД (eXist-db, BaseX) — которые не поддерживают SQL и реляционные таблицы.

По версиям Db2

  • Db2 for Linux, UNIX, Windows (LUW) — основная платформа, где pureXML появилась первой.
  • Db2 for z/OS — версия для мейнфреймов IBM Z, поддерживает pureXML с 2008 года (DB2 9 для z/OS).
  • Db2 Warehouse — аналитическая версия, где pureXML используется для хранения полуструктурированных данных в озёрах данных.
  • Db2 on Cloud — облачная версия, где pureXML доступна как сервис.

Применение

Финансовый сектор

pureXML широко используется в банках и страховых компаниях для хранения и обработки:

  • SWIFT-сообщений (финансовые переводы, платежи).
  • FpML (Financial products Markup Language) — деривативы и процентные свопы.
  • XBRL (eXtensible Business Reporting Language) — финансовая отчётность (например, для Центрального банка РФ).

Электронный документооборот

В системах электронного документооборота (СЭД) pureXML позволяет хранить:

  • PDF/A с XML-метаданными.
  • EPUB и другие форматы электронных книг.
  • XML-схемы и XSLT-преобразования для проверки и конвертации документов.

Научные и медицинские данные

  • HL7 v3 (Health Level 7) — стандарт обмена медицинскими данными.
  • DICOM (Digital Imaging and Communications in Medicine) — метаданные медицинских изображений.
  • GML (Geography Markup Language) — геопространственные данные.

Веб-сервисы и SOA

pureXML используется как бэкенд для SOAP-сервисов, REST-сервисов (с XML-форматом), а также для хранения конфигураций и метаданных в корпоративных сервисных шинах (ESB).

Преимущества и недостатки

Преимущества

  • Производительность — нативное хранение XML в 2–5 раз быстрее, чем хранение в CLOB, при выполнении запросов XPath/XQuery.
  • Целостность данных — автоматическая проверка XML-схемы при вставке (опционально).
  • Гибкость — возможность комбинировать SQL и XQuery в одном запросе.
  • Экономия места — сжатие XML-деревьев (до 50% экономии по сравнению с текстовым хранением).
  • Интеграция с реляционными данными — можно создавать индексы по XML-значениям и связывать XML-документы с реляционными таблицами.

Недостатки

  • Сложность администрирования — требуется понимание как реляционных, так и XML-моделей.
  • Ограниченная поддержка JSON — хотя Db2 поддерживает JSON, pureXML не оптимизирована для него (JSON хранится как XML-документ).
  • Зависимость от платформы — pureXML доступна только в СУБД IBM Db2, что ограничивает миграцию.
  • Высокая стоимость лицензирования — Db2 является коммерческой СУБД с дорогими лицензиями (особенно для z/OS).

Критика

Основные претензии к pureXML связаны с её закрытостью и монополизацией со стороны IBM. Конкуренты (Oracle с XML DB, Microsoft SQL Server с XML-индексами) предлагают схожие функции, но pureXML считается эталонной реализацией нативного хранения. Также отмечается, что pureXML не получила широкого распространения в веб-приложениях (где чаще используют MongoDB или PostgreSQL с JSON), оставаясь нишевым решением для корпоративных систем.

Интересные факты

  • Название «pureXML» было введено IBM в 2006 году как торговая марка, подчёркивающая «чистоту» (pure) хранения XML без реляционных искажений.
  • В 2007 году pureXML получила награду «Best of Show» на конференции XML 2007.
  • В России pureXML используется в Сбербанке (для обработки SWIFT-сообщений), в Федеральном казначействе (для XBRL-отчётности) и в ряде медицинских информационных систем.

Источники

  • IBM Db2 Documentation: «pureXML Guide» (IBM Knowledge Center, 2023).
  • Nicola, Matthias. «pureXML: A New Way to Manage XML Data in DB2» (IBM DeveloperWorks, 2006).
  • Melton, Jim. «Understanding the New XML Features in DB2 9» (IBM Systems Journal, 2007).
  • «DB2 9 pureXML: A New Era in XML Data Management» (IBM Redbooks, 2006).
  • Статья «Сравнение подходов к хранению XML в СУБД» (журнал «Открытые системы», 2009).

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

На главную BFOmetr →