Обзор MongoDB. Управляемая база данных в облаке

MongoDB опередили время. Узнайте, как бизнес использует базы данных NoSQL и в чём они превосходят SQL СУБД. Кто использует MongoDB и какие задачи решают с их помощью.

17 декабря 2020 г.
10 минут чтения
13

Компания 10gen начала разрабатывать MongoDB в середине 2007 года в рамках проекта «программная платформа как услуга». Они хотели создать сервер приложений и базу данных, которые служили бы хостингом для веб-приложений, при этом обеспечивая автоматическое масштабирование и управление программной и аппаратной инфраструктурой. В середине 2000-х этот подход не заинтересовал рынок, но зато новая технология баз данных стала очень популярной. Сейчас это один из классических примеров NoSQL-систем.

NoSQL для неструктурированных данных

Чтобы создавать большие масштабируемые системы, разработчики десятилетиями использовали базы данных SQL. Но со временем появилась потребность хранить данные без определённой структуры. Работать с ними в двумерной таблице просто не получалось. Тогда решили использовать нереляционные базы данных, которые назвали NoSQL. Дополнительным преимуществом стало то, что множество типов данных, для моделирования которых раньше применялся реляционный подход, гораздо удобнее представлять и использовать в подходе с NoSQL.

NoSQL позволяет оперировать различными типами данных, реализуя при этом полнотекстовый поиск по базе, в том числе без задания «схемы» данных. Такие базы данных характеризуются высокой доступностью и отказоустойчивостью. Между записями нет связи, поэтому данные легко делить на независимые части и шардировать: группировать в секции и размещать на разных, физически и логически независимых серверах базы данных. Так реализуется горизонтальное масштабирование. Этот подход принципиально отличается от вертикального масштабирования. При росте нагрузки и объёма данных оно предусматривает наращивание вычислительных возможностей одного сервера баз данных, у которого есть объективные физические пределы: максимальное количество поддерживаемых CPU, объём памяти и т. д.

Ещё одна важная особенность NoSQL — множество типов баз данных, разработанных и оптимизированных для конкретных видов моделей данных (документной, графовой, колоночной или «ключ — значение») и шаблонов доступа:

  • Document Store: MongoDB, CouchDB, RethinkDB.

  • Key-Value Store: DynamoDB.

  • Column Store: Cassandra.

  • Data-Structures: Redis.

NoSQL больше всего подходит для приложений, которые должны быстро и с низкой задержкой обрабатывать большой объём данных с разной структурой. Проще всего представить сравнение NoSQL и SQL в виде таблицы:

SQL NoSQL
Реляционная модель Нереляционная модель
Данные хранятся в таблицах Данные хранятся по-разному: как JSON, ключ — значение и т. д. (в зависимости от типа базы данных). Типы могут варьироваться
Очень строгая структура базы Нет жёстких требований к структуре
Подходит для решений, где каждая запись имеет одинаковый вид и обладает одинаковыми свойствами Не каждая запись должна быть одинаковой. Гибкий подход
С добавлением новового свойства нужно изменить всю схему Добавление новых свойств ничего не нарушает
Поддерживает ACID-транзакции Поддержка ACID-транзакций варьируется и зависит от используемой базы данных NoSQL
Масштабируется вертикально Масштабируется горизонтально и вертикально. Гибкая модель данных

Более того, многие современные базы данных начали объединять концепции SQL и NoSQL. PostgreSQL, например, по-прежнему не умеет горизонтально масштабироваться средствами самой базы данных, но теперь поддерживает не только хранение, но и индексирование данных JSON, как и MongoDB.

MongoDB — база данных для документов

MongoDB — это ориентированная на документы база данных NoSQL с открытым исходным кодом, которая использует для хранения структуру JSON. Модель данных MongoDB позволяет представлять иерархические отношения, проще хранить массивы и другие более сложные структуры.

Вместо таблиц и строк, как в реляционных базах данных, в MongoDB коллекции и документы, которые состоят из пар «ключ — значение»:

{
"someKey": "value",
"best": {
"foo": "baz"
}
}

Коллекция — это набор документов, эквивалент таблицы реляционной базы данных. Каждый документ может отличаться друг от друга размером, содержанием и количеством полей. В документах MongoDB можно хранить даже бинарные данные: изображения, mp3 и т. д.

Структура документа похожа на то, как разработчики конструируют классы и объекты на языках программирования, а у хранимых документов необязательно должна быть заранее определённая схема. Можно создавать поля на лету, а также настроить валидацию JSON Schema. Драйверы MongoDB уже из коробки умеют десериализовывать данные из базы в полноценные объекты. Для разработчика это делается прозрачно, а значит, требуется писать меньше кода и возникает меньше багов.

