Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Consultas distribuídas

Nesta página

  • Ler operações para conjuntos de réplicas
  • Gravar operações em conjuntos de réplicas
  • Operações de leitura para clusters fragmentados
  • Gravar operações em clusters fragmentados

Por padrão, os clientes leem do primary de um conjunto de réplicas; no entanto, os clientes podem especificar uma read preference para direcionar operações de leitura a outros nós. Por exemplo, os clientes podem configurar read preferences para ler de secundários ou do nó mais próximo para:

  • reduzir a latência em sistemas de vários centros de dados;

  • melhorar a taxa de transferência da leitura ao distribuir altos volumes de leitura (em relação ao volume de gravação);

  • realizar operações de backup e/ou

  • permitir leituras até que uma nova primária seja eleita.

Leia as operações de um conjunto de réplicas. A read preference padrão roteia a leitura para o primário. A read preference "mais próximo roteia a leitura para o nó mais próximo.
clique para ampliar

As operações de leitura de nós secundários de conjuntos de réplicas podem não refletir o estado atual da primary. As read preferences que direcionam as operações de leitura para diferentes servidores podem resultar em leituras não monotônicas.

Alterado na versão 3.6: Começando no MongoDB 3.6, os clientes podem usar sessões causalmente consistentes , que oferecem várias garantias, incluindo leituras monotônicas.

Você pode configurar a read preference por conexão ou por operação. Para obter mais informações sobre a read preference ou sobre os modos de read preference, consulte Read preference e Modos de read preference.

Em conjuntos de réplicas, todas as operações de gravação vão para o primary do conjunto. O primary aplica a operação de gravação e registra as operações no registro de operações ou oplog do primary. O oplog é uma sequência reproduzível de operações para o conjunto de dados. Os nós secundários do conjunto replicam continuamente o oplog e aplicam as operações a si mesmos em um processo assíncrono.

Diagrama de roteamento padrão de leituras e gravações no principal.
clique para ampliar

Para obter mais informações sobre conjuntos de réplicas e operações de gravação, consulte Replicação e preocupação com a gravação.

Clusters fragmentados permitem fazer a partição de um conjunto de dados entre um cluster de instâncias mongod de forma praticamente transparente para o aplicativo. Para obter uma visão geral de clusters fragmentados, consulte a seção Fragmentação neste manual.

Para um cluster fragmentado, os aplicativos emitem operações para uma das instâncias do mongos associadas ao cluster.

Diagrama de um cluster fragmentado.
clique para ampliar

As operações de leitura em clusters fragmentados são mais eficientes quando direcionadas para um shard específico. As queries de collections fragmentadas devem incluir a chave de shard da collection. Se uma query inclui uma chave de shard, o mongos poderá usar metadados de cluster do banco de dados de configuração para rotear as queries em shards.

Leia operações para um cluster fragmentado. Os critérios de query incluem a chave de shard. O roteador de query `'mongos'' pode direcionar a query para o shard ou shards apropriados.

Se uma query não incluir a chave de shard, o mongos deverá direcionar a query para todos shards no cluster. Essas queries de dispersão podem ser ineficientes. Em clusters maiores, queries de dispersão são inviáveis para operações de rotina.

Leia operações para um cluster fragmentado. Os critérios de query não incluem a chave de shard. O roteador de query `'mongos'' deve transmitir a query para todos os shards da collection.

Para shards de conjuntos de réplicas, as operações de leitura de nós secundários de conjuntos de réplicas podem não refletir o estado atual da primary. As read preferences que direcionam as operações de leitura para diferentes servidores podem resultar em leituras não monotônicas.

Observação

A partir do MongoDB 3.6,

  • Os clientes podem usar sessões causalmente consistentes, que oferecem diversas garantias, como leituras monotônicas.

  • Todos os membros de um conjunto de réplicas de shards, não apenas a primary, mantêm metadados relacionados aos metadados de chunk. Isso evita que leituras dos secundários gerem dados órfãos se não estiverem usando read concern "available". Em versões anteriores, leituras de secundários, independente do read concern, poderiam gerar documentos órfãos.

Para obter mais informações sobre operações de leitura em clusters fragmentados, veja as seções mongos e Chaves de shard.

Para collection fragmentadas em um cluster fragmentado, o mongos direciona as operações de gravação de aplicativos para os shards responsáveis pela parte específica do conjunto de dados. O mongos usa os metadados do cluster do banco de dados de configuração para rotear a operação de gravação para os shards apropriados.

Diagrama de um cluster fragmentado.
clique para ampliar

O MongoDB particiona os dados em uma collection fragmentada em faixas com base nos valores da chave de shard. Em seguida, o MongoDB distribui esses chunks para o shard. A chave de shard determina a distribuição dos chunks para o shard. Isso pode afetar o desempenho das operações de gravação no cluster.

Diagrama do espaço de valor da chave de fragmentação segmentado em intervalos ou blocos.

Importante

Operações de atualização que afetam um único documento devem incluir a chave de shard ou o campo _id. Atualizações que afetam vários documentos são mais eficientes em determinadas situações se tiverem a chave de shard, mas podem ser transmitidas para todos os fragmentos.

Se o valor da chave de shard aumentar ou diminuir a cada inserção, todas as operações de inserção terão como alvo um único shard. Como resultado, a capacidade de um único shard se torna o limite para a capacidade de inserção do cluster fragmentado.

Para mais informações, consulte Fragmentação e Operações de gravação em massa.

Dica

Veja também:

← Atomicidade e Transações