Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Particionar una colección global

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.

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.

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.

Antes de empezar este procedimiento, revise:

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.

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.

Para particionar una colección en un clúster global:

1
  1. 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.

  2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Data Explorer en la sección Database.

    El Data Explorer se muestra.

2
3
4
5

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.

6

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.

Las siguientes secciones describen el comportamiento de la fragmentación y cómo habilitarla para Administrar clústeres 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:

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 location y 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:

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.

MongoDB 8.0

Sí, agregar campos a una clave utilizando únicamente la Interfaz de Usuario de Atlas.

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.

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 isCustomShardKeyHashed mediante 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:

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.

Si Atlas encuentra un error al particionar una colección para guardados globales, aparecerá un mensaje en la barra superior de la pantalla.

  1. 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.

  2. 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.

  3. Haga clic en la pestaña Global Writes para la colección mencionada en el mensaje de error.

  4. Haga clic en Unmanage Collection para cancelar la operación de particionamiento de escrituras globales. Debes tener el rol Project Data Access Admin para 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.

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.

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 location cumple con los requisitos para Global Writes, MongoDB dirige la operación de lectura a la zona que mapea el o los valores location especificados en la consulta.

  • Para las operaciones de lectura que no incluyen el valor location, o si el valor location no 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.

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.

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.

Volver

Clústeres globales

En esta página