Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Realiza un query mediante etiquetas de set de réplicas predefinidas

Nota

Esta funcionalidad no está disponible para clústeres gratuitos ni flexibles. Para aprender más sobre qué funcionalidades no están disponibles, consulte Límites del clúster gratuito de Atlas.

Los clústeres de Atlas están configurados con etiquetas de set de réplicas predefinidas para diferentes tipos de nodos en el clúster. Puedes utilizar estas etiquetas predefinidas de set de réplicas para orientar las queries de aplicaciones específicas a tipos de nodos específicos, regiones y zonas de disponibilidad. Estas etiquetas predefinidas de sets de réplicas permiten personalizar las preferencias de lectura para un set de réplicas, mejorando así el rendimiento y la confiabilidad del clúster.

Nota

Estas etiquetas de set de réplicas predefinidas difieren de las etiquetas de recursos que usted proporciona y administra. No puedes cambiar estas etiquetas de sets de réplicas que Atlas proporciona.

Para utilizar etiquetas predefinidas de set de réplicas en tu cadena de conexión y dirigir las queries a nodos específicos, utiliza las siguientes opciones de la cadena de conexión:

  • readPreference

  • readPreferenceTags

  • readConcernLevel

Para ejemplos, consulta Casos de Uso y Ejemplos.

La siguiente tabla describe las etiquetas de set de réplicas predeterminadas que Atlas proporciona.

Nombre de etiqueta predefinida
Descripción
Ejemplo

Zona de disponibilidad

ID de AWS para la zona de disponibilidad, nombre completamente calificado de Google Cloud para una zona, o número de zona de Azure.

Azure solo admite zonas de disponibilidad en un subconjunto de regiones. Atlas proporciona etiquetas predefinidas de zonas de disponibilidad para Azure solo en regiones que admiten zonas de disponibilidad. Para aprender más, consulta Microsoft Azure.

Para obtener más información sobre los posibles valores availabilityZone para cada proveedor de nube, consulta la documentación del proveedor:

  • AWS:{"availabilityZone" : "us-east-1a"}

  • Google Cloud Platform: {"availabilityZone" : "us-east1-b"}

  • Azure: {"availabilityZone" : "1"}

Tipo de nodo

Tipo de nodo.

Los valores posibles son:

  • ELECTABLE

  • READ_ONLY

  • ANALYTICS

Para obtener más información, consulte Tipos de nodos.

{"nodeType" : "ANALYTICS"}

Proveedor

Proveedor de nube en el cual se aprovisiona el nodo.

Los valores posibles son:

  • AWS

  • GCP

  • AZURE

{"provider" : "AWS"}

Región

Región de la nube en la que reside el nodo.

Para obtener una lista completa de los posibles valores de region, consulta la página de referencia de tu proveedor de nube:

{"region" : "US_EAST_2"}

Tipo de carga de trabajo

Etiqueta de set de réplicas predefinida para distribuir su carga de trabajo entre sus nodos no de análisis (elegibles o de solo lectura) de manera uniforme.

Los valores posibles son:

  • OPERATIONAL

{"workloadType" : "OPERATIONAL"}

Estado del disco

Estado de tu disco.

Valor posible: READY

Para obtener más información, consulta Estados de discos.

{"diskState" : "READY"}

La siguiente tabla describe los posibles valores de diskState en tus etiquetas de set de réplicas predefinidas.

Estado del disco
Descripción

READY

Solo apunte a nodos *calientes* de destino.

Se pueden ejecutar queries sin experimentar una latencia mayor o impredecible.

Para un ejemplo de esta etiqueta de set de réplicas, consulta Reducir el impacto de calentamiento de discos secundarios.

La siguiente tabla describe los posibles valores de nodeType en tus etiquetas de set de réplicas predefinidas.

Tipo de nodo
Descripción

ELECTABLE

Leer de los nodos elegibles para ser elegidos como primarios. ELECTABLE los nodos corresponden a Electable nodes for high availability en el interfaz de usuario de creación de clústeres.

READ_ONLY

Leer desde nodos de solo lectura. READ_ONLY nodos corresponden a Read-only nodes for optimal local reads en la Interfaz de Usuario de creación de clúster.

ANALYTICS

Lee desde nodos de análisis de solo lectura. Los nodos ANALYTICS corresponden a Analytics nodes for workload isolation en la interfaz de usuario de creación de clústeres.

Para aprender a configurar los nodos electables, de solo lectura y de análisis para tu clúster, consulta Configurar alta disponibilidad y aislamiento de carga de trabajo.

Tip

Para obtener detalles sobre cómo estas etiquetas pre-definidas de set de réplicas corresponden a las preferencias de lectura del conector BI de Atlas, consulta la sección de opciones de clúster del BI Connector en la página Crear un clúster.

Considera los siguientes escenarios en los que sería beneficioso utilizar etiquetas predefinidas de sets de réplicas y consulta las cadenas de conexión de muestra correspondientes.

Importante

Alta disponibilidad para queries de nodos de análisis

Para las lecturas dirigidas a nodos analíticos con etiquetas como readPreferenceTags=nodeType:ANALYTICS, la resiliencia es crucial cuando la disponibilidad de los nodos fluctúa. Sin etiquetas de respaldo, las consultas pueden fallar durante:

  • Sincronización inicial durante la compactación de datos

  • Eventos de reducción de escala de disco

  • Cualquier cambio en el nivel de clúster NVMe

Para mitigar estos riesgos, asegúrate de que tu cadena de conexión incluya múltiples etiquetas de preferencia de lectura para proporcionar opciones alternativas, de modo que Atlas pueda redirigir las lecturas analíticas a los nodos disponibles durante eventos como estos. Por ejemplo:

db+srv://<db_username>:<db_password>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=nodeType:ANALYTICS,priority:1&readPreferenceTags=&readConcernLevel=local

En este ejemplo:

  1. La aplicación primero intenta conectarse a un nodo etiquetado nodeType:ANALYTICS.

  2. Si no hay nodos de ese tipo disponible, el último vacío readPreferenceTags= permite a la aplicación conectarse a cualquier nodo secundario disponible.

Nota

Cada una de las siguientes cadenas de conexión de ejemplo emplea la opción de cadena de conexión readConcernLevel=local. Especificar un nivel de consistencia de lectura local garantiza que las lecturas secundarias en clústeres particionados no devuelvan documentos huérfanos. No es necesario especificar esta opción al conectarse a sets de réplicas no particionados.

Si una aplicación realiza operaciones complejas o de larga duración, como ETL o reportes, quizá debas aislar las queries de la aplicación del resto de tu carga de trabajo operativa conectándote exclusivamente a nodos de análisis.

Consideremos la siguiente cadena de conexión:

mongodb+srv://<db_username>:<db_password>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=nodeType:ANALYTICS&readConcernLevel=local

Las opciones de la cadena de conexión aparecen en el siguiente orden:

  • readPreference=secondary

  • readPreferenceTags=nodeType:ANALYTICS

  • readConcernLevel=local

La opción readPreference de secondary y la opción readPreferenceTag de { nodeType : ANALYTICS } limitan las conexiones de la aplicación a los nodos analíticos.

Quizá se quiera aislar las lecturas normales de las aplicaciones de la carga de trabajo en los nodos de análisis.

Consideremos la siguiente cadena de conexión:

mongodb+srv://<db_username>:<db_password>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=workloadType:OPERATIONAL&readConcernLevel=local

Las opciones de la cadena de conexión aparecen en el siguiente orden:

  • readPreference=secondary

  • readPreferenceTags=workloadType:OPERATIONAL

  • readConcernLevel=local

Las opciones especificadas impiden que su aplicación lea de los nodos de análisis. La aplicación debe leer desde los nodos operational, o nodos que no son de análisis.

Utiliza etiquetas de set de réplicas predefinidas para dirigir lecturas locales a regiones específicas en aplicaciones distribuidas globalmente. Previo a la introducción de estas etiquetas de set de réplicas predefinidas, las lecturas locales para aplicaciones distribuidas globalmente dependían de calcular correctamente la preferencia de lectura más cercana. Con las etiquetas predefinidas del set de réplicas, especificar etiquetas geográficas adecuadas en combinación con una moda de preferencia de lectura de nearest proporciona un comportamiento más coherente.

La siguiente cadena de conexión da prioridad a las conexiones a la región AWS US_EAST_1, seguida por la región US_EAST_2:

mongodb+srv://<db_username>:<db_password>@foo-q8x1v.mycluster.com/test?readPreference=nearest&readPreferenceTags=provider:AWS,region:US_EAST_1&readPreferenceTags=provider:AWS,region:US_EAST_2&readPreferenceTags=&readConcernLevel=local

Las opciones de la cadena de conexión aparecen en el siguiente orden:

  • readPreference=nearest

  • readPreferenceTags=provider:AWS,region:US_EAST_1

  • readPreferenceTags=provider:AWS,region:US_EAST_2

  • readPreferenceTags=

  • readConcernLevel=local

