MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Uma introdução aos conceitos básicos da zona do MongoDB

Zonas MongoDB


Para entender as Zonas do MongoDB, devemos primeiro entender o que é uma Zona:um grupo de fragmentos com base em um conjunto específico de tags.

As Zonas do MongoDB ajudam na distribuição de fragmentos com base em tags, entre fragmentos. Todo o trabalho (leituras e gravações) relacionado a documentos em uma zona é feito em estilhaços correspondentes a essa zona.

Pode haver diferentes cenários em que os clusters fragmentados (baseados em zona) podem ser altamente úteis. Digamos:
  • Um aplicativo distribuído geograficamente pode exigir o front-end, bem como o armazenamento de dados
  • Um aplicativo tem uma arquitetura de n camadas, de modo que alguns registros são buscados de um hardware de camada mais alta (baixa latência), enquanto outros podem ser buscados de um hardware de camada baixa (indutor de alta latência)

Benefícios do uso de zonas MongoDB


Com a ajuda do MongoDB Zones, os DBAs podem criar soluções de armazenamento em camadas que suportam o ciclo de vida dos dados, com dados usados ​​com frequência armazenados na memória, dados menos usados ​​armazenados no servidor e dados arquivados no momento adequado colocados offline.

Como configurar zonas


Em clusters fragmentados, você pode criar zonas que representam um grupo de fragmentos e associar um ou mais intervalos de valores de chave de fragmento a essa zona. O MongoDB roteia todas as leituras e todas as gravações que entram em um intervalo de zona apenas para os fragmentos dentro da zona. Você pode associar cada zona a um ou mais estilhaços no cluster e um estilhaço pode ser associado a qualquer número de zonas.

Alguns dos padrões de implantação mais comuns em que as zonas podem ser aplicadas são os seguintes:
  • Isole um subconjunto específico de dados em um conjunto específico de fragmentos.
  • Garantindo que os dados mais relevantes residam em fragmentos geograficamente mais próximos dos servidores de aplicativos.
  • Roteie dados para os fragmentos com base no desempenho do hardware do fragmento.

A imagem a seguir ilustra um cluster fragmentado com três fragmentos e duas zonas. A zona A representa um intervalo com um limite inferior de 0 e um limite superior de 10. A zona B mostra um intervalo com um limite inferior de 10 e um limite superior de 20. Os fragmentos VERMELHO e AZUL têm a zona A. Shard BLUE também tem a zona B. Shard GREEN não tem zonas associadas a ele. O cluster está em um estado estável e nenhum fragmento viola nenhuma das zonas

Intervalo de uma zona do MongoDB


Cada zona abrange um ou mais intervalos de valores de chave de fragmentação. Cada faixa que uma zona cobre é sempre inclusiva de seu limite inferior e exclusiva de seu limite superior.

LEMBRE-SE: As zonas não podem compartilhar intervalos e não podem ter intervalos sobrepostos.

Adicionando fragmentos a uma zona


O método sh.addShardTag() é usado para adicionar zonas a um estilhaço. Um único estilhaço pode ter várias zonas e vários estilhaços também podem ter a mesma zona. O exemplo a seguir adiciona a zona A a um estilhaço.
sh.addShardTag("shard0000", "A")

Removendo fragmentos de uma zona


Para remover uma zona de um estilhaço, é usado o método sh.removeShardTag(). O exemplo a seguir remove a zona A de um estilhaço.
sh.removeShardTag("shard0002", "A")
Vários noves Torne-se um DBA do MongoDB - Trazendo o MongoDB para a produçãoSaiba mais sobre o que você precisa saber para implantar, monitorar, gerenciar e dimensionar o MongoDBBaixe gratuitamente

Dicas para zonas MongoDB

Mantenha os documentos simples


MongoDB é um banco de dados sem esquema. Isso significa que não há esquema predefinido por padrão. Podemos adicionar um esquema predefinido em versões mais recentes, mas não é obrigatório. Não subestime as dificuldades que ocorrem ao trabalhar com documentos e matrizes, pois pode se tornar muito difícil analisar seus dados no processo de ETL/lado do aplicativo. Além disso, os arrays podem prejudicar o desempenho da replicação:para cada alteração no array, todos os valores do array são replicados.

O melhor hardware nem sempre é a melhor opção


Usar um bom hardware definitivamente ajuda para um bom desempenho. Mas o que poderia acontecer em um ambiente quando uma instância de uma grande máquina morre? A resposta é "failover".

Ter várias máquinas pequenas (em vez de uma ou duas) em um ambiente distribuído pode garantir que as interrupções afetem apenas algumas partes do shard com pouca ou nenhuma percepção pelo aplicativo. Mas, ao mesmo tempo, mais máquinas implicam uma alta probabilidade de falha. Considere essa compensação ao projetar seu ambiente. As escolhas certas afetam o desempenho.

Conjunto de trabalho


Qual o tamanho do conjunto de trabalho? Normalmente, um aplicativo não usa todos os dados. Alguns dados são atualizados com frequência, enquanto outros não. Seu conjunto de dados de trabalho cabe na RAM? O desempenho ideal ocorre quando todo o conjunto de dados de trabalho está na RAM.