DB2 9 Viper
DB2 9 Viper — это кодовое название девятой версии реляционной системы управления базами данных (СУБД) IBM DB2, выпущенной корпорацией IBM в 2006 году. Основным нововведением версии стала гибридная архитектура, объединяющая поддержку реляционных и иерархических данных, что позволило обрабатывать XML-документы нативно, без преобразования в табличное представление. Релиз ознаменовал переход DB2 в категорию гибридных (XML-ready) баз данных.
История
Разработка DB2 9 (кодовое название Viper) началась в 2004 году под руководством лаборатории IBM в Торонто. Предшествующая версия DB2 8 (2002) уже включала базовую поддержку XML через функции разбора, но требовала хранения данных в реляционных столбцах. К 2005 году рынок столкнулся с ростом объёмов полуструктурированных данных, не укладывающихся в строгие схемы SQL — таких как веб-контент, электронный документооборот и сообщения в формате SOAP.
IBM решила интегрировать в ядро СУБД поддержку XML-модели данных. Работа велась параллельно с проектом DB2 для z/OS (основной мейнфреймовой платформы), но Viper стал первым продуктом, где гибридная архитектура была реализована коммерчески. Бета-версия была представлена на конференции IBM Information On Demand в 2005 году, а финальный релиз состоялся 14 июля 2006 года (для Linux, UNIX, Windows; позднее — для z/OS).
Ключевым моментом стал выпуск бесплатной редакции DB2 Express-C (на базе Viper), предназначенной для разработчиков и малого бизнеса. Это способствовало росту популярности DB2 среди сообщества открытого кода, хотя сама СУБД оставалась проприетарной.
Архитектура и ключевые особенности
Гибридная модель хранения (pureXML)
Основная инновация Viper — введение столбцов с типом данных XML, физически хранящихся в иерархическом формате (дерево узлов), а не в реляционных таблицах. Возможны два режима хранения XML-данных:
- Нормализованное хранение (Annotated XML Schema Decomposition) — данные разбиваются на реляционные таблицы с использованием аннотированных схем XSD.
- Неструктурированное хранение (native XML) — данные сохраняются как BLOB (двоичный объект) с индексом по схеме XPath. Это первое коммерческое решение IBM, где XML-данные не требуют развёртки в строки и столбцы.
Режим гибрида позволяет комбинировать SQL и XQuery в одном запросе. Пример запроса на языке SQL/XML:
``sql SELECT emp_id, XMLQUERY('$doc/employee/name/text()' PASSING emp_doc AS "doc") FROM employees WHERE XMLEXISTS('$doc/employee[@dept="IT"]' PASSING emp_doc AS "doc"); ``
Улучшения производительности
- Компрессия данных (Row Compression) — уменьшение размера хранимых данных до 50–70 % за счёт словарного сжатия.
- Adaptive Compression — динамическая настройка алгоритмов в зависимости от типа данных.
- Управление памятью (Self-Tuning Memory Manager) — автоматическое распределение буферных пулов между реляционными и XML-данными.
- Массовое копирование (Load) с возможностью параллельной загрузки XML-документов.
Безопасность и администрирование
- LBAC (Label-Based Access Control) — доступ на основе меток конфиденциальности, привязанных к строкам или XML-узлам.
- Audit Policy — журналирование изменений на уровне таблиц и документов.
- Autonomic Computing — автоматическая настройка параметров (буферные пулы, соединения, сортировка) без участия администратора.
Версии и редакции
DB2 9 (Viper) распространялась в четырёх основных редакциях для распределённых платформ:
| Редакция | Назначение | Особенности |
|---|---|---|
| DB2 Express-C | Разработка, тестирование, малый бизнес | Бесплатна до 2 ядер, 4 ГБ ОЗУ, без ограничений на размер базы. Включает pureXML. |
| DB2 Express | Коммерческое использование | Платная, до 4 ядер, 16 ГБ ОЗУ. |
| DB2 Workgroup Server Edition | Средние предприятия | Поддержка многоядерных систем, расширенная репликация. |
| DB2 Enterprise Server Edition | Крупные организации | Полный функционал, кластеризация, Data Partitioning Feature, HADR (High Availability Disaster Recovery). |
Для платформы z/OS (мейнфреймы) была выпущена версия DB2 9 for z/OS, которая также поддерживала pureXML, но отличалась архитектурой виртуального хранения и интеграцией с z/VM.
Применение
- Электронный документооборот: хранение и поиск документов в форматах XML, XBRL (финансовая отчётность), FpML (финансовые деривативы).
- Веб-приложения: интеграция с Java EE (через WebSphere Application Server) и .NET (через IBM Data Server Provider for .NET).
- Интеграция данных: в качестве хранилища для решений IBM InfoSphere (ETL, мастер-данные).
- Научные и инженерные задачи: хранение метаданных экспериментов, геномных данных.
Критика и ограничения
Несмотря на прорывную архитектуру, Viper подвергался критике по нескольким причинам:
- Производительность XML-запросов — для больших документов (более 10 МБ) нативное хранение часто оказывалось медленнее реляционного разбора из-за накладных расходов на создание индексов XPath.
- Сложность администрирования — настройка параметров pureXML требовала глубокого понимания XML Schema и путей XPath; автоматизация была недостаточной.
- Совместимость с конкурентами — продукт Oracle Database 11g (2007) предложил собственную реализацию XML-типов, что привело к фрагментации стандартов.
- Проблемы с масштабируемостью — на распределённых кластерах (DPF) поддержка XML-столбцов была ограничена.
Наследие
DB2 9 Viper заложила основу для последующих версий: в DB2 10 (2012) была добавлена поддержка XML-индексов на основе XPath 2.0, а в DB2 11 (2014) — интеграция с Hadoop и JSON. С 2019 года IBM позиционирует Db2 (переименованная в 2017 году) как гибридную базу данных для транзакционных и аналитических нагрузок, но pureXML остаётся нишевой возможностью, уступая по популярности JSON и реляционным таблицам.
Источники
- IBM Redbook: «DB2 9: pureXML Overview and Application Development» (2006).
- «DB2 9 Technical Overview» — IBM Developer Works, 2007.
- Г. Мелтон, Д. Хантер, «Understanding DB2 9 Security», IBM Press, 2007.
- Статья: «DB2 Viper: Fast Forward to the Future of Data Management» — Database Trends and Applications, 2006.
- Материалы конференции IDUG 2006 — «DB2 9: The Next Generation».
)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →