Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for MongoDB
  • Начало работы
    • Все руководства
    • Шардирование коллекций
    • Миграция данных в Managed Service for MongoDB
    • Миграция кластера Managed Service for MongoDB с версии 4.4 на 6.0
    • Миграция коллекций из стороннего кластера MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Необходимые платные ресурсы
  • Как включить шардирование коллекций
  • Шардирование разнородных данных
  • Ссылки по теме
  • Пример шардирования
  1. Практические руководства
  2. Шардирование коллекций

Шардирование коллекций MongoDB

Статья создана
Yandex Cloud
Улучшена
Dmitry A.
Обновлена 8 апреля 2025 г.
  • Необходимые платные ресурсы
  • Как включить шардирование коллекций
    • Шардирование разнородных данных
    • Ссылки по теме
  • Пример шардирования

При шардировании кластера Managed Service for MongoDB автоматически создаются служебные хосты, которые тарифицируются отдельно от основных хостов СУБД:

  • либо MONGOS и MONGOCFG,
  • либо MONGOINFRA.

Внимание

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

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

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

Распределять по шардам стоит:

  • Данные значительного объема: если коллекция занимает больше 200 ГБ.
  • Коллекции с неоднородным содержанием: например, данные можно четко разделить на часто и редко запрашиваемые.
  • Коллекции с высокими требованиями к скорости чтения и записи данных: шардирование поможет распределить нагрузку по хостам, чтобы обойти технические ограничения.

Подробнее о концепции шардирования читайте в разделе Шардирование в Managed Service for MongoDB.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входит плата за дополнительные служебные хосты кластера Managed Service for MongoDB (см. тарифы MongoDB).

Как включить шардирование коллекцийКак включить шардирование коллекций

Важно

Все операции по настройке шардирования с помощью CLI mongosh необходимо выполнять от имени пользователя с ролью mdbShardingManager в базе данных admin.

  1. Включите шардирование для кластера.

  2. Подключитесь к хосту MONGOS или MONGOINFRA с помощью CLI mongosh и включите шардирование:

    sh.enableSharding("<имя_БД>")
    

    Тип хоста можно запросить со списком хостов в кластере.

  3. Задайте индекс в шардированной коллекции:

    db.getSiblingDB("<имя_БД>").<имя_коллекции>.createIndex( { "<индекс>": <тип_индекса> } )
    
  4. Включите шардирование коллекции:

    sh.shardCollection( "<имя_БД>.<коллекция>", { "<индекс>": <тип_индекса> } )
    

    Подробное описание команды shardCollection см. в документации MongoDB.

  5. Переключите приложения, которые используют вашу базу данных, на использование исключительно хостов MONGOS или MONGOINFRA.

Шардирование разнородных данныхШардирование разнородных данных

Если коллекция состоит из документов с разнородными типами данных, шарды лучше формировать по значениям ключа _id одинакового типа, пользуясь механизмом Type Bracketing. Тогда распределение по шардам и поиск документов выполняется быстрее, чем с разнотипными значениями _id.

Ссылки по темеСсылки по теме

Документация MongoDB рассказывает о решениях проблем шардирования:

  • О механизме шардирования в общем: Sharding.
  • О выборе ключа шардирования и стратегиях шардирования: Shard Keys.

Пример шардированияПример шардирования

Допустим, у вас уже есть кластер Managed Service for MongoDB с шардами и базой данных billing. Необходимо включить шардирование для коллекций payment и addresses. Для примера в качестве ключа шардирования используется хэш индекса для payment и значение поля addresses.

Последовательность операций:

  1. Подключитесь к базе billing. У пользователя, от имени которого вы подключаетесь к базе, должна быть роль mdbShardingManager в базе данных admin.

  2. Включите шардирование для базы billing:

    sh.enableSharding("billing")
    
  3. Определите индекс в шардированной коллекции:

    db.payments.ensureIndex( { "_id": "hashed" } )
    
  4. Создайте необходимое количество шардов в консоли управления.

  5. Задайте шардирование для коллекции с учетом ее пространства имен:

    sh.shardCollection( "billing.payments", { "_id": "hashed" } )
    

После этого шардирование будет включено и настроено. Чтобы убедиться в этом, попробуйте вывести список доступных шардов с помощью команды sh.status().

Была ли статья полезна?

Предыдущая
Все руководства
Следующая
Миграция данных в Managed Service for MongoDB
Проект Яндекса
© 2025 ООО «Яндекс.Облако»