В целом от других документно-ориентированных баз данных NoSQL MongoDB отличается следующими возможностями:

  • Хранение почти любых данных: структурированных, частично структурированных или даже полиморфных (различных типов).
  • Хранение информации о модели в одном документе.
  • Отсутствие необходимости описывать схему данных.
  • Поддержка стандартных типов запросов: сопоставление (==), сравнение (<,>) или регулярное выражение.
  • Вертикальное и горизонтальное масштабирование с помощью встроенного шардирования.
  • Автоматическое переключение между серверами при сбое.

На рынке также доступно множество инструментов управления и мониторинга MongoDB. Начиная с бесплатных приложений, которые можно установить только на локальный сервер с базой данных, и заканчивая профессиональными сервисами, которые позволяют управлять NoSQL СУБД в инфраструктурах ЦОД и облачных провайдеров — у нас за это отвечает Yandex Managed Service for MongoDB.

Где применяют MongoDB

MongoDB используют GitHub, SourceForge, Foursquare, Bitly, About.me, MTV, CNN, New York Times, Forbes, Disney, EA и многие другие компании.

Кто использует MongoDB

База данных MongoDB подходит для большого объёма полуструктурированных и неструктурированных данных. Что, впрочем, не мешает ей прекрасно справляться и с обработкой строго типизированной информации, для которой обычно используют SQL-базы. Выбирайте СУБД, учитывая специфику задачи. MongoDB отличается высокой доступностью, горизонтальной масштабируемостью, быстрой работой с данными, возможностями аналитики в реальном времени.

Вот для чего MongoDB отлично подходит:

  • Кеширование данных.
  • Электронная коммерция, каталоги товаров, соцсети, новостные форумы и другие похожие сценарии, где много контента, в том числе видео и изображений.
  • Новый проект или стартап, если неизвестна итоговая структура данных или же вы точно знаете, что у вас будут слабо связанные данные без чёткой схемы хранения.
  • Геоаналитика (обработка геопространственных данных — данных на основе местоположения).
  • Хранение данных с датчиков и устройств, собранных с решений интернета вещей, в том числе промышленных.
  • Работа с большими данными в машинном обучении.
  • Исследования в ритейле и других отраслях.

В Yandex Cloud пользователи применяют сервис управляемой MongoDB для различных задач. Например, Blumenkraft создает event-sourcing архитектуру приложений, CarTaxi хранит и изучает информацию о перемещении водителей, Яндекс Толока использует СУБД для аналитики (об этом мы рассказывали на митапе о MongoDB).

Сервис управляемой MongoDB в Yandex Cloud

Платформа Yandex Cloud — эксклюзивный партнер MongoDB в России. Это означает, что в облаке вы получите все официальные релизы СУБД MongoDB, на 100% совместимые и протестированные. Благодаря Managed Service for MongoDB установка и первоначальная настройка кластера происходит в несколько кликов. Далее вы просто работаете с базой данных, а сервис создает резервные копии, устанавливает обновления СУБД и операционной системы, а также берёт на себя много другой рутинной, но обязательной работы. При этом минорные обновления приходят автоматически, а крупные вы можете контролировать сами, чтобы не нарушить работу своих сервисов в облаке.

Возможности Yandex Managed Service for MongoDB, которые обеспечивают отказоустойчивую и эффективную работу базы данных:

  • Развёртывание MongoDB кластера за несколько минут.
  • Репликация и высокая доступность. Если первичная реплика выходит из строя, оставшиеся хосты автоматически запускают выборы новой первичной реплики.
  • Поддержка шардирования. Вы можете включить шардирование, а также добавлять и настраивать шарды, чтобы повысить производительность кластера.
  • Инструменты мониторинга. Вы можете получить детальную информацию о состоянии каждого кластера Managed Service for MongoDB.
  • Автоматическое и ручное резервное копирование.
  • Восстановление на произвольную точку времени. Managed Service for MongoDB позволяет восстановить состояние кластера на любой момент, начиная с самой старой полной резервной копии и заканчивая настоящим временем.
  • Вертикальное и горизонтальное масштабирование по клику. Если нагрузка на кластер MongoDB вырастет, вы за несколько минут добавите серверы в кластер или увеличите их мощность.
  • Безопасность данных соответствует требованиям 152-ФЗ, GDPR и индустриальных стандартов ISO. Соединения с СУБД MongoDB шифруются при помощи протокола TLS, а резервные копии содержимого баз — технологией GPG.

Больше историй применения MongoDB

Чтобы начать работу с MongoDB, перейдите в консоль управления Yandex Cloud и создайте кластер базы данных MongoDB. Определитесь с характеристиками, выберите класс хостов, объём хранилища, сеть, к которой будет подключён ваш кластер, а также зону доступности.

Документация по Managed Service for MongoDB

Напишите нам

Начать пользоваться Yandex Cloud

Тарифы

Узнать цены и рассчитать стоимость

Мероприятия

Календарь событий Yandex Cloud
Обзор MongoDB. Управляемая база данных в облаке
17 декабря 2020 г.
10 минут чтения
13