O que é Sharding no MongoDB?
Sharding é um conceito no MongoDB, que divide grandes conjuntos de dados em pequenos conjuntos de dados em várias instâncias do MongoDB.
Às vezes, os dados no MongoDB serão tão grandes que as consultas em tais conjuntos de big data podem causar muita utilização da CPU no servidor. Para lidar com essa situação, o MongoDB tem um conceito de Sharding, que é basicamente a divisão de conjuntos de dados em várias instâncias do MongoDB.
A coleção, que poderia ser grande em tamanho, é, na verdade, dividida em várias coleções ou fragmentos, como são chamados. Logicamente, todos os fragmentos funcionam como uma coleção.
Como Implementar Sharding
Os fragmentos são implementados usando clusters que nada mais são do que um grupo de instâncias do MongoDB.
Os componentes de um fragmento incluem
- Um fragmento - isso é o básico e nada mais é do que uma instância do MongoDB que contém o subconjunto dos dados. Em ambientes de produção, todos os shards precisam fazer parte de conjuntos de réplicas.
- Servidor de configuração - Esta é uma instância mongodb que contém metadados sobre o cluster, basicamente informações sobre as várias instâncias mongodb que manterão os dados de shard.
- Um Roteador - Esta é uma instância mongodb que basicamente é responsável por redirecionar os comandos enviados pelo cliente para os servidores corretos.
Exemplo de cluster de fragmentação passo a passo
Etapa 1) Crie um banco de dados separado para o servidor de configuração.
mkdir /data/configdb
Etapa 2) Inicie a instância mongodb no modo de configuração. Suponha que se tivermos um servidor denominado Servidor D que seria nosso servidor de configuração, precisaríamos executar o comando abaixo para configurar o servidor como um servidor de configuração.
mongod -configdb ServerD: 27019
Etapa 3) Inicie a instância mongos especificando o servidor de configuração
mongos -configdb ServerD: 27019
Etapa 4) Do shell do mongo, conecte-se à instância do mongo
mongo -host ServerD -port 27017
Etapa 5) Se você tiver o Servidor A e o Servidor B que precisam ser adicionados ao cluster, emita os comandos abaixo
sh.addShard("ServerA:27017")sh.addShard("ServerB:27017")
Etapa 6) Ative a fragmentação para o banco de dados. Portanto, se precisarmos fragmentar o banco de dados Employeedb, emita o comando abaixo
sh.enableSharding(Employeedb)
Etapa 7) Ative a fragmentação para a coleção. Portanto, se precisarmos fragmentar a coleção Employee, emita o comando abaixo
Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})
Resumo:
- Conforme explicado no tutorial, Sharding é um conceito no MongoDB, que divide grandes conjuntos de dados em pequenos conjuntos de dados em várias instâncias do MongoDB.