Кратко:
- MongoDB - сервис управляемых баз данных с различными особенностями.
- Сервис выполняет задачи администрирования инфраструктуры, такие как создание кластеров, обновление ПО, создание резервных копий и обеспечение отказоустойчивости.
- Yandex Managed Service for MongoDB предоставляет интерактивный интерфейс и драйверы для Python и Java.
- Обновление базы данных происходит вручную, но кластеры обновляются автоматически при выходе новых версий.
- Резервное копирование выполняется автоматически и вручную, с возможностью восстановления из резервной копии.
- Сервис поддерживает мониторинг и логи, а также репликацию и отказоустойчивость.
- Лимиты и тарификация сервиса определены, с максимальным числом шардов и одновременных подключений.
Особенности сервиса управляемых баз данных MongoDB
Ответственность сервиса
Как вы могли увидеть, в работе с различными сервисами управляемых БД в облаке есть много общего. При этом, каждый из сервисов имеет свои особенности, обусловленные как самой СУБД, так и спецификой её реализации в облаке.
Как и в случае реляционных БД, сервис управляемых баз данных MongoDB выполняет задачи, связанные с администрированием инфраструктуры:
- при создании кластера выделяет ресурсы, устанавливает СУБД и создает БД;
- обновляет программное обеспечение;
- автоматически создает резервные копии БД;
- предоставляет инструменты мониторинга хостов и БД;
- обеспечивает репликацию данных между хостами;
- при аварии автоматически переключает нагрузку на резервную реплику.
Вы можете выбирать любые клиенты для MongoDB. Yandex Managed Service for MongoDB гарантирует работу интерактивного интерфейса the mongo Shell, а также драйверов для Python и Java.
Обновление базы данных
Сервис поддерживает мажорные версии MongoDB 5.0 и 6.0. Переходить на новую мажорную версию следует вручную. При выходе новых минорных версий MongoDB кластеры обновляется автоматически. Владельцы кластеров получают оповещение о сроках работ и доступности БД.
Когда разработчики перестают поддерживать версию MongoDB, создание хостов с ней становится невозможным, а кластеры автоматически обновляются до ближайшей поддерживаемой версии. Это происходит через семь дней после оповещения для минорных версий и через месяц для мажорных.
Резервное копирование
Сервис создает резервные копии БД автоматически, а также позволяет делать это вручную. Резервные копии сохраняются в специальном хранилище в сжатом виде. Вы не платите за их хранение, пока размер БД и всех резервных копий не превышает размера хранилища, который вы выбрали при создании кластера.
По умолчанию автоматическое резервное копирование выполняется раз в день с 01:00 по 05:00 по московскому времени, а резервные копии хранятся неделю. Время начала резервного копирования и срок хранения резервных копий (от 7 до 35 дней) можно установить при создании или изменении кластера.

Автоматически созданные копии удаляются, когда истекает срок хранения. Копии, созданные вручную, хранятся бессрочно.
Из резервной копии можно восстановить как существующий, так и удаленный кластер. Средняя скорость восстановления — 10 МБ/с.
Для версий MongoDB 4.2 и выше сервис поддерживает технологию point-in-time recovery (восстановление состояния кластера на заданный момент). Вы можете восстановить кластер в состояние на любой момент времени после создания самой старой полной резервной копии. Это достигается за счет дополнения данных выбранной резервной копии записями из архивируемого журнала операций.
Point-in-time recovery работает только для кластеров с выключенным шардированием.
Мониторинг и логи
Сервис отслеживает и выводит на дашборд следующие метрики: общий объём данных, размер журнала операций, место на диске, число подключений к базе, сессий и операций, лаг репликации и пр.

Кроме того, сервис ведет запись логов событий.

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

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

Лимиты и тарификация
В кластере БД MongoDB можно создать не более 10 шардов. Шард состоит не более чем из семи хостов. Таким образом, максимальное число хостов в одном кластере не может превышать 70.
Максимальное число одновременных подключений к одному хосту зависит от объёма его оперативной памяти: не более 2048 подключений на каждые 2 ГБ.
Максимальный объём данных на хосте — 605 ГБ при использовании сетевого хранилища или 600 ГБ при использовании локального хранилища.
MongoDB тарифицируется по тем же принципам, что и управляемые реляционные БД.
Поздравляем, вы завершили тему «MongoDB»
В этой теме вы узнали о различиях классических реляционных и NoSQL баз данных, научились создавать кластер баз данных MongoDB, познакомились с концепцией шардирования БД, выяснили некоторые особенности сервиса управляемых баз данных MongoDB в Yandex Cloud.