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

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). Каждый элемент, атрибут, текстовый узел и пространство имён сохраняются в виде узлов, связанных родительско-дочерними отношениями. Это позволяет:

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

Индексация XML

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

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

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

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

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

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

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

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

По версиям Db2

Применение

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

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

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

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

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

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

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

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

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

Недостатки

Критика

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

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

Источники

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

На главную BFOmetr →