Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Write concern para conjuntos de réplicas

Nesta página

  • Verificar operações de escrita em conjuntos de réplicas
  • Modificar padrão write concern
  • Write concerns personalizadas

Write concern para conjuntos de réplicas descreve o número de membros portadores de dados (ou seja, o primary e o secundário, mas não os arbiters) que devem confirmar uma operação de gravação antes que a operação retorne como bem sucedida. Um membro só pode reconhecer uma operação de gravação depois de receber e aplicar a gravação com sucesso.

Para conjuntos de réplicas:

Para obter a documentação completa sobre o comportamento de reconhecimento de escrita, consulte Comportamento de confirmação.

Operação de gravação em um conjunto de réplicas com nível de preocupação de gravação de ''w: "maioria"'' ou grave no primário e em pelo menos um secundário.

Um aplicativo que emite uma operação de escrita que requer confirmação de write concern aguarda até que o primary receba confirmação do número necessário de membros para o write concern especificado. Para write concern de w maior que 1 ou w : "majority", o primary espera até que o número necessário de secundários reconheça a escrita antes de retornar a confirmação de write concern. Para a write concern de w: 1, o primary pode retornar a confirmação de write concern assim que aplicar localmente a escrita, uma vez que é elegível para contribuir com a write concern solicitada.

Quanto mais membros reconhecerem uma escrita, menor a probabilidade de que os dados gravados possam ser revertidos se o primary falhar. No entanto, especificar uma alta write concern pode aumentar a latência, pois o cliente deve aguardar até receber o nível solicitado de confirmação de write concern.

A seleção da preocupação de gravação ideal para qualquer operação de gravação depende das metas de desempenho do seu aplicativo e dos requisitos de durabilidade dos dados. Para obter mais orientações sobre como configurar a preocupação de gravação para evitar reversões, consulte Evitar reversões de conjuntos de réplicas.

A seguinte operação inclui a opção writeConcern para o método insertOne(). A operação especifica: - a preocupação de escrita "majority" e - um tempo limite de 5 segundos.

O parâmetro de preocupação de write concern de wtimeout garante que a operação não fique bloqueada indefinidamente.

db.products.insertOne(
{ item: "envelopes", qty : 100, type: "Clasp" },
{ writeConcern: { w: "majority" , wtimeout: 5000 } }
)

A aplicação aguarda até que o reconhecimento primário da preocupação de gravação retorne, indicando que uma maioria calculada dos membros com direito a voto portadores de dados reconheceu a operação de gravação. Por exemplo, em um conjunto de réplicas de 2 membros (P-S-S), a operação exigiria o reconhecimento de 3 dos membros do . Se o conjunto de réplicas fosse dimensionado posteriormente para incluir dois membros com direito a voto secundários adicionais, a mesma operação exigiria o reconhecimento de 3 dos 5 membros do conjunto de réplicas. Se o primário não retornar a confirmação da preocupação de gravação dentro do limite wtimeout, a operação de gravação falhará com um erro de preocupação de gravação.

Uma operação de gravação que atinge o tempo limite de espera pela preocupação de gravação especificada indica apenas que o número necessário de membros do conjunto de réplicas não reconheceu a operação de gravação dentro do período wtimeout . Isso não indica necessariamente que o primário não aplicou a gravação. Os dados podem existir em um subconjunto de nós do conjunto de réplicas no momento do erro de preocupação de gravação e podem continuar replicando até que todos os nós no cluster tenham esses dados. Os aplicativos devem levar em conta a disponibilidade potencial dos dados de gravação, independentemente do estado de reconhecimento da preocupação de gravação.

A sintaxe exata para especificar a write concern depende da operação de escrita. Consulte a documentação da operação de escrita para obter instruções sobre suporte e sintaxe da write concern. Para obter a documentação completa sobre write concern, consulte Write Concern.

Você pode modificar a write concern padrão de um conjunto de réplicas emitindo o comando setDefaultRWConcern.

Se você emitir uma operação de gravação com uma preocupação de gravação específica, a operação de gravação usará sua própria preocupação de gravação em vez do padrão.

Dica

Veja também:

Você pode marcar os membros dos conjuntos de réplicas e usar os conjuntos de tags resultantes para criar write concerns personalizadas. Consulte Configurar conjuntos de tags de conjuntos de réplicas para obter informações sobre como configurar write concerns personalizados usando conjuntos de tags.

Voltar

Semântica de leitura e gravação