Menu Docs

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

Listas de conjuntos de tags de read preference

Nesta página

  • Ordem de correspondência de tags
  • Lista de conjuntos de tags e modos de preferência de leitura

Se um membro ou membros do conjunto de réplicas estiverem associados a tags, você poderá especificar uma lista de conjuntos de tags (array de conjuntos de tags) na preferência de leitura para segmentar esses membros.

Para configurar um membro com tags, defina members[n].tags como um documento que contenha o nome da tag e os pares de valores. O valor das tags deve ser uma string.

{ "<tag1>": "<string1>", "<tag2>": "<string2>",... }

Em seguida, você pode incluir uma lista de conjuntos de tags na preferência de leitura para segmentar membros com tags. Uma lista de conjuntos de tags é uma array de conjuntos de tags, em que cada conjunto de tags contém um ou mais pares de tags/valores.

[ { "<tag1>": "<string1>", "<tag2>": "<string2>",... }, ... ]

Para encontrar membros do conjunto de réplicas, o MongoDB tenta cada documento em sucessão até que uma correspondência seja encontrada. Consulte Ordem de correspondência de tags para obter detalhes.

Por exemplo, se um membro secundário tiver o seguinte members[n].tags:

{ "region": "South", "datacenter": "A" }

Em seguida, as seguintes listas de conjuntos de tags podem direcionar operações de leitura para o secundário mencionado anteriormente (ou outros membros com as mesmas tags):

[ { "region": "South", "datacenter": "A" }, { } ] // Find members with both tag values. If none are found, read from any eligible member.
[ { "region": "South" }, { "datacenter": "A" }, { } ] // Find members with the specified region tag. Only if not found, then find members with the specified datacenter tag. If none are found, read from any eligible member.
[ { "datacenter": "A" }, { "region": "South" }, { } ] // Find members with the specified datacenter tag. Only if not found, then find members with the specified region tag. If none are found, read from any eligible member.
[ { "region": "South" }, { } ] // Find members with the specified region tag value. If none are found, read from any eligible member.
[ { "datacenter": "A" }, { } ] // Find members with the specified datacenter tag value. If none are found, read from any eligible member.
[ { } ] // Find any eligible member.

Se a lista de conjuntos de tags contiver vários documentos, o MongoDB tentará cada documento em sucessão até que uma correspondência seja encontrada. Assim que uma correspondência for encontrada, esse conjunto de tags será usado para localizar todos os membros correspondentes qualificados e os conjuntos de tags restantes serão ignorados. Se nenhum membro corresponder a nenhum dos conjuntos de tags, a operação de leitura retornará com um erro.

Dica

Para evitar um erro se nenhum membro corresponder a qualquer uma das especificações de tag, você pode adicionar um documento vazio { } como o último elemento da lista do conjunto de tags para ler qualquer membro elegível.

Por exemplo, considere a seguinte lista de conjuntos de tags com três conjuntos de tags:

[ { "region": "South", "datacenter": "A" }, { "rack": "rack-1" }, { } ]

Primeiro, MongoDB tenta encontrar membros marcados com "region": "South" e "datacenter": "A".

{ "region": "South", "datacenter": "A" }
  • Se um membro for encontrado, os conjuntos de tags restantes não serão considerados. Em vez disso, o MongoDB usa este conjunto de tags para encontrar todos os membros elegíveis.

  • Else, MongoDB tenta encontrar membros com as tags especificadas no segundo documento

    { "rack": "rack-1" }
    • Se um membro for encontrado marcado, o conjunto de tags restante não será considerado. Em vez disso, o MongoDB usa este conjunto de tags para encontrar todos os membros elegíveis.

    • Else, o terceiro documento é considerado.

      { }

      O documento vazio corresponde a qualquer membro qualificado.

As tags não são compatíveis com o modo primary e, em geral, se aplicam somente ao selecionar um membro secundário de um conjunto para uma operação de leitura. No entanto, o modo de leituranearest, quando combinado com uma lista de conjuntos de tags, seleciona o membro correspondente com a menor latência de rede. Este membro pode ser primário ou secundário.

Modo
Notas
primaryPreferred
A lista de conjuntos de tags especificada só se aplica se forem selecionados secundários qualificados.
A lista de conjuntos de tags especificada sempre se aplica.
A lista de conjuntos de tags especificada só se aplica se forem selecionados secundários qualificados.
A lista de conjuntos de tags especificada se aplica à seleção de secundários primários ou elegíveis.

Para obter informações sobre a interação entre os modos e as listas de conjuntos de tags, consulte a documentação específica do modo de preferência de leitura.

Para obter informações sobre como configurar listas de conjuntos de tags, consulte o tutorial Configurar conjuntos de tags de conjunto de réplicas.

← readPreference