yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

MongoDB: что это за база данных, как установить и настроить СУБД

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

Сервисы
Иллюстрация для статьи на тему «MongoDB: что это за база данных, как установить и настроить СУБД»
Продукты из этой статьи:
Иконка-Advanced Document Database Service with MongoDB
Advanced Document Database Service with MongoDB
Иконка-Evolution Managed PostgreSQL®
Evolution Managed PostgreSQL®

Что такое MongoDB

MongoDB — это система управления базами данных. Она принадлежит классу NoSQL и подходит для работы с документами. Если в реляционных базах данных информация хранится в таблицах со строгой структурой, то MongoDB использует документы в формате BSON — двоичной кодировке JSON. Такой подход полезен в работе с разнообразной информацией. 

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

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

Схема СУБДСхема СУБД
Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Отличия от реляционных баз данных

Выбор между MongoDB и реляционной базой будет зависеть от ваших задач. Сравним подходы, чтобы понять сильные и слабые стороны.

Параметр
MongoDB (NoSQL)
Реляционные базы данных (SQL)
Модель данных
Документоориентированная, данные в формате BSON
Таблицы со строгой структурой данных
Структура
Гибкая, документы с разными полями
Определенная схема для всех записей
Связи между данными
Связи внутри документов
Внешние ключи для связи между таблицами
Масштабирование
Горизонтальное путем распределения данных между серверами
Вертикальное путем наращивания ресурсов одного сервера
Производительность
Высокая при работе с большими объемами данных и регулярных запросах
Высокая при транзакциях
Транзакции
Полноценная поддержка multi-document ACID-транзакций (с версии 4.0 для реплика-сетов, с 4.2 для шардированных кластеров)
ACID-транзакции
Использование
Веб-приложения, микросервисы и приложения
Банковские и бухгалтерские системы и ERP

Основные компоненты архитектуры: mongod, mongos, конфиг-серверы

Архитектура распределенного (шардированного) кластера MongoDB включает три ключевых компонента. При этом для standalone-инсталляции или реплика-сета используется только mongod.

  • mongod — основной процесс, который отвечает за хранение и обработку данных. Он работает с коллекциями и документами, управляет задачами сервера MongoDB, такими, как прием запросов и отправку ответов. 

  • mongos — маршрутизатор запросов, который используется в шардированных (распределенных) кластерах. Он получает запросы от приложений и направляет их к серверам mongod, где хранятся нужные  данные. Для клиента mongos выглядит как обычный сервер MongoDB. 

  • Конфигурационные серверы (config servers) — хранилища информации о структуре шардированного кластера. Они содержат данные о распределении коллекций и шардов, правилах перенаправления запросов. Mongos обращается к ним, чтобы определить, куда направить запрос. 

Основное назначение конфигурационных серверов — хранение метаданных шардированного кластера. Как правило, они не хранят пользовательские данные, но в некоторых специфических сценариях хранения данных на config servers возможно.

Подготовка к установке MongoDB на разные операционные системы

Для установки MongoDB нужна 64-битная ОС с поддержкой x86_64 или ARM64. Требования к оперативной памяти зависят от объема данных и рабочей нагрузки. Для работы необходим достаточный объем RAM для кеша storage engine (WiredTiger). Для разработки может хватить 1-2 ГБ, для рабочих нагрузок рекомендуется от 4 ГБ и более. Ключевым является настройка размера кеша WiredTiger.

Требование актуально для последних версий MongoDB Community Edition. Для получения точной информации о поддерживаемых платформах обратитесь к официальной документации по поддержке платформ.

Установка MongoDB Community Edition на Ubuntu и Debian

Перед установкой необходимо добавить официальный репозиторий MongoDB в систему. Сперва импортируйте GPG-ключ:

Добавьте репозиторий (для Ubuntu 22.04/Jammy):

Обновите списки пакетов:

Установите MongoDB:

Загрузите конфигурацию службы systemd:

Установка на CentOS и RHEL

Настройте репозиторий YUM с официальными пакетами MongoDB. Это позволит установить службу одной командой через менеджер пакетов. 

Служба запускается командой:

Для автоматического запуска при загрузке ОС выполните:

Установка MongoDB на Windows через MSI-установщик

Загрузите MSI-установщик MongoDB Community Server с официального сайта. Запустите файл mongodb-windows-x86_64.msi. Выберите в мастере установки Complete или Custom. Можете в настройках отметить, чтобы MongoDB установилась как служба Windows. Для проверки работы выполните команду mongod --version

Быстрый старт с Docker-контейнером MongoDB

Запустить MongoDB в Docker можно одной командой:

Этот вариант подойдет, если не хотите устанавливать MongoDB в операционную систему. После запуска в Docker база данных будет доступна на стандартном порту. 

Первоначальная настройка и запуск MongoDB

После установки MongoDB запускается и управляется как системная служба. Для старта используйте команду sudo systemctl start mongod, для автоматического запуска при загрузке системы — sudo systemctl enable mongod.

