MongoDB - Sharding
Como
forma de manter a alta performance na leitura e escrita de dados,
deve ser adicionado mais máquinas para dividir os dados, isso é o
que chamamos de Sharding.
Isso proporciona um crescimento horizontal.
A
diferença de crescimento horizontal e vertical é que no vertical
ele irá exigir a máquinas cada vez mais potentes para poder atender
a demanda, já a horizontal é vai utilizar várias maquinas para
dividir o processamento. As maquinas utilizadas no crescimento
horizontal não precisam ser de alta performance, ela possibilita o
uso de máquinas de pequeno e médio porte.
O
cluster no MongoDB, possui 3 serviços diferentes:
shards
config
servers
router
Os
shards
que é onde ficam os dados, os config
servers
são os servidores de configuração do servidor e os routers
que são os servidores que recebem as requisições e busca o shard
correto para executar a ação. A aplicação sempre vai se conectar
ao router,
que usará os metadados que são só config
servers
para saber em qual shard
ele deve se conectar.
Criando
um cluster…
Primeiro
(config server)
Precisamos
criar uma pasta com o nome configdb,
dentro de data
que fica na pasta raiz. Essa pasta será usada para o nosso config
server.
cd
/
mkdir
/data/configdb
mongod
--configsvr --port 27010
O
ideal é criamos mais de um config
server,
porque caso o nosso config
caia o router
ficar perdido. Então para evitarmos falhas, devemos criar outros
config.
Segundo
(router)
Agora
iremos levantar o nosso router, passando a porta do nosso config
server.
Lembre-se de executar em uma nova aba/janela.
mongos
--configdb localhost:27010 --port 27011
Terceiro
(shards)
Criaremos
pastas onde ficaram nossas shards,
dentro também da pasta data.
cd
/
mkdir
/data/shard1 && mkdir /data/shard2 && mkdir
/data/shard3
E
iremos levantar cada shard no terminal. Cada shard precisa ser
executado em aba/janela diferente.
cd/
mongod
--port 27012 --dbpath /data/shard1
cd/
mongod
--port 27013 --dbpath /data/shard2
cd/
mongod
--port 27014 --dbpath /data/shard3
Agora
precisamos registrar nossos Shards
no nosso Router.
Para
isso devemos conectar ao Router:
mongo
--port 27011 --host localhost
Depois
registramos os shards,
passando o ip e a porta:
sh.addShard(“localhost:27012”)
sh.addShard(“localhost:27013”)
sh.addShard(“localhost:27014”)
Feito
isso, vamos especificar qual database
iremos shardear
com o comando
sh.enableSharding(“database”)
E
agora iremos selecionar a collection,
no primeiro parâmetro iremos passar o nome da database e da
collection e como segundo parâmetro o campo que era irá quebrar
para saber a faixa de dados que vai ficar em cada shard.
sh.shardCollection(“database.collection”,
{_id: 1})
No
exemplo assim, passamos a _id
para ser dividido.
Agora
quando formos fazer inserção de dados no nosso cluster, basta
executar no nosso router.
Até
a próxima ;)

0 comentários:
Postar um comentário