Теория, лежащая в основе шардинга баз данных, кажется простой.
Но как она реализуется в реальных базах данных?
Рассмотрим это на примере MongoDB (одной из самых популярных баз данных NoSQL)
Основы
Для шардинга в MongoDB необходим кластер.
Кластер - это группа взаимосвязанных серверов или узлов.
Для горизонтального масштабирования можно просто увеличить количество серверов.
Кластер состоит из трех частей:
- Шард
- Маршрутизатор Mongos
- Маршрутизатор конфигурации
Рассмотрим каждую часть:
✅ Шард
Шард - это подмножество данных.
Данные разделяются между группой шардов.
Каждый шард развертывается как набор реплик.
Это замечательная вещь...
...потому что вы получаете репликацию и автоматическое восстановление данных после отказа системы.
Но никаких прямых запросов к шарду не поступает.
✅ Маршрутизатор Mongos
Mongos Router играет ключевую роль в кластере Все запросы направляются на Mongos Router.
Он выполняет две важнейшие задачи:
- Маршрутизация запросов и балансировка нагрузки
- Кэширование метаданных
Маршрутизатор выступает в роли посредника для получения данных с реальных шардов.
✅ Серверы конфигурации
Серверы конфигурации работают как отдельный набор реплик.
Они хранят метаданные для кластера шардов MongoDB.
Метаданные - это как индекс для вашего кластера.
В них хранится такая информация, как:
- Как организованы данные?
- Какие компоненты присутствуют в кластере.
Вот как выглядит весь процесс:
- Код приложения запрашивает данные
- Маршрутизатор Mongos получает запрос
- Маршрутизатор проверяет сервер Config Server, чтобы найти, на каком шарде находятся данные
- Запрос направляется на соответствующий шард
- Данные возвращаются в приложение
Post #783
4.47K
- 👍 9
- ❤ 6
- 🔥 1