Nota
Esta función no está disponible para M0 Clústeres gratuitos y clústeres Flex. Para obtener más información sobre las funciones que no están disponibles, consulte Límites de Atlas M0 (clúster libre).
Los clústeres Atlas se configuran con etiquetas de conjunto de réplicas predefinidas para los diferentes tipos de miembros del clúster. Puede utilizar estas etiquetas para dirigir consultas desde aplicaciones específicas a tipos de nodos, regiones y zonas de disponibilidad específicos. Estas etiquetas le permiten personalizar leer preferencias para un conjunto de réplicas, mejorando así el rendimiento y la confiabilidad del clúster.
Nota
Estas etiquetas de conjunto de réplicas predefinidas difieren de las etiquetas de recursos que usted proporciona y administra. No puede modificar estas etiquetas de conjunto de réplicas que proporciona Atlas.
Para utilizar etiquetas de conjunto de réplicas predefinidas en su cadena de conexión y dirigir consultas a nodos específicos, utilice las siguientes opciones de cadena de conexión:
readPreferencereadPreferenceTagsreadConcernLevel
Para ver ejemplos, consulte Casos de uso y ejemplos.
Descripciones de etiquetas predeterminadas de conjuntos de réplicas
La siguiente tabla describe las etiquetas de conjuntos de réplicas predefinidas que proporciona Atlas.
Nombre de etiqueta predefinido | 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 Azure para la zona. Azure solo admite zonas de disponibilidad en un subconjunto de regiones. Atlas proporciona etiquetas predefinidas de zona de disponibilidad para Azure solo en las regiones que admiten zonas de disponibilidad. Para aprender más, consulta Microsoft Azure. Para obtener más información sobre los posibles valores |
|
Tipo de nodo | Tipo de nodo. Los valores posibles son:
Para obtener más información, consulte Tipos de nodos. |
|
Proveedor | Proveedor de nube en el cual se aprovisiona el nodo. Los valores posibles son:
|
|
Región |
| |
Tipo de carga de trabajo | Etiqueta de conjunto de réplicas predefinida para distribuir su carga de trabajo de manera uniforme entre sus nodos no analíticos (elegibles o de solo lectura). Los valores posibles son:
|
|
Estado del disco |
|
Estados del disco
La siguiente tabla describe los posibles valores diskState en las etiquetas de conjunto de réplicas predefinidas.
Estado del disco | Descripción |
|---|---|
| Apunta únicamente a nodos cálidos. Puede ejecutar consultas sin experimentar una latencia mayor o impredecible. |
Para ver un ejemplo de esta etiqueta de conjunto de réplicas, consulte Reducir el impacto del calentamiento del disco secundario.
Tipos de nodos
La siguiente tabla describe los posibles valores nodeType en las etiquetas de conjunto de réplicas predefinidas.
Tipo de nodo | Descripción |
|---|---|
| |
| Leer desde nodos de solo lectura. Los nodos |
| Leer desde nodos de análisis de solo lectura. |
Para aprender a configurar nodos elegibles, de solo lectura y de análisis para su clúster, consulte 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.
Casos de uso y ejemplos
Considere los siguientes escenarios en los que sería beneficioso utilizar etiquetas de conjuntos de réplicas predefinidas y consulte las cadenas de conexión de muestra correspondientes.
Importante
Alta disponibilidad para consultas 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 del nodo 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 del disco
Cualquier cambio de nivel de clúster NVMe
Para mitigar estos riesgos, asegúrese de que su cadena de conexión incluya varias etiquetas de preferencia de lectura para ofrecer opciones de respaldo, de modo que Atlas pueda enrutar las lecturas analíticas a los nodos disponibles durante tales eventos. 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:
La aplicación primero intenta conectarse a un nodo etiquetado
nodeType:ANALYTICS.Si no hay ningún nodo disponible, el último
readPreferenceTags=vacío permite que la aplicación se conecte a cualquier nodo secundario disponible.
Nota
Cada una de las siguientes cadenas de conexión de ejemplo emplea la readConcernLevel=local opción. Especificar una preocupación de lectura local garantiza que las lecturas secundarias en clústeres fragmentados no devuelvan documentos huérfanos. No es necesario especificar esta opción al conectarse a conjuntos de réplicas no fragmentados.
Utilice nodos de análisis para aislar cargas de trabajo
Si una aplicación realiza operaciones complejas o de larga duración, como ETL o informes, es posible que desee aislar las consultas de la aplicación del resto de su carga de trabajo operativa conectándose exclusivamente a nodos de análisis.
Considere 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=secondaryreadPreferenceTags=nodeType:ANALYTICSreadConcernLevel=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.
Aislar las lecturas secundarias de la aplicación normal de los nodos de análisis
Es posible que desee aislar las lecturas regulares de la aplicación de la carga de trabajo en los nodos de análisis.
Considere 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=secondaryreadPreferenceTags=workloadType:OPERATIONALreadConcernLevel=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.
Lecturas locales de destino para aplicaciones distribuidas geográficamente
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 prioriza las conexiones a la US_EAST_1 región AWS, seguida de la US_EAST_2 región:
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=nearestreadPreferenceTags=provider:AWS,region:US_EAST_1readPreferenceTags=provider:AWS,region:US_EAST_2readPreferenceTags=readConcernLevel=local
Atlas considera cada etiqueta de preferencia de lectura en el orden especificado. Después de asociar un nodo con una etiqueta, encuentra todos los nodos elegibles que coincidan con esa etiqueta. Atlas ignora cualquier readPreferenceTags posterior.
En este ejemplo, la aplicación primero intenta conectarse a un nodo en la región de US_EAST_1 AWS. Si no hay ningún nodo disponible en esa región, la aplicación intenta conectarse a un nodo en la región de US_EAST_2 AWS.
El último readPreferenceTags= (vacío) ofrece una opción de respaldo. Con un readPreferenceTags= vacío, la aplicación puede conectarse a cualquier nodo disponible, independientemente del proveedor o la 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
Puede orientar aún más las lecturas en función de las zonas de disponibilidad.
Tip
Para obtener información adicional y casos de uso para diversas preferencias de lectura, consulte la página Preferencias de lectura en el Manual de MongoDB.
Reducir el impacto del calentamiento del disco secundario
Cuando Atlas añade o reemplaza un nodo en el clúster, realiza el precalentamiento del disco de forma predeterminada. Durante este proceso, el volumen de almacenamiento recién creado experimenta un uso intensivo de IOPS. Esto ralentiza las operaciones de lectura realizadas en este nodo. Por lo tanto, durante el precalentamiento del disco, Atlas mantiene oculto el nodo de precalentamiento de forma predeterminada, impidiéndole participar en operaciones de lectura.
Si prefiere que un nodo recién agregado o reemplazado se vuelva inmediatamente activo y visible, puede optar por deshabilitar el precalentamiento rápido del disco y evitar operaciones de lectura en un nodo de calentamiento mediante 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=secondaryreadPreferenceTags=diskState:READYreadConcernLevel=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.
Recuperar zonas de disponibilidad
Atlas proporciona etiquetas de conjuntos de réplicas predefinidas para las zonas de disponibilidad de forma predeterminada. Estas etiquetas incluyen el ID de la zona de disponibilidad de AWS, el nombre completo de Google Cloud para una zona o el número de zona de Azure. Puede comprobar la zona de disponibilidad de un nodo mediante el rs.conf() método de shell o consultando el último ping del nodo del clúster.
Ejemplo
... "tags": { "availabilityZone": "use2-az2", ...
Problemas de escritura personalizada integrada
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.
Las preocupaciones de escritura personalizadas integradas de Atlas pueden ayudar a mejorar la consistencia de los datos al garantizar que sus operaciones se propaguen a una cantidad determinada de regiones para tener éxito.
Para utilizar una inquietud de escritura personalizada, especifique la inquietud de escritura en el documento de inquietud de escritura de su operación.
Atlas proporciona las siguientes preocupaciones de escritura personalizadas para clústeres multirregionales:
Nivel de confirmación de escritura | Etiquetas | Descripción |
|---|---|---|
|
| Las operaciones de escritura deben ser reconocidas por al menos dos regiones de su clúster. |
|
| Las operaciones de escritura deben ser reconocidas por al menos tres regiones de su clúster. |
|
| Las operaciones de escritura deben ser reconocidas por al menos dos regiones de su clúster con distintos proveedores de nube. |
Ejemplo
Considere un clúster multirregional con tres regiones: us-east-,1 us-east-2 y us-west-.1 Quiere que las operaciones de escritura se propaguen a las tres regiones del 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 de preocupación de escritura { w: "threeRegions" }:
db.employees.insertOne( { name: "Bob Smith", company: "MongoDB" }, { writeConcern: { w: "threeRegions", j: true } } )