Что такое шардинг в MongoDB?
Шардинг - это концепция MongoDB, которая разделяет большие наборы данных на небольшие наборы данных в нескольких экземплярах MongoDB.
Иногда данные в MongoDB будут настолько огромными, что запросы к таким большим наборам данных могут вызвать большую загрузку ЦП на сервере. Чтобы справиться с этой ситуацией, в MongoDB есть концепция сегментирования, которая в основном представляет собой разделение наборов данных на несколько экземпляров MongoDB.
Коллекция, которая может быть большой по размеру, фактически разделена на несколько коллекций или шардов, как они называются. Логически все шарды работают как одна коллекция.
Как реализовать шардинг
Шарды реализуются с помощью кластеров, которые представляют собой не что иное, как группу экземпляров MongoDB.
Компоненты Shard включают:
- Осколок - это основная вещь, и это не что иное, как экземпляр MongoDB, который содержит подмножество данных. В производственных средах все сегменты должны быть частью наборов реплик.
- Сервер конфигурации - это экземпляр mongodb, который содержит метаданные о кластере, в основном информацию о различных экземплярах mongodb, которые будут содержать данные о сегменте.
- Маршрутизатор - это экземпляр mongodb, который в основном отвечает за перенаправление команд, отправляемых клиентом, на нужные серверы.
Пошаговый пример кластера сегментирования
Шаг 1) Создайте отдельную базу данных для сервера конфигурации.
mkdir /data/configdb
Шаг 2) Запустите экземпляр mongodb в режиме конфигурации. Предположим, что если у нас есть сервер с именем Server D, который будет нашим сервером конфигурации, нам нужно будет выполнить приведенную ниже команду, чтобы настроить сервер в качестве сервера конфигурации.
mongod -configdb ServerD: 27019
Шаг 3) Запустите экземпляр mongos, указав сервер конфигурации
mongos -configdb ServerD: 27019
Шаг 4) Из оболочки mongo подключитесь к экземпляру mongo
mongo -host ServerD -port 27017
Шаг 5) Если у вас есть сервер A и сервер B, которые необходимо добавить в кластер, выполните следующие команды.
sh.addShard("ServerA:27017")sh.addShard("ServerB:27017")
Шаг 6) Включите сегментирование для базы данных. Поэтому, если нам нужно сегментировать базу данных Employeedb, выполните следующую команду
sh.enableSharding(Employeedb)
Шаг 7) Включите сегментирование коллекции. Поэтому, если нам нужно разделить коллекцию сотрудников, выполните следующую команду
Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})
Резюме:
- Как объясняется в руководстве, Sharding - это концепция в MongoDB, которая разделяет большие наборы данных на небольшие наборы данных в нескольких экземплярах MongoDB.