Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
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 una M30+ nivel de clúster.

  • Cuando las escrituras globales están habilitadas, los clústeres globales no admiten nodos de búsqueda dedicados.

  • Se 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 es compatible con el particionado de colecciones de escritura global solo para clústeres globales que usan Particionado gestionado por Atlas. Para particionar colecciones que no son de escritura global o colecciones de escritura global que utilizan particionamiento autogestionado, debes utilizar mongosh o un código de aplicación. Para obtener más información, consulte Implementar un clúster particionado.

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.

Después de seleccionar una clave de partición en la interfaz de usuario de Atlas, Atlas intenta fragmentar la colección de destino. Durante este período, asegúrate de que ningún usuario cree particiones manualmente en la colección. Si Atlas detecta que la colección de destino se ha particionado con una clave distinta de la seleccionada en la Interfaz de Usuario de Atlas, Atlas detiene el procedimiento y muestra una advertencia para esa colección en la Interfaz de Usuario de Atlas. Puedes hacer clic en Unmanage Collection para borrar la advertencia. Esta acción remueve la colección de la gestión de Atlas, pero deja intactos tanto la colección subyacente como la clave de partición elegida 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, puedes seleccionar Pre-split data for even distribution para especificar si se debe realizar la creación y distribución inicial de fragmentos para una colección vacía o inexistente según las zonas y los rangos de zonas definidos para la colección.

Si selecciona la opción Pre-split data for even distribution, también puede especificar la cantidad mínima de fragmentos que se crearán inicialmente al particionar una colección vacía con una clave de partición con hash. La distribución inicial de fragmentos permite a Atlas configurar el particionado zonificado rápidamente. La cantidad de fragmentos que crea Atlas depende de la cantidad de zonas que definas. Por defecto, Atlas crea un fragmento por código de ubicación y distribuye los fragmentos de manera equitativa entre todas las particiones.

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.

En las siguientes secciones se describe el comportamiento del particionado y cómo activar el particionado 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:

  • Todos los documentos de la colección deben incluir un campo location.

  • El valor del campo location 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-2 admitido ("US-DC", "DE-BE", "IN-DL"). Los documentos que no cumplen con este criterio no pueden enrutarse a ninguna partición en el clúster. Para ver la lista completa de códigos de países o subdivisiones actualmente admitidos, consulta 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 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

Cambio de la clave de partición

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 partición utilizan particionado encriptado y datos predivididos para una distribución uniforme.

Atlas distribuye los datos particionados de manera uniforme realizando una función hash sobre el segundo campo de la clave de partición si se realiza una de las siguientes acciones:

  • Habilita el uso de las claves de partición encriptadas al seleccionar 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 creas una colección particionada usando una clave de partición compuesta con hash para clústeres globales, Atlas crea al menos 1 fragmento por ubicación code e intenta distribuir los fragmentos uniformemente entre las particiones 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á particionada.
Si la colección ya ha sido particionada manualmente, la operación falla.
La colección tiene una intercalación por defecto personalizada.
Una intercalación por defecto personalizada en la colección puede causar un error de particionado.

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 query de MongoDB depende de si la operación de lectura incluye la clave de partición completa y que el valor location corresponda a un código de país ISO-3166-1 alfa 2 admitido ("US", "DE", "IN") o a un código de subdivisión ISO-3166-2 admitido ("US-DC", "DE-BE", "IN-DL").

  • 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 partición. Recomendamos elegir una clave de partición que permita usar escrituras globales en 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