ломтик MongoDB
Ломтики
Существует еще один кластер MongoDB в пределах, нарезка технологии, большое количество данных, чтобы удовлетворить растущий спрос на MongoDB.
Когда MongoDB для хранения больших объемов данных, машина может быть недостаточно для хранения данных, может быть недостаточно для обеспечения приемлемого для чтения и записи пропускную способность. В этот момент мы можем разделить данные на несколько машин, так что система баз данных может хранить и обрабатывать больше данных.
Почему срез
- Скопируйте все операции записи в основной узел
- Задержка конфиденциальных данных в главном запросе
- Один комплект копий ограничивается до 12 узлов
- Когда огромный объем запросов будет появляться, когда память.
- нехватка Локальный диск
- Вертикальное расширение дорого
ломтик MongoDB
На следующем рисунке показано использование кластерной структуры среза в распределении MongoDB:
Изображение выше имеет следующие три основных компонента:
- осколок:
Используется для хранения фактического блока данных, фактической производственной среды, роль осколок сервер может установить несколько машин relica установить обязательство по предотвращению принимающей единой точки отказа
- Конфигурация сервера:
mongod экземпляр, хранит всю ClusterMetadata, включая информацию фрагмента.
- Запрос Маршрутизаторы:
Передний конец маршрута, в результате чего клиентский доступ, а весь кластер как единую базу данных интерфейсных приложений могут прозрачно использовать.
Примеры фрагментации
порты Slice ткани распределены следующим образом:
Shard Server 1:27020 Shard Server 2:27021 Shard Server 3:27022 Shard Server 4:27023 Config Server :27100 Route Process:40000
Шаг первый: Запустить осколок сервер
[root@100 /]# mkdir -p /www/mongoDB/shard/s0 [root@100 /]# mkdir -p /www/mongoDB/shard/s1 [root@100 /]# mkdir -p /www/mongoDB/shard/s2 [root@100 /]# mkdir -p /www/mongoDB/shard/s3 [root@100 /]# mkdir -p /www/mongoDB/shard/log [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork .... [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork
Шаг второй: Запустите сервер Config
[root@100 /]# mkdir -p /www/mongoDB/shard/config [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork
Примечание: Здесь мы можем начать как обычный MongoDB службы в качестве начала, нет необходимости добавлять -shardsvr и configsvr параметры. Потому что роль этих двух параметров, чтобы изменить начальный порт, поэтому мы можем быть самостоятельно Назначенный порт.
Шаг третий: Начало маршрута обработки
/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500
Параметры запуска mongos, chunkSize этот используется для указания размера блока памяти, блок MB, размер по умолчанию 200MB.
Шаг четвертый: Настройка Шардинг
Далее, мы используем MongoDB Shell вход на mongos, добавлять узлы осколок
[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000 MongoDB shell version: 2.0.7 connecting to: 127.0.0.1:40000/admin mongos> db.runCommand({ addshard:"localhost:27020" }) { "shardAdded" : "shard0000", "ok" : 1 } ...... mongos> db.runCommand({ addshard:"localhost:27029" }) { "shardAdded" : "shard0009", "ok" : 1 } mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库 { "ok" : 1 } mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}}) { "collectionsharded" : "test.log", "ok" : 1 }
Шаг пятый: В программном коде без особых изменений, прямая связь в соответствии с обычной базой данных Монго в качестве интерфейса доступа к базе данных для подключения 40000