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:
Usa el Reshard to Partición técnica para particionar una colección y distribuir sus datos entre todas las particiones relevantes
Añade nuevas particiones más rápido
Remover particiones más rápidamente
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.
Sintaxis del comando
Puedes volver a repartir a la misma clave usando la 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>, numSamplesPerChunk: <integer>, // New in MongoDB 8.0.20 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 redistribución ignoran la configuración numInitialChunks cuando la clave de partición contiene un prefijo encriptada. En cambio, MongoDB divide deterministicamente el espacio de claves encriptadas entre los recipientes, utilizando el mismo enfoque que para la creación inicial de los fragmentos en las colecciones encriptadas vacías.
Para obtener más detalles, consulte reshardCollection.
Casos de uso
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.
Utiliza el desfragmentación para distribuir tus colecciones entre todas las particiones relevantes más rápido que las migraciones de fragmentos. La reestructuración escribe en todas las particiones en paralelo, mientras que cada partición sólo puede participar en una migración de un fragmento a la vez. El resincronizado descarta la colección antigua al final del proceso. No hay documentos huérfanos al final del reequilibrio de particiones.
Refragmentar a fragmentar
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.
Comportamiento
Almacenamiento
Calcula el espacio de almacenamiento requerido para la operación de re-sharding sumando el tamaño de tu colección y el tamaño del índice, asumiendo una mínima oplog window de 24 horas usando 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
Debe confirmar que dispone del espacio de almacenamiento disponible en su 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.
latencia
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.
Limitaciones de resharding
Si la colección usa Atlas Search, el índice de búsqueda dejará de estar disponible una vez que se complete la operación. Para restaurar, reconstruye manualmente el índice de búsqueda.
Las colecciones que utilizan cifrado consultable no son compatibles.
Requisitos adicionales de recursos
Tu clúster debe cumplir estos requisitos adicionales:
Una ventana mínima de oplog window de 24 horas.
Capacidad de I/O inferior a 50%.
Carga de CPU por debajo del 80%.