MongoDB - Шардинг
Шардинг - это процесс хранения записей данных на нескольких машинах, и это подход MongoDB к удовлетворению требований роста объемов данных. По мере увеличения размера данных одной машины может оказаться недостаточно для хранения данных и обеспечения приемлемой пропускной способности чтения и записи. Шардинг решает проблему горизонтального масштабирования. С сегментированием вы добавляете больше машин для поддержки роста объемов данных и требований операций чтения и записи.
Почему шардинг?
При репликации все записи идут на главный узел
Запросы, чувствительные к задержке, по-прежнему передаются мастеру
Один набор реплик имеет ограничение в 12 узлов
Память не может быть достаточно большой, когда активный набор данных большой
Локальный диск недостаточно велик
Вертикальное масштабирование слишком дорого
Шардинг в MongoDB
На следующей диаграмме показано сегментирование в MongoDB с использованием сегментированного кластера.
На следующей диаграмме есть три основных компонента:
Shards- Осколки используются для хранения данных. Они обеспечивают высокую доступность и согласованность данных. В производственной среде каждый сегмент представляет собой отдельный набор реплик.
Config Servers- Серверы конфигурации хранят метаданные кластера. Эти данные содержат сопоставление набора данных кластера с шардами. Маршрутизатор запросов использует эти метаданные для нацеливания операций на определенные сегменты. В производственной среде сегментированные кластеры имеют ровно 3 сервера конфигурации.
Query Routers- Маршрутизаторы запросов - это в основном экземпляры mongo, интерфейс с клиентскими приложениями и прямые операции с соответствующим шардом. Маршрутизатор запросов обрабатывает и направляет операции на шарды, а затем возвращает результаты клиентам. Разделенный кластер может содержать более одного маршрутизатора запросов для разделения нагрузки клиентских запросов. Клиент отправляет запросы одному маршрутизатору запросов. Как правило, сегментированный кластер имеет много маршрутизаторов запросов.