В области проектирования баз данных многомодельная база данных — это система управления базами данных , предназначенная для поддержки нескольких моделей данных на одном интегрированном сервере. Напротив, большинство систем управления базами данных организованы вокруг единой модели данных, которая определяет, как данные могут быть организованы, сохранены и ими можно манипулировать. [1] Модели документов , графов , реляционные модели и модели «ключ-значение» являются примерами моделей данных, которые могут поддерживаться многомодельной базой данных.
Реляционная модель данных стала популярной после ее публикации Эдгаром Ф. Коддом в 1970 году . Из-за растущих требований к горизонтальной масштабируемости и отказоустойчивости базы данных NoSQL стали популярными после 2009 года. В базах данных NoSQL используются различные модели данных: документ , график и Популярность моделей «ключ-значение». [2]
Многомодельная база данных — это база данных, которая может хранить, индексировать и запрашивать данные в более чем одной модели. В течение некоторого времени базы данных в основном поддерживали только одну модель, такую как: реляционная база данных , документ-ориентированная база данных , графовая база данных или тройное хранилище . База данных, сочетающая многие из них, является многомодельной.
Какое-то время было практически забыто (или считалось неактуальным), что существуют какие-либо другие модели баз данных, кроме реляционных. Реляционная модель и понятие третьей нормальной формы были стандартом по умолчанию для всех хранилищ данных. Однако до доминирования реляционного моделирования данных, примерно с 1980 по 2005 год, широко использовалась иерархическая модель базы данных . С 2000 или 2010 года популярны многие нереляционные модели NoSQL , включая документы, тройки, хранилища «ключ-значение» и графики. Можно утверждать, что геопространственные данные, временные данные и текстовые данные также являются отдельными моделями, хотя индексированные текстовые данные, доступные для запроса, обычно называют « поисковой системой », а не базой данных. [ нужна цитата ]
Впервые слово «мультимодель» было связано с базами данных 30 мая 2012 года в Кельне, Германия, во время выступления Луки Гарулли « Внедрение NoSQL – какой следующий шаг? ». [3] [4] Лука Гарулли предвидел эволюцию продуктов NoSQL 1-го поколения в новые продукты с большим количеством функций, которые можно использовать в различных сценариях использования.
Идея многомодельных баз данных восходит к объектно-реляционным системам управления данными (ORDBMS) в начале 1990-х годов, а в более широком смысле — даже к федеративным и интегрированным СУБД в начале 1980-х годов. Система ORDBMS управляет различными типами данных, такими как реляционные, объектные, текстовые и пространственные, путем подключения типов данных, функций и реализаций индексов, специфичных для предметной области, к ядрам СУБД. Многомодельная база данных является прямым ответом на подход « многоязычного постоянства », заключающийся в объединении нескольких продуктов баз данных, каждый из которых передает свою модель, для достижения многомодельных возможностей, как описано Мартином Фаулером. [5] У этой стратегии есть два основных недостатка: она приводит к значительному увеличению операционной сложности и отсутствует поддержка поддержания согласованности данных в отдельных хранилищах данных, поэтому многомодельные базы данных начали заполнять этот пробел.
Многомодельные базы данных призваны предложить преимущества моделирования данных многоязычной устойчивости [5] без ее недостатков. Операционная сложность, в частности, снижается за счет использования единого хранилища данных. [2]
Поскольку предлагается все больше и больше платформ для работы с многомодельными данными, существует несколько работ по сравнительному анализу многомодельных баз данных. Например, Плученник [6] , Оливейра [7] и UniBench [8] рассмотрели существующие многомодельные базы данных и предприняли попытку оценить их для сравнения многомодельных баз данных и других баз данных SQL и NoSQL соответственно. Они отметили, что преимущества многомодельных баз данных перед базами данных с одной моделью заключаются в следующем:
Основное различие между доступными многомодельными базами данных связано с их архитектурой. Многомодельные базы данных могут поддерживать разные модели либо внутри механизма, либо через разные уровни поверх механизма. Некоторые продукты могут предоставлять механизм, поддерживающий документы и графики, в то время как другие предоставляют слои поверх хранилища ключей. [9] В многоуровневой архитектуре каждая модель данных предоставляется через отдельный компонент .
Помимо предложения нескольких моделей данных в одном хранилище данных, некоторые базы данных позволяют разработчикам легко определять собственные модели данных. Эта возможность обеспечивается транзакциями ACID с высокой производительностью и масштабируемостью. Чтобы пользовательская модель данных поддерживала одновременные обновления, база данных должна иметь возможность синхронизировать обновления по нескольким ключам. ACID-транзакции, если они достаточно производительны, допускают такую синхронизацию. [10] Документы JSON, графики и реляционные таблицы могут быть реализованы таким образом, чтобы унаследовать горизонтальную масштабируемость и отказоустойчивость базового хранилища данных.
{{cite journal}}
: CS1 maint: несколько имен: список авторов ( ссылка )