Мультимодельная база данных

Мультимодельная база данных (или многомодельная база данных) — разновидность баз данных. Система управления базами данных, реализующая эту разновидность, поддерживает несколько моделей базы данных на основе единой интегрированной серверной части. В противовес этой идее одномодельные системы управления базами данных организованы вокруг единой модели данных, которая определяет, как данные могут быть организованы, сохранены и обработаны[1]. Документоориентированные, графовые, реляционные и модели «ключ-значение» являются примерами моделей данных, которые могут поддерживаться мультимодельной базой данных.

История развития идеи

Реляционная модель данных стала популярной после ее публикации Эдгаром Ф. Коддом в 1970 году. Из-за растущих требований к горизонтальной масштабируемости и отказоустойчивости базы данных NoSQL стали заметны после 2009 года. Базы данных NoSQL используют различные модели данных, среди которых популярны документоориентированные, графовые модели и модели «ключ — значение»[2].

Мультимодельная база данных — это база данных, которая может хранить, индексировать и запрашивать данные в более чем одной модели. В течение некоторого время базы данных в основном поддерживали только одну модель, например: реляционную, документоориентированную, графовую или триплетную. База данных, которая объединяет в себе несколько из них, является мультимодельной.

Изначально большое распространение получили реляционные модели баз данных. Реляционная модель и понятие третьей нормальной формы были стандартом по умолчанию для всех хранилищ данных. Однако до доминирования реляционного моделирования данных, примерно с 1980 по 2005 год, обычно использовалась иерархическая модель данных. С 2000 или 2010 года стали популярны модели NoSQL, которые являются нереляционными, включая документоориентированные, триплетные, хранилища ключей и значений и графовые. Можно утверждать, что геопространственные данные[англ.], временные данные и текстовые данные также являются отдельными моделями, хотя индексированные и запрашиваемые текстовые данные обычно называют «поисковой системой», а не базой данных.

Впервые слово «мультимодель» было связано с базами данных 30 мая 2012 года в немецком городе Кёльн во время ключевого доклада Луки Гарулли (Luca Garulli) «Внедрение NoSQL — какой следующий шаг?» (NoSQL Adoption – What’s the Next Step?)[3][4]. Лука Гарулли предвидел эволюцию продуктов NoSQL 1-го поколения в новые продукты с большим количеством функций, которые можно использовать в различных вариантах использования.

Идея мультимодельных баз данных восходит к объектно-реляционным СУБД в начале 1990-х годов и в более широком смысле даже к федеративным и интегрированным СУБД в начале 1980-х годов. Объектно-реляционная СУБД управляет различными типами данных, такими как реляционные, объектные, текстовые и пространственные, включая доменно-специфические типы данных, функции и реализации индексов в ядре СУБД. Мультимодельная база данных является наиболее прямым ответом на подход «полиглотной устойчивости», заключающийся в объединении нескольких продуктов баз данных, каждый из которых обрабатывает отдельную модель, для достижения многомодельной возможности, описанной Мартином Фаулером[5]. Эта стратегия имеет два основных недостатка: она приводит к значительному увеличению операционной сложности, и к отсутствию поддержки согласованности данных в отдельных хранилищах данных, поэтому мультимодельные базы данных начали заполнять эту нишу.

Мультимодельные базы данных предназначены для предоставления преимуществ моделирования данных полиглотной устойчивости[5] без её недостатков. В частности, сложность эксплуатации снижается за счёт использования единого хранилища данных[2].

Сравнительный анализ мультимодельных баз данных

Поскольку всё больше и больше платформ предлагается для работы с мультимодельными данными, есть несколько работ по сравнительному анализу мультимодельных баз данных. Например, Плунженник[6], Оливейра[7], и UniBench[8] рассмотрели существующие мультимодельные базы данных и предприняли попытку оценки для сравнения мультимодельных баз данных и других баз данных SQL и NoSQL соответственно. Они указали, что преимущества мультимодельных баз данных перед одномодельными базами данных заключаются в следующем:

  1. они могут принимать различные форматы данных, такие как CSV (включая графовые и реляционные) и JSON, в хранилище без каких-либо дополнительных усилий.
  2. они могут использовать унифицированный язык запросов, такой как AQL, Orient SQL, SQL/XML, SQL/JSON, для извлечения коррелированных многомодельных данных, таких как граф-JSON-ключ/значение, реляционный XML и реляционный JSON на одной платформе.
  3. они могут поддерживать мультимодельные транзакции ACID в автономном режиме.

Архитектура

Основное различие между доступными мультимодельными базами данных связано с их архитектурой. Мультимодельные базы данных могут поддерживать различные модели либо в движке, либо через различные слои поверх движка. Некоторые продукты могут предоставлять движок, который поддерживает документы и графы, в то время как другие предоставляют слои поверх хранилища ключей. При многоуровневой архитектуре каждая модель данных предоставляется через свой собственный компонент[9].

Определяемые пользователем модели данных

В дополнение к предоставлению нескольких моделей данных в одном хранилище данных, некоторые базы данных позволяют разработчикам легко создавать пользовательские модели данных. Эта возможность обеспечивается транзакциями ACID с высокой производительностью и масштабируемостью. Для того чтобы пользовательская модель данных поддерживала параллельные обновления, база данных должна иметь возможность синхронизировать обновления по нескольким ключам. Транзакции ACID, если они достаточно быстродействующие, допускают такую синхронизацию. При этом документы, графы и реляционные таблицы в формате JSON могут быть реализованы таким образом, который наследует горизонтальную масштабируемость и отказоустойчивость базового хранилища данных[10].

Смотри также

Примечания

  1. The 451 Group, "Neither Fish Nor Fowl: The Rise of Multi-Model Databases"
  2. 1 2 Infoworld, "The Rise of the Multi-Model Database"
  3. Multi-Model storage 1/2 one product (англ.) (1 июня 2012).
  4. Nosql Matters Conference 2012 | NoSQL Matters CGN 2012 (англ.). 2012.nosql-matters.org. Дата обращения: 12 января 2017.
  5. 1 2 Polyglot Persistence
  6. Ewa Pluciennik and Kamil Zgorzalek. "The Multi-model Databases - A Review". Bdas 2017: 141—152.
  7. Fábio Roberto Oliveira, Luis del Val Cura. "Performance Evaluation of NoSQL Multi-Model Data Stores in Polyglot Persistence Applications". Ideas '16: 230—235.
  8. Chao Zhang, Jiaheng Lu, Pengfei Xu, Yuxing Chen. "UniBench: A Benchmark for Multi-Model Database Management Systems" (PDF). TPCTC 2018.{{cite journal}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  9. "layer"
  10. ODBMS, "Polyglot Persistence or Multiple Data Models?"

Внешние ссылки