Atlas considera cada etiqueta de preferencia de lectura en el orden que especifiques. Después de que Atlas asocia un nodo con una etiqueta, encuentra todos los nodos elegibles que coinciden con esa etiqueta. A continuación, Atlas ignora todos los readPreferenceTags siguientes.

En este ejemplo, la aplicación primero intenta conectarse a un nodo en la región AWS US_EAST_1. Si no hay nodos disponibles en esa región, la aplicación intenta conectarse a un nodo en la región AWS US_EAST_2.

El (vacío) readPreferenceTags= final proporciona una opción de emergencia. Con una opción readPreferenceTags= vacía, la aplicación puede conectarse a cualquier nodo disponible independientemente del proveedor o región.

Estas opciones ayudan a garantizar que la aplicación se conecte a la región geográfica más cercana para reducir la latencia y mejorar el rendimiento.

Nota

Puedes realizar una segmentación adicional de lecturas según las zonas de disponibilidad.

Tip

Para información adicional y casos de uso para varias preferencias de lectura, consulta la página de Preferencias de Lectura en el Manual de MongoDB.

Cuando Atlas agrega o reemplaza un nodo en tu clúster, realiza de forma predeterminada un precalentamiento del disco. Durante el proceso de precalentamiento del disco, el volumen de almacenamiento recién creado experimenta un período de uso intensivo de IOPS. Esto ralentiza las operaciones de lectura realizadas en este nodo. Por lo tanto, durante el proceso de pre-acondicionamiento del disco, Atlas mantiene oculto el nodo de pre-acondicionamiento por defecto, impidiendo que participe en cualquier operación de lectura.

Si prefiere que un nodo recién añadido o reemplazado se active y sea visible de inmediato, puede optar por desactivar el precalentamiento rápido del disco y evitar operaciones de lectura en un nodo en calentamiento utilizando una cadena de conexión como en el siguiente ejemplo:

mongodb+srv://<db_username>:<db_password>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=diskState:READY&readConcernLevel=local

Las opciones de la cadena de conexión aparecen en el siguiente orden:

  • readPreference=secondary

  • readPreferenceTags=diskState:READY

  • readConcernLevel=local

La opción readPreference de secondary y la opción readPreferenceTag de { diskState : READY } le indican a Atlas que solo apunte a nodos activos.

Atlas proporciona etiquetas de sets de réplicas predefinidas para las zonas de disponibilidad por defecto. Estas etiquetas incluyen el ID de zona de disponibilidad de AWS, el nombre totalmente calificado de Google Cloud para una zona o el número de zona Azure. Puedes verificar la zona de disponibilidad de un nodo utilizando el método de shell rs.conf() o visualizando el último ping del nodo del clúster.

Ejemplo

...
"tags": {
"availabilityZone": "use2-az2",
...

Atlas proporciona niveles de confirmación de escritura (write concern) personalizados de funcionalidad incorporada para clústeres multiregionales. El nivel de confirmación de escritura (write concern) describe el nivel de reconocimiento solicitado a MongoDB para operaciones de escritura en un clúster.

Los niveles de confirmación de escritura (write concerns) personalizados incorporados de Atlas pueden ayudar a mejorar la coherencia de los datos al garantizar que las operaciones se propaguen a un número determinado de regiones para que tengan éxito.

Para usar un nivel de confirmación de escritura (write concern) personalizado, especifica el nivel de confirmación de escritura (write concern) en el documento de nivel de confirmación de escritura (write concern) de tu operación.

Atlas proporciona los siguientes niveles de confirmación de escritura (write concern) personalizados para clústeres multiregionales:

Nivel de confirmación de escritura
etiqueta
Descripción

twoRegions

{ region: 2 }

Las operaciones de escritura deben ser reconocidas por al menos dos regiones en el clúster.

threeRegions

{ region: 3 }

Las operaciones de escritura deben ser reconocidas por al menos tres regiones en tu clúster.

twoProviders

{ provider: 2 }

Las operaciones de escritura deben ser reconocidas por al menos dos regiones en tu clúster con diferentes proveedores de nube.

Ejemplo

Considera un clúster multiregional en tres regiones: us-east-1, us-east-2 y us-west-1. Deben propagarse las operaciones de guardar a las tres regiones de tu clúster antes de que Atlas las acepte.

La siguiente operación inserta un documento y requiere que la operación se propague a las tres regiones debido al objeto { w: "threeRegions" } nivel de confirmación de escritura (write concern):

db.employees.insertOne(
{ name: "Bob Smith", company: "MongoDB" },
{ writeConcern: { w: "threeRegions", j: true } }
)