Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for MongoDB
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
      • Обзор способов подключения к базе данных
      • Подключение к нешардированному кластеру
      • Подключение к шардированному кластеру
    • Остановка и запуск кластера
    • Изменение настроек кластера и базы данных
    • Переключение первичной реплики
    • Обновление версии MongoDB
    • Управление базами данных
    • Управление хостами кластера
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
    • Диагностика производительности
    • Инструменты для анализа производительности
  • Практические руководства
    • Шардирование коллекций
    • Миграция данных в Managed Service for MongoDB
    • Перенос коллекций из MongoDB в Managed Service for MongoDB
    • Анализ производительности и оптимизация
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for MongoDB
    • Квоты и лимиты
    • Хранилище в Managed Service for MongoDB
    • Резервные копии
    • Репликация
    • Шардирование
    • Пользователи и роли
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Настройки MongoDB
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • delete
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • backup
        • create
        • delete
        • deleteHosts
        • deleteShard
        • enableSharding
        • get
        • getShard
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShards
        • move
        • rescheduleMaintenance
        • resetupHosts
        • restartHosts
        • restore
        • start
        • stepdownHosts
        • stop
        • streamLogs
        • update
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о MongoDB
    • Все вопросы на одной странице
  1. Концепции
  2. Шардирование

Шардирование в Managed Service for MongoDB

Статья создана
Yandex Cloud
  • Преимущества шардирования
  • Использование шардирования
  • Особенности управления шардированием в Managed Service for MongoDB

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

Managed Service for MongoDB поддерживает основные стратегии шардирования данных:

  • по хешу (ключ шардирования на базе хеша);
  • по диапазону значений (ranged sharding).

Более подробно шардирование баз MongoDB рассмотрено в документации MongoDB.

Преимущества шардирования

Шардирование помогает распределить нагрузку по хостам базы данных и обычно используется в следующих случаях:

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

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

Шардирование может помочь:

  • Преодолеть технические ограничения.

    Потребность работать с большими наборами данных может привести к тому, что инфраструктура хранения данных упрется в предел возможностей оборудования, доступного на рынке (например, IOPS дисковой подсистемы).

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

  • Создавать геораспределенные системы.

    Распределение шардов кластера по различным регионам может помочь:

    • улучшить доступность для региональных пользователей;
    • соблюсти местные законы, например, требование о хранении данных на территории определенной страны или региона.
  • Повысить отказоустойчивость.

    Шардирование позволяет изолировать отказы отдельных хостов или наборов реплик. Без шардирования потеря отдельного хоста приводит к потере доступа ко всему набору данных, которые он содержит. А отказ, например, одного шарда из пяти оставляет доступными 80% данных коллекции.

    Чтобы уменьшить риск отключения целого шарда, шарды рекомендуется настраивать как наборы трех реплик. Распределение хостов одного шарда по различным зонам доступности Yandex Cloud позволяет увеличить доступность данных.

  • Повысить скорость выполнения запросов.

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

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

Использование шардирования

Чтобы распределить данные по шардам:

  1. Включите шардирование на уровне кластера Managed Service for MongoDB.
  2. Добавьте нужное количество шардов.
  3. Включите шардирование для нужных коллекций.

См. также пример шардирования.

Особенности управления шардированием в Managed Service for MongoDB

Managed Service for MongoDB управляет шардами следующим образом:

  • Из-за ограниченных ресурсов кластер с хостами классов b1.nano, b1.micro, b1.medium, b2.nano, b2.micro и b2.medium не шардируется.

  • Кластер создается нешардированным.

  • За управление шардированием в Managed Service for MongoDB отвечают хосты c ролями MONGOS (маршрутизация запросов пользователей) и MONGOCFG (хранение конфигурации шардов).

  • В Managed Service for MongoDB можно включить шардирование двух типов:

    • Стандартное — экономичный тип шардирования для кластеров, в которых нет особых требований к хостам, управляющим шардированием.

      В кластер будут добавлены хосты MONGOINFRA, сочетающие в себе роли MONGOS и MONGOCFG. Минимальное количество таких хостов — три.

    • Расширенное — гибкий тип шардирования для кластеров, в которых требуется определенное количество хостов каждой роли.

      В кластер будут добавлены выделенные сервера MONGOS и MONGOCFG. Минимальное количество хостов MONGOS — два, хостов MONGOCFG — три.

  • В кластере с включенным шардированием:

    • Все запросы к Managed Service for MongoDB должны направляться к хостам MONGOS или MONGOINFRA вместо MONGOD.
    • Нельзя отключить шардирование или полностью удалить хосты, которые поддерживают работу шардирования: в кластере всегда будет поддерживаться минимальное количество хостов MONGOS и MONGOCFG или MONGOINFRA.

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Преимущества шардирования
  • Использование шардирования
  • Особенности управления шардированием в Managed Service for MongoDB