Docs Menu
Docs Home
/ /
/ / /

Listas de conjuntos de etiquetas de preferencia de lectura

Si uno o varios miembro de un set de réplicas están asociados con tags, puedes especificar una lista de conjuntos de etiquetas (arreglo de conjuntos de etiquetas) en la preferencia de lectura para dirigir esos miembros.

Para configurar a un nodo con etiquetas, configura members[n].tags en un documento que contenga los nombres y valores de las etiquetas. El valor de las etiquetas debe ser una string.

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

Luego, puedes incluir una lista de conjuntos de etiquetas en la preferencia de lectura para dirigirte a los miembros etiquetados. Una lista de conjuntos de etiquetas es un arreglo de conjuntos de etiquetas, donde cada conjunto de etiquetas contiene uno o más pares de etiqueta/valor.

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

Para encontrar miembros del set de réplicas, MongoDB prueba cada documento sucesivamente hasta encontrar una coincidencia. Ver Orden de coincidencia de etiquetas para más detalles.

Por ejemplo, si un miembro secundario tiene el siguiente members[n].tags:

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

A continuación, los siguientes conjuntos de etiquetas pueden dirigir las operaciones de lectura al mencionado secundario (u otros nodos con las mismas etiquetas):

[ { "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.

Si la lista de conjuntos de etiquetas contiene varios documentos, MongoDB prueba cada documento en sucesión hasta encontrar una coincidencia. Una vez que se encuentra una coincidencia, ese conjunto de etiquetas se usa para encontrar a todos los nodos coincidentes elegibles, y se ignoran los conjuntos de etiquetas restantes. Si ningún nodos coincide con ninguno de los conjuntos de etiquetas, la operación de lectura devuelve un error.

Tip

Para evitar un error si ningún nodo coincide con ninguna de las especificaciones de las etiquetas, puedes añadir un documento vacío { } como último elemento de la lista del conjunto de etiquetas para leer desde cualquier nodo elegible.

Por ejemplo, considere la siguiente lista de conjuntos de etiquetas con tres conjuntos de etiquetas:

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

Primero, MongoDB intenta encontrar nodos etiquetados tanto con "region": "South" como con "datacenter": "A".

{ "region": "South", "datacenter": "A" }
  • Si se encuentra un nodo, los conjuntos de etiquetas restantes no se consideran. En su lugar, MongoDB utiliza este conjunto de etiquetas para encontrar a todos los nodos elegibles.

  • De lo contrario, MongoDB intenta encontrar nodos con las etiquetas especificadas en el segundo documento

    { "rack": "rack-1" }
    • Si se encuentra a un nodo etiquetado, el conjunto de etiquetas restante no se considera. En su lugar, MongoDB utiliza este conjunto de etiquetas para encontrar a todos los nodos elegibles.

    • De lo contrario, se considera el tercer documento.

      { }

      El documento vacío coincide con cualquier nodo elegible.

Las etiquetas no son compatibles con el modo primary, y en general, solo se aplican cuando se selecciona un secundario miembro de un conjunto para una operación de lectura. Sin embargo, el modo de lectura nearest, cuando se combina con una lista de conjuntos de etiquetas, selecciona el nodo coincidente con la menor latencia de red. Este nodo puede ser primario o secundario.

Modo
notas

La lista de conjuntos de etiquetas especificada solo se aplica si se seleccionan opciones secundarias elegibles.

La lista de conjuntos de etiquetas especificada siempre se aplica.

La lista de conjuntos de etiquetas especificada solo se aplica si se seleccionan opciones secundarias elegibles.

La lista especificada de conjuntos de etiquetas se aplica tanto si se selecciona secundarios primarios como secundarios elegibles.

Para obtener información sobre la interacción entre los modos y las listas de conjuntos de etiquetas, consulta la documentación del modo de preferencia de lectura específica.

Para obtener información sobre cómo configurar listas de conjuntos de etiquetas, consulta el tutorial Configurar conjuntos de etiquetas de conjunto de réplicas.

Volver

Casos de uso

En esta página