Importante
Característica no disponible en los clústeres Flex
Los clústeres flexibles no admiten esta funcionalidad en este momento. Para obtener más información, consulte Limitaciones de Atlas Flex.
Crea una partición en una colección global para operaciones de escritura 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 Atlas-particionado gestionado, habilitada.
Este documento supone conocimientos previos sobre la semántica de particionado. Revise la documentación de particionado antes de continuar con este tutorial.
En clústeres particionados, puedes crear zonas de datos particionados basados en la clave de partición. Sus zonas pueden segmentar datos según la zona geográfica. Para obtener más información sobre particionado 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
Debes tener el rol Project Owner o el rol Organization Owner para el proyecto Atlas del clúster para fragmentar una colección para Global Writes en la interfaz de usuario de Atlas.
Considerations
Antes de empezar este procedimiento, revise:
Requisitos de compatibilidad para un clúster global.
Límites de Atlas para claves de partición 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 de partición
Puedes actualizar el valor de la clave de partición de un documento a menos que el campo de la clave de partición sea el campo inmutable _id. Para obtener más información, consulta Cambiar el valor de la clave de partición de un Documento.
En MongoDB anterior a la versión 6.0, no es posible actualizar el valor de un campo clave de partición en un documento existente en una colección habilitada para Global Writes.
Importante
Valores de la clave de partición y clústeres globales
En todas las versiones de MongoDB, no puedes reparticionar una colección en un Clúster Global. Para obtener más información, consulta Particionado de colecciones para escrituras globales.
Procedimiento
Para particionar 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 sección Advanced Shard Key Configuration para especificar cómo particionar 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 usa el índice subyacente para aplicar una restricción única sobre la clave de partición de la colección Global. |
Use hashed index as the shard key | Atlas distribuye los datos particionados de forma uniforme al hacer hash del segundo campo de la clave de partición. 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, consulta Referencia sobre particionado de clúster global.
Atlas muestra la clave compuesta de fragmento 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.
Particionando colecciones para escrituras globales
Para los clústeres globales con particionado gestionado por Atlas habilitado, las colecciones no particionadas deben cumplir con los siguientes requisitos de compatibilidad antes del particionado para utilizar escrituras globales cuando estén particionadas:
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 partición en el campo location por sí sola podría provocar cuellos de botella, especialmente para las cargas de trabajo en las que una parte de los países o subdivisiones recibe la mayoría de las operaciones de escritura. Atlas Global Writes requiere una clave de partición compuesta para facilitar la distribución eficiente de datos particionados en el clúster. Las claves de partición de Atlas clúster global comparten las mismas restricciones que las claves de partición de MongoDB. Se aplican las siguientes limitaciones del clúster global de Atlas:
El primer campo de la clave de partición debe ser
locationy no puede ser encriptada.Solo puede haber un campo de clave de partición secundaria en una clave de partición compuesta.
El campo clave de partición secundaria de una clave de partición compuesta puede ser encriptada.
El campo de clave de partición secundario no puede ser un arreglo.
Para obtener más información sobre:
Para elegir un campo de clave de partición secundaria y el efecto de la elección de clave de partición en la distribución de datos, consulta Elegir una clave de partición.
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 realizar el particionado, lo que se puede modificar depende de la versión de MongoDB que estés usando:
Versión de MongoDB | Modificar las claves de la clave de partición | Modificar valores de la clave de partición |
|---|---|---|
MongoDB 7.0 | Sí, agregar campos a una clave utilizando únicamente la Interfaz de Usuario de Atlas. | Sí |
MongoDB 8.0 | Sí, agregar campos a una clave utilizando únicamente la Interfaz de Usuario de Atlas. | Sí |
En todas las versiones de MongoDB, no puedes reparar 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 puedes utilizar mongosh para ejecutar el sh.shardCollection(). Tras particionar la colección, debe utilizar la Interfaz de Usuario de Atlas para habilitar guardados 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 particionar colecciones a través de la Interfaz de Usuario de Atlas, consulte Particiona 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, puedes especificar si debes realizar la creación y distribución inicial de fragmentos para una colección vacía o inexistente. Esta acción se basa en las zonas definidas y los rangos de zonas para la colección. Para ello, realiza una de las siguientes acciones:
Selecciona 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 el número mínimo de fragmentos a crear inicialmente al fragmentar una colección vacía con una clave de partición con hash utilizando la Interfaz de Usuario de Atlas o configurando el parámetro numInitialChunks a través de la API.
Nota
Si especificas el número de fragmentos por partición, Atlas crea al menos el número mínimo de fragmentos que especificaste, con el mismo número de fragmentos por código de ubicación. Si especificas el número mínimo de fragmentos, Atlas configura el particionamiento zonificado rápidamente, especialmente si ya sabes cómo distribuir tus datos geográficamente antes del particionamiento.
Error Handling
Si Atlas encuentra un error al particionar una colección para guardados globales, aparecerá un mensaje en la barra superior de la pantalla.
Haz clic en See Details para aprender sobre el error y el namespace donde ocurrió el error. Aparece una ventana modal con el mensaje de error completo y un botón Fix Now.
Haz clic en Close y navega a la colección en la interfaz de usuario de Atlas. También puedes hacer clic en el botón Fix Now para ir a la Interfaz de Usuario de Atlas para ese clúster de Atlas.
Haga clic en la pestaña Global Writes para la colección mencionada en el mensaje de error.
Haga clic en Unmanage Collection para cancelar la operación de particionamiento de escrituras globales. Debes tener el rol
Project Data Access Adminpara cancelar la operación de particionado.
Después de realizar los cambios necesarios en la colección según lo indicado por el mensaje de error, se puede iniciar de nuevo el proceso de particionado.
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 partición compuesta ya está indexado, la operación de particionado podría 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 guardar del clúster global
Para cada documento en una operación de escritura, MongoDB utiliza el campo location de la clave de partición (si se incluye) para determinar la zona a la que se debe enrutar el dato. MongoDB selecciona una partición asociada a esa zona como destino para escribir el documento, facilitando el almacenamiento de datos segmentado y aislado geográficamente.
Advertencia
Si una clave de partición no se incluye en la operación de escritura, o se incluye una clave de partición pero no está presente el campo location, la operación de escritura se realizará con éxito, pero los documentos resultantes no se distribuirán.
MongoDB solo puede garantizar este comportamiento para los documentos insertados que cumplan los criterios definidos en Fragmentar colecciones para escrituras globales. Específicamente, MongoDB puede enrutar un documento cuyo campo location no cumpla con ISO-3166-1 alpha 2 o ISO-3166-2 a cualquier partición en el 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 consultas que sí incluyen la clave completa de partición y cuyo valor
locationcumple con los requisitos para Global Writes, MongoDB dirige la operación de lectura a la zona que mapea el o los valoreslocationespecificados en la consulta.Para las operaciones de lectura que no incluyen el valor
location, o si el valorlocationno corresponde a un ISO-3166-1 alpha 2 code de país con soporte o un ISO-3166-2 code de subdivisión, MongoDB debe difundir la operación de lectura a cada zona en el clúster.Para las zonas de escritura global que tienen Read-only nodos en regiones geográficamente distantes, los clientes en esas regiones pueden consultar el nodo local Read-only para esa zona especificando la clave de partición completa como parte de la query y realizar la operación de lectura con una preferencia de lectura a
nearest.
Importante
Las lecturas secundarias podrían devolver datos obsoletos según el nivel de atraso de la replicación entre el nodo secundario y el principal.
Para obtener más información, consulta Preferencia de lectura de MongoDB y Enrutamiento de query de MongoDB.
Colecciones con particionado sin escrituras globales
Los clústeres con Escrituras Globales admiten las mismas estrategias de partición clasificado por rango y encriptada que un clúster de Atlas estándar. Para las colecciones particionadas cuyos claves de partición y esquemas de documentos no admiten escritura global, MongoDB distribuye los datos particionados de manera uniforme entre las particiones disponibles en el clúster con respecto a la clave de partición elegida. Considera utilizar un clúster fragmentado separado para los datos que no pueden aprovechar 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 particionado de escrituras globales, consulta Particionado de colecciones para escrituras globales.
Colecciones sin particiones en clústeres globales de escritura
Los Clústeres globales ofrecen el mismo soporte para colecciones no fragmentadas que un clúster sharded estándar de Atlas. Para cada base de datos en el clúster, MongoDB almacena sus colecciones no fragmentadas en una partición primaria. Utilice sh.status() de mongosh para determinar la partición primaria de la base de datos.