Guia do Desenvolvedor para Sharding de Banco de Dados com MongoDB

Como desenvolvedor, você pode enfrentar situações em que o banco de dados de sua aplicação precisa lidar com grandes quantidades de dados. Uma maneira de gerenciar esses dados de forma eficaz é através do sharding de banco de dados, uma técnica que distribui dados em vários servidores ou bancos de dados de forma horizontal. O sharding pode melhorar o desempenho, escalabilidade e confiabilidade, dividindo um grande banco de dados em pedaços menores e mais gerenciáveis chamados de shards.

Neste artigo, exploraremos o conceito de sharding de banco de dados, discutiremos várias estratégias de sharding e forneceremos um guia passo a passo para implementar o sharding no MongoDB, um popular banco de dados NoSQL.

Compreendendo o Sharding de Banco de Dados

O sharding de banco de dados envolve a partição de um grande conjunto de dados em subconjuntos menores chamados de shards. Cada shard contém uma porção dos dados totais e opera de forma independente dos outros. Ao executar consultas e transações em um único shard em vez do conjunto de dados inteiro, os tempos de resposta são mais rápidos e os recursos são utilizados de maneira mais eficiente.

Estratégias de Sharding

Existem várias estratégias de sharding para escolher, dependendo das necessidades de sua aplicação:

  • Sharding baseado em faixas: Os dados são divididos com base em uma faixa específica de valores (por exemplo, usuários com IDs 1-1000 no Shard 1, usuários com IDs 1001-2000 no Shard 2).
  • Fragmentação baseada em hash: Uma função hash é aplicada a um atributo específico (por exemplo, ID do usuário), e o resultado determina em qual fragmento os dados pertencem. Este método garante uma distribuição equilibrada de dados entre os fragmentos.
  • Fragmentação baseada em diretório: Uma pesquisa separada ou tabela é usada para determinar em qual fragmento um pedaço de dados pertence. Essa abordagem oferece flexibilidade na adição ou remoção de fragmentos, mas pode introduzir uma camada adicional de complexidade.
  • Fragmentação baseada em geolocalização: Os dados são particionados com base na localização geográfica dos usuários ou recursos, reduzindo a latência para usuários distribuídos geograficamente.

Implementando Fragmentação no MongoDB

O MongoDB suporta fragmentação prontamente, tornando-o uma ótima escolha para desenvolvedores que desejam implementar fragmentação em seus aplicativos. Aqui está um guia passo a passo para configurar a fragmentação no MongoDB. Usaremos o shell do MongoDB, que usa a sintaxe JavaScript para escrever comandos e interagir com o banco de dados:

1. Configurar um Servidor de Configuração

O servidor de configuração armazena metadados sobre o cluster e as localizações dos fragmentos. Para ambientes de produção, use um conjunto de réplicas de três servidores de configuração.

Shell

 

mongod --configsvr --dbpath /data/configdb --port 27019 --replSet configReplSet

2. Inicializar o Conjunto de Réplicas do Servidor de Configuração

Este comando inicia um novo conjunto de réplicas em uma instância do MongoDB em execução no port 27019.

Shell

 

mongo --port 27019

> rs.initiate()

3. Configurar Servidores de Fragmento

Inicie cada servidor de fragmento com a opção --shardsvr e um --dbpath único.

Shell

 

mongod --shardsvr --dbpath /data/shard1 --port 27018

mongod --shardsvr --dbpath /data/shard2 --port 27017

4. Iniciar o Processo mongos

O processo mongos atua como um roteador entre os clientes e o cluster particionado.

Shell

 

mongos --configdb configReplSet/localhost:27019

5. Conecte-se à Instância mongos e Adicione as Partições

Shell

 

mongo
> sh.addShard("localhost:27018")
> sh.addShard("localhost:27017")

6. Ative a Particionamento para um Banco de Dados e Coleção Específicos

Shell

 

> sh.enableSharding("myDatabase")
> sh.shardCollection("myDatabase.myCollection", {"userId": "hashed"})

Neste exemplo, configuramos um cluster particionado do MongoDB com duas partições e utilizamos o particionamento baseado em hash no campo userId. Agora, os dados na coleção "myCollection" serão distribuídos entre as duas partições, melhorando o desempenho e a escalabilidade.

Conclusão

O particionamento de banco de dados é uma técnica eficaz para gerenciar grandes conjuntos de dados em seu aplicativo. Ao entender diferentes estratégias de particionamento e implementá-las usando o MongoDB, você pode melhorar significativamente o desempenho, a escalabilidade e a confiabilidade do seu aplicativo. Com este guia, você deve agora ter uma compreensão sólida de como configurar o particionamento no MongoDB e aplicá-lo a seus próprios projetos.

Boa aprendizagem!!

Source:
https://dzone.com/articles/a-developers-guide-to-database-sharding-with-mongo