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

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

Нативное хранение XML (англ. native XML storage) — это способ хранения документов в формате XML (Extensible Markup Language) в специализированных базах данных (нативных XML-базах данных, NXD) или в расширениях реляционных СУБД, при котором внутренняя структура документа сохраняется в соответствии с его иерархией, а не преобразуется в таблицы, строки или BLOB-объекты (двоичные большие объекты). Основное отличие нативного хранения от традиционных реляционных подходов заключается в том, что система оперирует XML-документом как единым целым, сохраняя его разметку, атрибуты, вложенность элементов и порядок следования узлов (узлы — структурные единицы XML-документа: корень, элементы, атрибуты, текстовые данные, комментарии).

История

Первые нативные XML-базы данных появились в конце 1990-х годов, когда XML стал активно использоваться для обмена данными между различными информационными системами. Реляционные СУБД того времени плохо справлялись с обработкой иерархических и полуструктурированных данных, что потребовало создания специализированных решений.

В 1999 году была опубликована спецификация XML Query (XQuery) — языка запросов для XML-документов, которая стала основой для нативных XML-БД. В 2000-х годах такие системы, как eXist-db, BaseX, Sedna (последняя разрабатывалась в Институте системного программирования РАН), получили распространение в академической среде и в промышленности. Одновременно реляционные СУБД (Oracle Database, Microsoft SQL Server, PostgreSQL, IBM Db2) начали внедрять поддержку нативного хранения XML в виде специальных типов данных (например, XML в Oracle или XML в SQL Server).

В 2010-х годах нативные XML-БД постепенно уступили часть рынка NoSQL-решениям (документоориентированным базам данных, таким как MongoDB), но сохранили свою нишу в задачах, где требуется полная поддержка XML-схем, пространств имён, XSLT-трансформаций и строгой верификации документов.

Основные характеристики

Нативное хранение XML базируется на следующих ключевых принципах:

Классификация нативных XML-баз данных

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

По способу индексации

По производительности

Устройство и принципы работы

Хранение данных

Нативная XML-база данных хранит документы в виде, максимально приближенном к их логической структуре. Файловое представление в большинстве систем не используется: данные размещаются в собственных форматах, оптимизированных под запросы. Типичные подходы:

Индексация

Для ускорения запросов применяются различные типы индексов:

Обработка запросов

Запросы к нативным XML-хранилищам формулируются на языках:

Реляционные СУБД с нативным типом XML дополнительно поддерживают SQL-расширения: например, в PostgreSQL функция xpath() извлекает фрагменты XML по заданному XPath-выражению; в Oracle Database — XMLQuery, XMLTable, XMLExists.

Применение

Сфера нативного хранения XML охватывает задачи, требующие соблюдения стандартов XML:

Примеры использования в России

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

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

Недостатки

Критика

Нативное хранение XML подвергалось критике за то, что в большинстве случаев XML-документы вполне укладываются в реляционную модель при условии правильного проектирования схемы (т. н. «shredding» — разбиение на строки). В ответ на это разработчики реляционных СУБД (Oracle, SQL Server) добавили специальные типы данных, которые позволяют сочетать гибкость XML с производительностью реляционных систем. В то же время в чисто нативных системах (eXist-db, BaseX) были реализованы механизмы шардирования и репликации, частично решающие проблемы масштабирования.

См. также

Источники

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

На главную BFOmetr →