Importante
Característica no disponible en los clústeres Flex
Los clústeres flexibles no admiten esta función actualmente. Para obtener más información, consulte Limitaciones de Atlas Flex.
Fragmentar una colección global para escrituras globales en la interfaz de usuario de Atlas
Nota
Las escrituras globales solo se admiten en clústeres globales, que requieren un
M30+nivel de clúster.Cuando las escrituras globales están habilitadas, los clústeres globales no admiten nodos de búsqueda dedicados.
Puede utilizar la interfaz de usuario de Atlas para fragmentar una colección global solo para clústeres globales con Fragmentación administrada por Atlas habilitada.
Este documento presupone conocimientos previos de la semántica de fragmentación. Revise la documentación de fragmentación antes de continuar con este tutorial.
En clústeres fragmentados, puede crear zonas de datos fragmentados según la clave de fragmentación. Sus zonas pueden segmentar los datos según el área geográfica. Para obtener más información sobre la fragmentación según el área geográfica, consulte Segmentación de datos por ubicación.
La interfaz de usuario de Atlas permite fragmentar colecciones de escritura global solo en clústeres globales que utilizan fragmentación administrada por Atlas. Para fragmentar colecciones que no son de escritura global o colecciones de escritura global que utilizan fragmentación autoadministrada, debe usar o mongosh el código de la aplicación. Para obtener más información, consulte Implementar un clúster fragmentado.
Acceso requerido
Debe tener el Project Owner rol o para el proyecto Atlas del clúster para fragmentar una colección para escrituras globales en la interfaz de usuario de Atlas.Organization Owner
Considerations
Antes de iniciar este procedimiento, revise:
Requisitos de compatibilidad para un clúster global.
Límites de Atlas para claves de fragmentos de clúster global.
Se puede configurar el Fichero en línea para mover los datos a los que se accede con poca frecuencia desde el clúster de Atlas a una instancia federada de base de datos de solo lectura gestionada por MongoDB en lugar de la fragmentación de la colección o actualizar el nivel de clúster. Para obtener más información sobre el fichero en línea, se debe consultar Gestionar archivos en línea.
Tras seleccionar una clave de fragmentación mediante la interfaz de usuario de Atlas, Atlas intenta fragmentar la colección de destino. Durante este periodo, asegúrese de que ningún usuario fragmente la colección manualmente. Si Atlas detecta que la colección de destino se fragmentó con una clave diferente a la seleccionada mediante la interfaz de usuario de Atlas, detiene el proceso y muestra una advertencia para esa colección en la interfaz de usuario de Atlas. Puede hacer clic en Unmanage Collection Para borrar la advertencia. Esta acción elimina la colección de la administración de Atlas, pero conserva intactas la colección subyacente y la clave de fragmento seleccionada manualmente.
Actualizar el valor de la clave del fragmento
Puede actualizar el valor de la clave de fragmento de un documento, a menos que el campo de clave de fragmento sea el _id inmutable. Para obtener más información, consulte Cambiar el valor de la clave de fragmento de un documento.
En MongoDB anterior a 6.0, no se puede actualizar el valor de un campo de clave de fragmento en un documento existente en una colección habilitada para escrituras globales.
Importante
Valores de clave de fragmentos y clústeres globales
En todas las versiones de MongoDB, no se puede volver a fragmentar una colección en un clúster global. Para obtener más información, consulte Fragmentación de colecciones para escrituras globales.
Procedimiento
Para fragmentar una colección en un clúster global:
En Atlas, ve a la página Data Explorer de tu proyecto.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Data Explorer en la sección Database.
El Data Explorer se muestra.
Expande la Advanced Shard Key Configuration sección para especificar cómo fragmentar la colección.
Puede elegir una de las siguientes opciones:
Default | Atlas utiliza el documento que especifica el o los campos como la clave de partición. |
Use unique index as the shard key | Atlas utiliza el índice subyacente para imponer una restricción única en la clave de fragmento de la colección global. |
Use hashed index as the shard key | Atlas distribuye los datos fragmentados de manera uniforme aplicando un hash al segundo campo de la clave fragmentada. Opcionalmente, puede seleccionar Pre-split data for even distribution para especificar si desea realizar la creación y distribución de fragmentos iniciales para una colección vacía o inexistente en función de las zonas y los rangos de zonas definidos para la colección. Si Pre-split data for even distribution selecciona la opción, también puede especificar el número mínimo de fragmentos que se crearán inicialmente al fragmentar una colección vacía con una clave de fragmento con hash. La distribución inicial de fragmentos permite a Atlas configurar rápidamente la fragmentación por zonas. El número de fragmentos que crea Atlas depende del número de zonas que defina. De forma predeterminada, Atlas crea un fragmento por código de ubicación y los distribuye uniformemente entre todos los fragmentos. |
Para obtener más información sobre estas opciones, consulte Referencia de fragmentación de clúster global.
Atlas muestra la clave del fragmento compuesto cerca de la parte superior de la pestaña Global Writes después de configurar la colección.
Referencia de fragmentación de clústeres globales
Las siguientes secciones describen el comportamiento de la fragmentación y cómo habilitarla para Administrar clústeres globales.
Colecciones de fragmentación para escrituras globales
Para los clústeres globales con fragmentación administrada por Atlas habilitada, las colecciones no fragmentadas deben cumplir con los siguientes requisitos de compatibilidad antes de la fragmentación para usar escrituras globales cuando están fragmentadas:
Cada documento de la colección debe incluir un
locationcampo.El valor del
locationcampo debe ser un código de país ISO-3166-1 alfa 2"US""DE""IN"(,,) o un código de subdivisión ISO-3166- compatible (,,).2"US-DC""DE-BE""IN-DL"Los documentos que no cumplan estos criterios no se podrán enrutar a ningún fragmento del clúster. Para ver la lista completa de códigos de país o subdivisión compatibles actualmente, consulte https://cloud.mongodb.com/static/atlas/country_iso_codes.txt.
Una clave de fragmento solo en el location campo podría generar cuellos de botella, especialmente en cargas de trabajo donde un subconjunto de países o subdivisiones recibe la mayoría de las operaciones de escritura. Atlas Global Writes requiere una clave de fragmento compuesta para facilitar la distribución eficiente de los datos fragmentados en el clúster. Las claves de fragmento de Atlas Global Cluster comparten las mismas restricciones que las de MongoDB. Se aplican las siguientes limitaciones de Atlas Global Cluster:
El primer campo de la clave de fragmento compuesto debe ser
locationy no se puede codificar mediante hash.Solo puede haber un campo de clave de fragmento secundario en una clave de fragmento compuesta.
El campo clave de partición secundaria de una clave de partición compuesta puede ser encriptada.
El campo de clave de fragmento secundario no puede ser una matriz.
Para obtener más información sobre:
Para elegir un campo de clave de fragmento secundario y el efecto de las elecciones de clave de fragmento en la distribución de datos, consulte Elección de una clave de fragmento.
Limitaciones de la clave de fragmento, consulte Limitaciones de la clave de fragmento.
Opciones de particionado encriptada disponibles, consulta Opciones de particionado encriptada.
Importante
Cambiar la clave del fragmento
Después de la fragmentación, lo que puedes modificar depende de la versión de MongoDB que ejecutes:
Versión de MongoDB | Modificar claves de fragmento | Modificar valores de clave de fragmento |
|---|---|---|
MongoDB 7.0 | Sí, agregue campos a una clave usando únicamente la interfaz de usuario de Atlas. | Sí |
MongoDB 8.0 | Sí, agregue campos a una clave usando únicamente la interfaz de usuario de Atlas. | Sí |
En todas las versiones de MongoDB, no es posible volver a particionar una colección en un clúster global.
La UI de Atlas admite la creación de colecciones particionadas con validaciones específicas para Escrituras Globales. Para obtener más información, consulte Partición una colección global para escrituras globales en la Interfaz de Usuario de Atlas.
También puede usar mongosh para ejecutar. Después de fragmentar sh.shardCollection() la colección, debe usar la interfaz de usuario de Atlas para habilitar las escrituras globales para esa colección.
ADVERTENCIA: Si particiona una colección que ya tiene un índice de búsqueda de MongoDB, podría experimentar un breve período de resultados de búsqueda incompletos mientras el índice se está compilando en una partición. Además, si añade una partición a una colección ya particionada que contiene un índice de búsqueda de MongoDB, sus queries de búsqueda en esa colección podrían devolver resultados incompletos hasta que se complete el proceso de sincronización inicial en las particiones agregadas. Para obtener más información, consulte el proceso de sincronización inicial.
Para obtener más información sobre cómo fragmentar colecciones a través de la interfaz de usuario de Atlas, consulte Fragmentar una colección global para escrituras globales en la interfaz de usuario de Atlas.
Opciones de fragmentación hash
Las claves de fragmentos utilizan fragmentación en hash y datos predivididos para una distribución uniforme.
Atlas distribuye los datos fragmentados de manera uniforme aplicando un hash al segundo campo de la clave de fragmento si realiza una de las siguientes acciones:
Habilite el uso de claves de fragmentos de índice con hash seleccionando Use hashed index as the shard key en la interfaz de usuario de Atlas.
Configure
isCustomShardKeyHashedmediante la API.
Opcionalmente, puede especificar si desea crear y distribuir fragmentos iniciales para una colección vacía o inexistente. Esta acción se basa en las zonas y los rangos de zonas definidos para la colección. Para ello, realice una de las siguientes acciones:
Seleccione Pre-split data for even distribution en la interfaz de usuario de Atlas.
Establezca
presplitHashedZonemediante la API.
Cuando se crea una colección fragmentada utilizando una clave de fragmento con hash compuesto para clústeres globales, Atlas crea al menos 1 fragmento por código de ubicación e intenta distribuir los fragmentos de manera uniforme entre los fragmentos del clúster.
También puede especificar la cantidad mínima de fragmentos a crear inicialmente al fragmentar una colección vacía con una clave de fragmento con hash mediante la numInitialChunks interfaz de usuariode Atlas o configurando el parámetro a través de la API.
Nota
Si especifica el número de fragmentos por fragmento, Atlas crea al menos el número mínimo de fragmentos especificado, con el mismo número de fragmentos por código de ubicación. Si especifica el número mínimo de fragmentos, Atlas configura la fragmentación por zonas rápidamente, especialmente si ya sabe cómo distribuir geográficamente sus datos antes de la fragmentación.
Error Handling
Si Atlas encuentra un error al fragmentar una colección para escrituras globales, aparece un mensaje en el banner en la parte superior de la pantalla.
Haga clic en See Details para obtener información sobre el error y el espacio de nombres donde se produjo. Aparecerá una ventana modal con el mensaje de error completo y un botón Fix Now.
Haga clic en Close y navegue hasta la colección en la interfaz de usuario de Atlas. También puede hacer clic en el botón Fix Now para acceder a la interfaz de usuario de Atlas de ese clúster.
Haga clic en la pestaña Global Writes para la colección mencionada en el mensaje de error.
Unmanage Collection Haga clic en para cancelar la fragmentación de escrituras globales. Debe tener el rol para
Project Data Access Admincancelarla.
Después de realizar los cambios necesarios en la colección según lo indicado por el mensaje de error, puede iniciar nuevamente el proceso de fragmentación.
Los posibles errores incluyen:
- Ya existe un índice en la clave de partición personalizada.
- Si el campo elegido como la segunda parte de la clave de fragmento compuesto ya está indexado, la operación de fragmentación puede fallar.
- La colección ya está fragmentada.
- Si la colección ya se ha fragmentado manualmente, la operación falla.
- La colección tiene una intercalación por defecto personalizada.
- Una intercalación predeterminada personalizada en la colección puede provocar un error de fragmentación.
Operaciones de escritura en clúster global
Para cada documento en una operación de escritura, MongoDB utiliza el campo location de la clave de fragmento (si está incluida) para determinar la zona a la que se enrutarán los datos. MongoDB selecciona un fragmento asociado a esa zona como destino para la escritura del documento, lo que facilita el almacenamiento de datos geográficamente aislados y segmentados.
Advertencia
Si no se incluye una clave de fragmento en la operación de escritura, o se incluye una clave de fragmento, pero el campo location no está presente, la operación de escritura tendrá éxito, pero los documentos resultantes no se distribuirán.
MongoDB solo garantiza este comportamiento para los documentos insertados que cumplen los criterios definidos en "Colecciones de Fragmentación para Escrituras Globales". En concreto, MongoDB puede enrutar un documento cuyo location campo no cumpla con las normas ISO-3166-1 alfa 2 o ISO-3166-2 a cualquier fragmento del clúster.
Operaciones de lectura de clúster global
El enrutamiento de consultas location 31661 2 "US""DE""IN" 31662 "US-DC""DE-BE""IN-DL"de MongoDB depende de si la operación de lectura incluye la clave de fragmento completa y de que el valor corresponda a un código de país ISO- - alfa compatible (,,) o un código de subdivisión ISO- - compatible (,,).
Para las consultas que incluyen la clave de fragmento completa y cuyo valor
locationcumple con los requisitos para escrituras globales, MongoDB dirige la operación de lectura a la zona que se asigna al valor o valoreslocationespecificados en la consulta.Para las operaciones de lectura que no incluyen el
locationvalor, o si ellocationvalor no corresponde a un código de país ISO-3166-1 alfa o un código 2 de subdivisión ISO-3166-2 compatible, MongoDB debe transmitir la operación de lectura a todas las zonas del clúster.Para las zonas de escrituras globales que tienen Read-only nodos en regiones geográficamente distantes, los clientes en esas regiones pueden consultar el Read-only nodo local para esa zona especificando la clave de fragmento completa como parte de la consulta y emitiendo la operación de lectura con una preferencia de
nearestlectura de.
Importante
Las lecturas secundarias pueden devolver datos obsoletos dependiendo del nivel de retraso de replicación entre el nodo secundario y el primario.
Para obtener más información, consulte Preferencia de lectura de MongoDB y Enrutamiento de consultas de MongoDB.
Fragmentación de colecciones sin escrituras globales
Los clústeres de escrituras globales admiten las mismas estrategias de fragmentación por rango y hash que un clúster de Atlas estándar. Para las colecciones fragmentadas cuyas claves y esquema de documento no admiten escrituras globales, MongoDB distribuye los datos fragmentados uniformemente entre los fragmentos disponibles del clúster, según la clave seleccionada. Considere usar un clúster de fragmentación independiente para los datos que no pueden aprovechar las escrituras globales.
No se puede modificar una colección para que admita escrituras globales después de la fragmentación. Le recomendamos que elija una clave de fragmentación que le permita usar escrituras globales para una colección en el futuro.
Tip
Para obtener más información sobre los requisitos de fragmentación de escrituras globales, consulte Colecciones de fragmentación para escrituras globales.
Colecciones no fragmentadas en clústeres de escritura global
Los clústeres globales ofrecen la misma compatibilidad con colecciones no fragmentadas que un clúster Atlas fragmentado estándar. Para cada base de datos del clúster, MongoDB almacena sus colecciones no fragmentadas en un fragmento principal. Utilice sh.status() de para determinar el fragmento principal de la base de mongosh datos.