Проверка статуса работы сервера и логов

Чтобы убедиться, что MongoDB нормально работает, выполните команду sudo systemctl status mongod. Возникающие проблемы можно отслеживать в журналах сервера, которые хранятся в каталоге /var/log/mongodb/. Туда записываются все данные о запуске и остановке службы, сбоях и ошибках. 

Файл конфигурации

Файл конфигурации MongoDB расположен здесь — /etc/mongod.conf. В нем можно настроить сетевой порт, расположение логов и данных, критерии безопасности и другие параметры службы. 

Базовое администрирование и работа с оболочкой mongo shell

Для подключения к службе через mongo shell используйте актуальную команду mongosh вместо устаревшей mongo. Чтобы проверить версию сервера и клиента, примените db.version

Команды mongo shell: CRUD-операции

CRUD-операции — основа работы приложений, которые взаимодействуют с базами данных. Аббревиатура CRUD складывается из первых букв Create, Read, Update и Delete (создание, чтение, обновление и удаление). Примеры команд:

  • создание или выбор существующей базы данных — use mydatabase;

  • создание коллекции и вставка документа — db.users.insertOne({name: "John", age: 30});

  • поиск документа — db.users.find(), например, db.users.findOne({age: {$gt: 25}});

  • обновление документа — db.users.updateOne({name: "John"}, {$set: {age: 31}});

  • удаление документа — db.users.deleteOne({name: "John"}).

Чтобы команды работали, подставляйте свои названия баз данных, коллекций и значения полей в документах.

Создание индексов для ускорения поиска

Чтобы быстрее искать данные без необходимости просматривать все документы в коллекции, используйте индексы. Они позволяют находить документы по конкретному полю. 

Тип
Команда
Описание
Одиночный
db.users.createIndex({ email: 1 })
Быстрый поиск по одному полю. В примере — по email
Комплексный
db.users.createIndex({ lastName: 1, firstName: 1 })
Поиск по нескольким полям
Уникальные
db.users.createIndex({ email: 1 }, { unique: true })
Гарантия уникальности значений в индексируемом поле (или комбинации полей) для всех документов коллекции
TTL
db.sessions.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600 })
Автоматическое удаление устаревших записей
Текстовый
db.posts.createIndex({ title: "text", body: "text" })
Полнотекстовый поиск
Геопространственный
db.places.createIndex({ location: "2dsphere" })
Поиск по географическим координатам

В примерах для скалярных полей (email, lastName и др.) значение `1` указывает на сортировку по возрастанию, `-1` — по убыванию. Для специальных типов индексов (текстовых, геопространственных) используются другие спецификаторы ("text", "2dsphere").

Создавайте индексы по тем полям, которые часто используете для поиска. Не делайте лишних, чтобы не замедлять запись данных. 

Настройка безопасности и аутентификации в MongoDB

Если не изменить настройки, служба MongoDB будет доступна без контроля доступа. Это может привести к утечке и потере данных. Рассказываем, что предпринять. 

Включение контроля доступа в конфигурационном файле

Внесите изменения в конфигурационный файл mongod.conf. Добавьте параметр:

После изменений перезапустите службу командой sudo systemctl restart mongod

MongoDB начнет запрашивать логин и пароль. Подключение без аутентификации будет запрещено. 

Создание первого пользователя-администратора

Этот шаг можно сделать до предыдущего либо локально подключиться к MongoDB с правами администратора. 

В mongo shell выполните команду:

Созданный пользователь получит полные административные права и сможет управлять другими пользователями, создавать и удалять базы данных, настраивать индексы, администрировать серверы. 

Аутентификация при подключении к shell

Как только вы выставите в настройках необходимость авторизации, подключаться без логина не получится. Будет работать команда для подключения с аутентификацией:

Здесь -u — имя пользователя, -p — пароль, --authenticationDatabase admin — база, к которой привязан пользователь. Если верно указать все параметры, доступ к службе будет предоставлен. 

Настройка брандмауэра для доступа к порту 27017

MongoDB по умолчанию работает на порте 27017. Если служба используется в продакшене, нельзя оставлять его открытым. 

Можно разрешить доступ только с доверенных IP либо полностью запретить внешний доступ. Пример настроек брандмауэра ufw на Ubuntu для разрешения доступа только с доверенного IP:

По умолчанию UFW блокирует все входящие соединения, поэтому явный deny для порта 27017 не требуется.

Резервное копирование и восстановление данных

Чтобы восстановить данные при сбое службы, ошибке или переносе на другой сервер, позаботьтесь о резервном копировании. Подсказываем эффективные методы. 

Создание дампа базы данных

Чтобы создать копию базы со всеми коллекциями и документами, примените команду (в примере — база mydatabase):

Пользуйтесь этим методом перед предстоящими обновлениями и миграциями. 

Восстановление базы данных из дампа

Чтобы восстановить базу из резервной копии и при необходимости перезаписать данные, применяйте команду: 

Команда полезна при переносе БД на другой сервер, потере данных из основной базы, восстановлении после ошибок. 

