MongoDB Fragmentação: tutorial passo a passo com exemplo

O que é fragmentação MongoDB?

Sharding é um conceito em MongoDB, que divide grandes conjuntos de dados em pequenos conjuntos de dados em vários MongoDB instâncias.

Às vezes, os dados dentro MongoDB será tão grande que as consultas em conjuntos de dados tão grandes podem causar muita utilização da CPU no servidor. Para enfrentar esta situação, MongoDB tem um conceito de Sharding, que é basicamente a divisão de conjuntos de dados em vários MongoDB instâncias.

A coleção que pode ser grande é, 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 fragmentação

Os fragmentos são implementados usando clusters que nada mais são do que um grupo de MongoDB instâncias.

Os componentes de um Shard incluem

  1. Um fragmento – Isso é o básico, e isso nada mais é do que um MongoDB instância que contém o subconjunto dos dados. Em ambientes de produção, todos os fragmentos precisam fazer parte de conjuntos de réplicas.
  2. Servidor de configuração - Isto é um mongodb instância que contém metadados sobre o cluster, basicamente informações sobre os vários mongodb instâncias que armazenarão os dados do fragmento.
  3. Um roteador - Isto é um mongodb instância que basicamente é responsável por redirecionar os comandos enviados pelo cliente para os servidores corretos.

Exemplo de cluster de fragmentação passo a passo

Passo 1) Crie um banco de dados separado para o servidor de configuração.

mkdir /data/configdb

Passo 2) Comece o mongodb instância no modo de configuração. Suponha que se tivermos um servidor chamado 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

Passo 3) Inicie a instância do mongos especificando o servidor de configuração

mongos –configdb ServerD: 27019

Passo 4) Do shell do mongo, conecte-se à instância do mongo

mongo –host ServerD –port 27017

Passo 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")

Passo 6) Habilite a fragmentação para o banco de dados. Portanto, se precisarmos fragmentar o banco de dados Employeedb, emita o comando abaixo

sh.enableSharding(Employeedb)

Passo 7) Habilite a fragmentação para a coleção. Então, se precisarmos fragmentar a coleção Employee, emita o comando abaixo

Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})

Resumo:

  • Conforme foi esclarecido em tutorial, Sharding é um conceito em MongoDB, que divide grandes conjuntos de dados em pequenos conjuntos de dados em vários MongoDB instâncias.