Многообразие моделей данных и реализующих их СУБД является следствием развития технологий и увеличения объема обрабатываемой информации, чья структура либо не может быть определена в начале проектирования, либо изменятся с течением времени.
Традиционные модели, получившие широкую популярность, не могут покрыть всех потребностей как заказчиков, так и пользователей, что непременно заставляет обратить внимание на программные продукты, реализующие новые механизмы хранения и обработки данных – NOSQL системы.
Однако многие современные приложения вынуждены использовать не одну, а несколько разных систем управления данными, это обусловлено многообразием выполняемых функций, в малой степени схожих между собой. Такой подход имеет ряд минусов, с которыми пытаются бороться разработчики популярных СУБД, делая свои продукты универсальными за счет поддержки нескольких моделей данных.
При решении бизнес-проблем в системах электронной коммерции для хранения информации о покупательских корзинах следует использовать хранилище, обеспечивающее высокую степень доступности и допускающее масштабирование, но это же хранилище не поможет при поиске товаров, купленных друзьями клиентов, поскольку это совершенно другая задача. Для обозначения гибридного подхода к хранению информации был придуман термин многовариантное хранилище (polyglot persistence) [1].
Пример применения многовариантного хранилища для электронной коммерции изображен на рисунке 1.
Рисунок 1 – Пример реализации многовариантного хранения
Самыми популярными представителями данного подхода являются BigDawg и PolyBase.
BigDAWG представляет собой систему, реализующую многовариантное хранилище и имеющую открытый исходный код. Она предоставляет общий интерфейс для трех отдельных типов баз данных: реляционной, представленной СУБД PostgreSQL, базы данных массивов - SciDB и текстовой БД Accumulo [2].
PolyBase — это система, созданная для расширения возможностей Microsoft SQL Server, позволяющая обрабатывать запросы SQL, которые считывают данные из других хранилищ. Первоначально поддерживаемыми внешними источниками данных были Hadoop и хранилище BLOB-объектов Azure. Версия 2019 года стала поддерживать такие баз данных как: Oracle, MongoDB и Teradata, а также практически любого хранилища данных, реализующего стандарт ODBC. PolyBase также позволяет выполнять вычисления во внешних системах, а также создавать кластеры SQL Server для параллельной обработки запросов [3].
Как альтернатива подходу, рассмотренному выше, был разработан другой — это создание одной единой базы данных для управления различными моделями данных с полностью интегрированной серверной частью для удовлетворения требований к производительности, масштабируемости и отказоустойчивости.
Основу полностью интегрированной единой системы управления можно проследить до концепции ORDBMS (т.е. систем управления объектно-реляционными базами данных), которые заимствуют и адаптируют модель объектно-ориентированного программирования к реляционным базам данных. ORDBMS может хранить и обрабатывать различные форматы данных, используя специальные типы данных, функции и др. Но существенное различие между ORDBMS и многомодельными базами данных состоит в том, что в структуре ORDBMS используется только реляционная модель, то есть все другие модели разрабатываются на основе реляционных технологий.
На рисунке 2 представлена хронология развития мультимодельных СУБД.
Рисунок 2 – Хронология поддержки мультимодельности
Развитие систем, соответствует растущей популярности отдельных форматов данных. Например, из рисунка 2 видно, что первая основная волна многомодельных баз данных появилась вскоре после начала нового тысячелетия и связана с появлением XML-документов. Основные реляционные СУБД реализовали поддержку XML, обычно с помощью стандарта SQL / XML или его разновидностей.
Таблица 1 отражает сведения о поддерживаемых моделях данных для конкретных многомодельных СУБД. Хочется обратить внимание, что в случае документной модели рассматривается поддержка как наиболее распространенного формата JSON, так и его варианты. Также таблица содержит отдельный столбец для формата XML, который имеет определенные особенности и историю поддержки.
Для большей конкретики, в таблице также отдельно выделена общая графовая модель и RDF формат данных. Аналогично выделяется отдельный столбец объектно-подобным моделям (т.е., за исключением классической объектной модели).
В последнем столбце показана популярность систем управления данными по состоянию на ноябрь 2021 года. Информация представлена на основе статистики DBEngines Ranking.
Таблица 1 – Обзор поддерживаемых моделей данных
Модель данных | СУБД |
Реляционная Реляционная |
Колоночная | Ключ-значение | JSON | XML | Графовая | RDF | UDT/object | Популярность/ место в рейтинге (2021) |
Реляционная | PostgreSQL | √ | √ | √ | √ | √ | 4 | |||
SQL Server | √ | √ | √ | √ | √ | 3 | ||||
IBM DB2 | √ | √ | √ | √ | √ | 7 | ||||
Oracle DB | √ | √ | √ | √ | √ | 1 | ||||
Oracle MySQL | √ | √ | √ | 2 | ||||||
Колоночная | Cassandra | √ | √ | 10 | ||||||
CrateDB | √ | √ | √ | √ | 183 | |||||
DynamoDB | √ | √ | √ | √ | √ | 16 | ||||
HPE Vertica | √ | √ | √ | 187 | ||||||
Ключ-значение | Riak | √ | √ | √ | √ | 285 | ||||
c-treeACE | √ | √ | √ | 335 | ||||||
Oracle NoSQL DB | √ | √ | √ | √ | 82 | |||||
Документная | ArangoDB | √ | √ | √ | 74 | |||||
Couchbase | √ | √ | 28 | |||||||
MongoDB | √ | √ | √ | 5 | ||||||
Cosmos DB | √ | √ | √ | 26 | ||||||
MarkLogic | √ | √ | √ | √ | 51 | |||||
Графовая | OrientDB | √ | √ | √ | 80 | |||||
Объектная | InterSystems Caché | √ | √ | √ | √ | 97 |
Список литературы
- Садаладж, Прамодкумар Дж. NoSQL. Новая методология разработки нереляционных баз данных [Текст] / Прамодкумар дж. Садаладж, Мартин Фаулер; [пер. с англ. и ред. Д. А. Клюшина]. - Москва [и др.]: Вильямс, 2013. - 183 с.: ил.
- What is BigDawg [Электронный ресурс] // BigDawg Polystore. URL: https://bigdawg.mit.edu/
- Общие сведения о виртуализации данных с помощью PolyBase [Электронный ресурс] // PolyBase Guide | Microsoft Docs. URL: https://docs.microsoft.com/ru-ru/sql/relational-databases/polybase/polybase-guide/