Docs Menu
Docs Home
/
Manual de base de datos
/

Particionamiento de datos con fragmentos

MongoDB utiliza el Clave de fragmento asociada a la colección para particionar los datos en fragmentos pertenecientes a un fragmento específico. Un fragmento consiste en un rango de datos fragmentados. Un rango puede ser una parte o el fragmento completo. El balanceador migra datos entre fragmentos. Cada fragmento tiene límites inferiores inclusivos y superiores exclusivos según la clave de fragmento.

Diagrama del espacio del valor de la clave de partición segmentado en rangos o fragmentos más pequeños.

La unidad más pequeña de datos que un fragmento puede representar es un único valor de la clave de partición.

  • La operación de particionado crea un fragmento inicial grande para cubrir todos los valores de la clave de partición.

  • Después de la creación del fragmento inicial, el balanceador mueve rangos fuera del fragmento inicial cuando necesita comenzar a equilibrar datos.

  • Si se tienen zonas y rangos de zonas definidos para una colección vacía o inexistente.

    • La operación de particionado crea fragmentos vacíos para los rangos de zona definidos, así como fragmentos adicionales para cubrir todo el rango de los valores de la clave de partición y realiza una distribución inicial de fragmentos basada en los rangos de zona. Esta creación y distribución inicial de fragmentos permite configurar más rápidamente el particionado de zona.

    • Después de la distribución inicial, el balanceador gestiona la distribución de fragmento en adelante.

  • Si no tienes zonas ni rangos de zonas definidos para una colección vacía o inexistente:

    • Para el particionado encriptado:

      • La operación de fragmentación crea fragmentos vacíos para cubrir todo el rango de valores de clave de fragmento y realiza una distribución inicial de fragmentos. De forma predeterminada, la operación crea 2 fragmentos por fragmento y migra por todo el clúster. Puede usar numInitialChunks Opción para especificar un número diferente de fragmentos iniciales. Esta creación y distribución inicial de fragmentos permite una configuración más rápida de la fragmentación.

      • Después de la distribución inicial, el balanceador gestiona la distribución de fragmento en adelante.

    • Para el particionado clasificado por rango:

      • La operación de particionado crea un único fragmento vacío para cubrir todo el rango de valores de la clave de partición.

      • Tras la creación inicial del fragmento, el balanceador migra el fragmento inicial a través de las particiones según convenga, además de gestionar la distribución de fragmentos en adelante.

Tip

El tamaño del rango por defecto en MongoDB es 128 megabytes. Se puede aumentar o reducir el tamaño de los fragmentos. Considera las implicaciones de cambiar el tamaño de fragmento por defecto:

  1. Rangos pequeños conducen a una distribución más uniforme de los datos a costa de migraciones más frecuentes. Esto crea gastos en la capa de enrutamiento de la query (mongos).

  2. Los rangos grandes provocan menos migraciones. Esto es más eficiente tanto desde la perspectiva de las redes como en términos de gastos generales internos en la capa de enrutamiento de query. Sin embargo, estas eficiencias se producen a expensas de una distribución de datos potencialmente desigual.

  3. El tamaño del rango afecta el número máximo de documentos por rango para migrar.

Para muchas implementaciones, tiene sentido evitar migraciones frecuentes y potencialmente erróneas a costa de un conjunto de datos un poco menos uniforme.

MongoDB migra rangos de datos en un clúster para distribuir los datos de una colección particionada de manera uniforme entre las particiones. Las migraciones pueden ser:

  • Manual. Solo se usa la migración manual en casos limitados, por ejemplo, para distribuir datos durante las inserciones masivas. Ver Migración manual de fragmentos para obtener más detalles.

  • Automático El proceso balanceador migra automáticamente los datos cuando hay una distribución desigual de los datos de una colección particionada en las particiones. Ver Umbrales de migración para obtener más detalles.

Para obtener más información sobre el balanceador del clúster particionado, se puede consultar Balanceador de clúster particionado.

El balanceador es un proceso en segundo plano que gestiona las migraciones de datos. Si la diferencia en la cantidad de datos entre la partición más grande y la más pequeña supera los umbrales de migración, el balanceador comienza a migrar los datos a todo el clúster para garantizar una distribución uniforme.

Diagrama de una colección distribuida en tres particiones. Para esta colección, la diferencia en el número de fragmentos entre las particiones alcanza los *umbrales de migración* (en este caso, 2) y activa la migración.

Se pueden gestionar ciertos aspectos del balanceador. El balanceador también respeta las zonas creadas como parte de la configuración de zonas en un clúster.

Ver Balanceador del Clúster Particionado para obtener más información sobre el balanceador.

En algunos casos, los fragmentos pueden crecer más allá del tamaño de fragmento especificado, pero no pueden sufrir una división. El escenario más común es cuando un fragmento representa un único valor de la clave de partición. Como el fragmento no permite la división, sigue creciendo más allá del tamaño del fragmento, convirtiéndose en un fragmento jumbo. Estos fragmentos jumbo pueden convertirse en un cuello de botella para el rendimiento a medida que siguen creciendo, especialmente si el valor de la clave de partición ocurre con alta frecuencia.

A partir de MongoDB 5.0, puedes refragmentar una colección al cambiar la clave de fragmentación de un documento.

MongoDB proporciona el comando refineCollectionShardKey. Refinar la clave de partición de una colección permite una distribución de datos más precisa y puede abordar situaciones en las que la insuficiente cardinalidad de la clave existente conduce a fragmentos jumbo.

Para aprender si se debe redistribuir la colección o refinar la clave de partición, se puede consultar Cambiar la clave de partición.

Para obtener más información, consulte:

De forma predeterminada, estásharding.archiveMovedChunks deshabilitado.

Volver

Distribuir colecciones

Obtén una insignia de habilidad

¡Domina "Estrategias de partición" gratis!

Más información

En esta página