Docs Menu
Docs Home
/ /

Refragmentar con la misma clave de fragmento

A partir de MongoDB 8.0, puedes reasignar a la misma clave de partición para mover datos sin tiempo de inactividad ni impacto en la carga de trabajo. Esto te permite:

  • Uso el Técnica defragmentación a fragmentación para fragmentar una colección y distribuir sus datos entre todos los fragmentos relevantes

  • Añadir nuevos fragmentos más rápido

  • Eliminar fragmentos más rápido

  • Reescribe colecciones para recuperar espacio en disco.

A partir de MongoDB 8.0, el cambio de partición lee datos utilizando un escaneo en orden natural. El cambio de partición primero clona todos los datos y luego construye los índices relevantes, logrando mejoras de velocidad significativas en el proceso de cambio de partición.

Puede volver a fragmentar con la misma clave usando el reshardCollection comando con forceRedistribution establecido en true.

El comando reshardCollection tiene la siguiente sintaxis:

db.adminCommand(
{
reshardCollection: "<database>.<collection>",
key: { "<shardkey>" },
unique: <boolean>,
numInitialChunks: <integer>,
collation: { locale: "simple" },
zones: [
{
min: { "<document with same shape as shardkey>" },
max: { "<document with same shape as shardkey>" },
zone: <string> | null
},
],
forceRedistribution: <bool>
}
)

Nota

A partir de MongoDB 8.2, las operaciones de re-fragmentación ignoran la configuración numInitialChunks cuando la clave de fragmento contiene un prefijo hash. En su lugar, MongoDB divide de forma determinista el espacio de la clave hash entre los destinatarios, utilizando el mismo enfoque que la creación inicial de fragmentos para colecciones hash vacías.

Para más detalles, véase reshardCollection.

La reasignación de particiones es una estrategia para mover datos sin tiempo de inactividad ni impacto en la carga de trabajo. Usa la técnica Reshard to Shard para particionar una colección y distribuir datos entre todos los shards.

Utilice la repartición para distribuir sus colecciones entre todos los fragmentos relevantes más rápido que las migraciones de fragmentos. La repartición escribe en todos los fragmentos en paralelo, mientras que cada fragmento solo puede participar en una migración de fragmento a la vez. La repartición elimina la colección antigua al final del proceso. No hay documentos huérfanos al finalizar la repartición.

La técnica Reshard to Partición permite utilizar el cambio de particionamiento para particionar una colección y distribuir los datos entre todas las particiones de un clúster.

Considera usar Redistribuir en Partición cuando estés particionando inicialmente una colección de cualquier tamaño en cualquier número de particiones. Si tu implementación cumple con los requisitos de recursos, utiliza Redistribuir en Partición sin importar el tamaño de la colección que deseas particionar.

Calcule el espacio de almacenamiento necesario para la operación de refragmentación sumando el tamaño de su colección y el tamaño del índice, asumiendo una ventana de registro de operaciones mínima de 24 horas mediante esta fórmula:

Available storage required on each shard = [(collection size + index size) *2 ] / number of shards the collection will be distributed across.

Por ejemplo, una colección de 2TB y 400GB de índices distribuidos en 4 fragmentos necesitarán un mínimo de 1.2TB de almacenamiento disponible por fragmento:

[ (2 TB + 400GB) * 2 ] / 4 shards = 1.2 TB / shard

Debes confirmar que tienes espacio de almacenamiento disponible en tu clúster.

Si no hay suficiente espacio o margen de E/S disponible, debe aumentar el tamaño del almacenamiento. Si no hay suficiente margen de CPU, debe escalar el clúster seleccionando un tamaño de instancia mayor.

Tip

Si su clúster MongoDB está alojado en Atlas, puede usar la interfaz de usuario de Atlas para revisar las métricas de almacenamiento, CPU y espacio libre de E/S.

Debe asegurarse de que su aplicación pueda tolerar dos segundos en los que la colección que se está repartiendo bloquee las escrituras. Cuando se bloquean las escrituras, la aplicación experimenta un aumento de latencia. Si su carga de trabajo no puede soportar este requisito, utilice migraciones de fragmentos para equilibrar el clúster.

Su clúster debe cumplir estos requisitos adicionales:

  • Una ventana de registro de operaciones mínima de 24 horas.

  • Capacidad de I/O inferior a 50%.

  • Carga de CPU por debajo del 80%.

Volver

Comience con un fragmento de configuración