Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Particionamiento de datos con fragmentos

MongoDB utiliza la clave de partición asociada a la colección para dividir los datos en fragmentos que pertenecen a una partición específica. Un fragmento consiste en un rango de datos particionados. Cada fragmento tiene límites inferiores inclusivos y superiores exclusivos basados en la clave de partición.

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 particionamiento crea fragmentos vacíos para los rangos de zona definidos y cualquier fragmento adicional 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 inicial y distribución de fragmentos permite una configuración más rápida de particionado zonificado.

    • 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 particionado crea fragmentos vacíos para cubrir todo el rango de valores de la clave de partición y realiza una distribución inicial de fragmentos. Por defecto, la operación crea 2 fragmentos por partición y los migra por todo el clúster. Puedes usar la opción numInitialChunks para especificar un número diferente de fragmentos iniciales. Esta creación inicial y distribución de fragmentos permite una configuración más rápida del particionado.

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

      • Después de la creación del fragmento inicial, el balanceador migra el fragmento inicial a través de las particiones según sea apropiado y gestiona la distribución de los fragmentos en adelante.

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. Los rangos pequeños conducen a una distribución más uniforme de los datos a expensas de migraciones más frecuentes, lo que añade sobrecarga en la capa de enrutamiento de query (mongos).

  2. Los rangos grandes conducen a menos migraciones, reduciendo el trabajo en red y la sobrecarga interna en la capa de enrutamiento de consultas, pero pueden resultar en una distribución desigual de los datos.

Para la mayoría de las implementaciones, es preferible una distribución de datos ligeramente desigual que migraciones frecuentes.

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 la migración de datos. Si el desequilibrio 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 datos a través del clúster.

La colección distribuida a través de 3 particiones activa una migración de fragmentos después de alcanzar el umbral de 2.

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.

Los fragmentos que superan el tamaño de fragmento especificado pero no pueden ser objeto de división se denominan fragmentos jumbo. La causa más común es cuando un fragmento representa un único valor de la clave de partición. Los fragmentos jumbo pueden convertirse en un cuello de botella de rendimiento, 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.

El comando refineCollectionShardKey permite una distribución de datos más granular y puede resolver fragmentos jumbo causados por una cardinalidad insuficiente de la clave de partición.

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: