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

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

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

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

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

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

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

Внимание

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

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

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

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

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

Подробнее о концепции шардирования читайте в разделе Шардирование в Yandex StoreDoc.

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

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

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

Важно

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

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

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

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

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

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

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

    sh.shardCollection( "<имя_БД>.<коллекция>", { "<индекс>": <тип_индекса> } )
    
  5. Переключите приложения, которые используют вашу базу данных, на использование исключительно хостов MONGOS или MONGOINFRA.

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

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

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

Допустим, у вас уже есть кластер Yandex StoreDoc с шардами и базой данных 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().

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

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