Se um nĂł ou nĂłs do conjunto de rĂ©plicas estiverem associados a tags, vocĂȘ poderĂĄ especificar uma lista de conjuntos de marcaçÔes (array de conjuntos de marcaçÔes) na read preference para segmentar estes nĂłs.
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.
Ordem de correspondĂȘncia de tags
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.
Lista de conjuntos de tags e modos de preferĂȘncia de leitura
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 |
|---|---|
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.