Графические инструменты для управления MongoDB

Графические инструменты нужны, если вы не хотите постоянно пользоваться командной строкой. Официальный клиент службы — MongoDB Compass. Его можно установить с официального сайта MongoDB. Он удобен для новичков. Позволяет подключаться к локальным и удаленным БД, смотреть коллекции и документы, управлять индексами, анализировать структуру содержимого базы. 

Из сторонних инструментов можно рассмотреть  Robo 3T (Studio 3T) и NoSQLBooster. Robo 3T имеет простой интерфейс и встроенную Mongo shell. Он подойдет для повседневной работы с базами данных. 

NoSQLBooster имеет GUI и встроенный редактор запросов. Может автоматически дополнять команды MongoDB. Подойдет для разработчиков. 

Управляемый PostgreSQL
Масштабируйте БД в 2 клика с SLA 99,7%
Управляемый PostgreSQL

Интеграция MongoDB с приложениями: драйверы и ODM

Для Node.js используется официальный драйвер mongodb. Он обеспечивает прямой доступ к базе данных, позволяет выполнять CRUD-операции и работать с коллекциями. Этот драйвер подойдет, если вам важен полный контроль над запросами. 

Можно использовать ODM Mongoose. Он позволяет работать с моделями и связями, определять схемы данных. Этот инструмент упрощает разработку, подходит для крупных приложений. 

Для Python есть официальный драйвер PyMongo, для Java — MongoDB Java Driver. А для PHP существует официальный драйвер (PECL-расширение `mongodb`) и построенная на его основе библиотека (MongoDB PHP Library), которая предоставляет удобный объектно-ориентированный API и является рекомендуемым способом взаимодействия.

Типичные проблемы при установке и настройке

Проблема
Причина
Способ решения
Ошибки, связанные с правами доступа к директории данных
Неверно указан владелец либо нет прав на каталог с данными MongoDB
Настроить владельца и права для пользователя mongod. Примеры команд: sudo chown -R mongod:mongod /var/lib/mongo и sudo chmod 755 /var/lib/mongo
Проблемы с запуском из-за занятого порта
Порт занят другим процессом
Найти процесс с помощью sudo lsof -i :27017 или sudo netstat -tulpn | grep 27017 и остановить его либо изменить порт в конфигурации службы
Ошибки аутентификации
Неверно настроенный механизмы аутентификации либо у пользователя нет достаточных прав
Проверить настройки аутентификации, убедиться в корректности ролей пользователя и прав доступа
Сложность масштабирования и обеспечения отказоустойчивости
Ручная настройка репликации и шардинга требует экспертизы и времени
Рассмотреть использование управляемых облачных баз данных, таких как Evolution Managed PostgreSQL, которые автоматизируют развёртывание, резервное копирование и мониторинг

Дальнейшие шаги: шардинг, репликация, облачные сервисы

С ростом объема данных систему можно масштабировать. Есть три способа.  

Репликация (Replica Set)

Replica Set — это группа MongoDB-серверов, хранящих копии одинаковых записей. Один (primary) принимает записи, остальные (secondary) содержат реплики данных. Если главный сервер выходит из строя, можно переключиться на другие, ничего не теряя. Такой подход позволяет обеспечить отказоустойчивость и доступность данных. 

Горизонтальное масштабирование: шардинг (Sharding)

Sharding — способ горизонтально масштабировать MongoDB путем разделения данных между несколькими экземплярами mongod, объединенными в шарды (shards). Каждый шард должен быть развернут как реплика-сет (Replica Set) для обеспечения отказоустойчивости. Чтобы определить, где хранятся конкретные документы, используется ключ shard key. 

Такой подход позволяет работать с большими объемами данных, увеличивать пропускную способность, автоматически маршрутизировать запросы к нужному серверу. 

Использование облачного сервиса MongoDB Atlas

Для развертывания и масштабирования MongoDB можно также использовать виртуальные серверы (VPS/VDS) у любых облачных провайдеров или сразу обратиться к готовым управляемым решениям. К таким решениям относится Advanced Document Database Service with MongoDB от Cloud.ru — документоориентированная БД, полностью совместимая с MongoDB. Сервис позволяет запускать кластеры в конфигурациях Replica Set и Cluster (с поддержкой шардинга), берет на себя задачи администрирования, автоматического резервного копирования и обеспечивает высокий уровень доступности. Это может быть удобным выбором для проектов, предпочитающих работать с отечественными облачными платформами.

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

Atlas позволяет быстро начать работу с MongoDB без администрирования серверов. MongoDB Atlas развертывается и работает в инфраструктуре ведущих публичных облачных провайдеров: AWS, Google Cloud Platform и Microsoft Azure.

Заключение

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

Продукты из этой статьи:
Иконка-Advanced Document Database Service with MongoDB
Advanced Document Database Service with MongoDB
Иконка-Evolution Managed PostgreSQL®
Evolution Managed PostgreSQL®
2 февраля 2026

Вам может понравиться