Найти в Дзене
VK Cloud

В чем особенности MongoDB и когда эта база данных вам подходит: руководство для новичков

Оглавление

Подготовили небольшой гайд по СУБД MongoDB: вы узнаете, в чем ее особенности, плюсы и недостатки, для каких проектов она подходит, а когда лучше выбрать реляционную базу данных.

Что такое база данных MongoDB и в чем ее особенности

MongoDB — документоориентированная система управления базами данных с открытым исходным кодом. Для хранения данных используется JSON-подобный формат. Эта СУБД отличается высокой доступностью, масштабируемостью и безопасностью.

Главные особенности MongoDB:

  • Это кроссплатформенная документоориентированная база данных NoSQL с открытым исходным кодом.
  • Она не требует описания схемы таблиц, как в реляционных БД. Данные хранятся в виде коллекций и документов.
  • Между коллекциями нет сложных соединений типа JOIN, как между таблицами реляционных БД. Обычно соединение производится при сохранении данных путем объединения документов.
  • Данные хранятся в формате BSON (бинарные JSON-подобные документы).
  • У коллекций не обязательно должна быть схожая структура. У одного документа может быть один набор полей, в то время как у другого документа — совершенно другой (как тип, так и количество полей).

В одном документе могут быть поля разных типов данных, данные не нужно приводить к одному типу. Основное преимущество MongoDB заключается в том, что она может хранить любые данные, но эти данные должны быть в формате JSON.

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

На схеме показано, как выглядит документ в MongoDB:

Источник
Источник

MongoDB добавляет поле _id с уникальным значением для идентификации документа в коллекции. Это поле обязательно для заполнения в каждом документе. Оно похоже на первичный ключ документа. Если вы создаете новый документ без поля _id, то MongoDB автоматически создаст его и добавит 24-значный уникальный идентификатор к каждому документу в коллекции.

Обратите внимание: сами данные заказа (OrderID, Product и Quantity) в MongoDB фактически хранятся как встроенный документ в самой коллекции, а в реляционных СУБД они обычно хранятся в отдельной таблице. Это одно из ключевых особенностей модели данных MongoDB.

Структура хранилища MongoDB

СУБД MongoDB полагается на концепции базы данных, коллекций и документов. Рассмотрим основные термины, а для лучшего понимания сравним их с терминами из языка структурированных запросов (SQL):

  • База данных — это физический контейнер для коллекций.
  • Коллекция — группа документов MongoDB. В терминологии SQL это соответствует таблице.
  • Документ — запись в коллекции MongoDB, набор пар ключ-значение. В терминологии SQL это похоже на строку в таблице базы данных.
  • Поле — ключ в документе. В терминологии SQL похоже на столбец в таблице.
  • Встроенный документ — в терминологии SQL похоже на создание связей между несколькими таблицами, по которым разбросаны данные, что делается операциями JOIN.

Зачем использовать MongoDB: преимущества этой СУБД

Ниже приведены несколько причин, по которым стоит использовать MongoDB:

  • Документоориентированная база — сохранение данных в формате документов вместо формата реляционного типа, это делает MongoDB очень гибкой и адаптируемой к бизнес-требованиям. Возможность хранения разных типов данных особенно важна при работе с большими данными, которые собираются из разных источников и не ложатся в одну структуру.
  • Специальные запросы — MongoDB поддерживает поиск по полям, диапазонные запросы и поиск по регулярным выражениям. Могут быть сделаны запросы для возврата определенных полей в документах.
  • Индексация — можно создать индексы для улучшения производительности поиска в MongoDB. Любое поле в документе может быть проиндексировано. Это обеспечивает высокую скорость работы СУБД.
  • Репликация — эта СУБД может обеспечить высокую доступность с помощью наборов реплик. Набор реплик состоит из двух или более экземпляров MongoDB. Каждая реплика набора может выступать в роли первичной или вторичной. Первичная реплика — главный сервер, который взаимодействует с клиентом и выполняет все операции чтения/записи. Вторичные реплики сохраняют копию данных первичной реплики с помощью встроенной репликации. Если с первичной репликой что-то случилось, происходит автоматическое переключение на вторичную реплику, затем она становится основным сервером.
  • Балансировка нагрузки — MongoDB использует концепцию шардинга для горизонтального масштабирования с помощью разделения данных между несколькими экземплярами БД. Она может работать на нескольких серверах, балансируя нагрузку и/или дублируя данные, чтобы поддерживать работоспособность системы в случае аппаратного сбоя.
  • Возможность развернуть в облаке — вы получаете готовую к работе, оптимально сконфигурированную, масштабируемую и управляемую базу данных по запросу за две минуты.
  • Доступность — MongoDB поддерживает все популярные языки программирования, ее можно использовать бесплатно как open source решение.
В облаке Mail.ru Cloud Solutions реализована техническая поддержка, хостинг и обновление СУБД MongoDB до актуальных версий. Доступна помощь экспертов Mail.ru в миграции данных и настройке баз данных.

Недостатки MongoDB

Вот основные минусы MongoDB:

  • Эта база данных не настолько соответствует требованиям ACID (атомарность, согласованность, изолированность и устойчивость), как реляционные базы данных.
  • Транзакции с использованием MongoDB являются сложными
  • В MongoDB нет положений о хранимых процедурах или функциях, поэтому не получится реализовать какую-либо бизнес-логику на уровне базы данных, что можно сделать в реляционных БД.

Когда стоит и не стоит использовать MongoDB

MongoDB часто выбирают, когда нужна масштабируемая база данных, в настоящее время ее используют в качестве хранилища внутренних данных многие организации, такие как IBM, Twitter, Zendesk, Forbes, Facebook, Google и другие.

Примеры, когда MongoDB подходит для проекта:

  • Каталог товаров в электронной коммерции.
  • Блоги и системы управления контентом, особенно те, где много контента, в том числе видео и изображений.
  • Аналитика в реальном времени и высокоскоростное журналирование, кэширование данных и кейсов, когда важна высокая масштабируемость системы.
  • Хранение данных датчиков и устройств.
  • Работа с большими данными для машинного обучения и исследований в ритейле и других отраслях.
  • Ведение данных на основе местоположения, то есть геопространственных данных.
  • Социальные сети, новостные форумы и другие похожие сценарии.
  • Слабосвязанные данные без четкой схемы хранения.
  • Стартапы и развертывание новых проектов, где структура данных пока неизвестна.

Примеры, когда MongoDB лучше не использовать:

  • Транзакционные системы, приложения, требующие транзакций на уровне базы данных, например банковские приложения.
  • Проекты, где модель данных определена заранее.
  • Хранение сильносвязанных данных.
В этой статье мы познакомились с MongoDB, одной из самых популярных баз данных NoSQL. Для более глубокого погружения можно продолжить изучение MongoDB по документации.

Автор: Анатолий Ализар

Источник: https://mcs.mail.ru/blog/osobennosti-mongodb-kogda-baza-dannyh-vam-podhodit

Что еще почитать:
Какую базу данных выбрать для проекта, чтобы не пришлось выбирать снова
DBaaS побеждают традиционные СУБД: почему пора перенести данные в облако