Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Particionamiento de datos

Dividir fragmentos en un clúster

Normalmente, MongoDB divide un fragmento después de una inserción si el fragmento supera el tamaño máximo del fragmento. Sin embargo, tal vez quieras dividir los fragmentos manualmente si:

  • tienes una gran cantidad de datos en tu clúster y muy pocos fragmentos, como es el caso después de desplegar un clúster utilizando datos existentes.

  • se espera agregar una gran cantidad de datos que inicialmente residirían en un único fragmento o partición. Por ejemplo, planeas insertar una gran cantidad de datos con valores de la clave de partición entre 300 y 400, pero todos los valores de tus claves de fragmento están entre 250 y 500 en un solo fragmento.

Nota

MongoDB proporciona el comando mergeChunks para combinar rangos de fragmentos contiguos en un único fragmento. Consulta Unir fragmentos en un clúster fragmentado para obtener más información.

El balanceador puede migrar a un nuevo fragmento los segmentos recientemente divididos de inmediato si el movimiento beneficia futuras inserciones. El balanceador no distingue entre fragmentos divididos manualmente y aquellos divididos automáticamente por el sistema.

Advertencia

Ten cuidado al dividir los datos en una colección particionada para crear nuevos fragmentos. Cuando particionas una colección que tiene datos existentes, MongoDB crea automáticamente fragmentos para distribuir equitativamente la colección. Para dividir datos de manera efectiva en un clúster de particiones, debes considerar el número de documentos en un fragmento y el tamaño promedio de los documentos para crear un tamaño de fragmento uniforme. Cuando los fragmentos tienen tamaños irregulares, las particiones pueden tener el mismo número de fragmentos, pero con tamaños de datos muy diferentes. Evite crear divisiones que conduzcan a una colección con fragmentos de tamaños diferentes.

Use sh.status() para determinar los rangos de fragmentos actuales en el clúster.

Para dividir fragmentos manualmente, utilice el comando split con los campos middle o find. mongosh proporciona los métodos asistentes sh.splitFind() y sh.splitAt().

splitFind() divide el fragmento que contiene el primer documento devuelto que coincide con esta consulta en dos fragmentos de igual tamaño. Se debe especificar el espacio de nombres completo (es decir. "<database>.<collection>") de la colección particionada a splitFind(). La consulta en splitFind() no necesita utilizar la clave de partición, aunque casi siempre tiene sentido hacerlo.

Ejemplo

El siguiente comando divide el fragmento que contiene el valor de 63109 para el campo zipcode en la colección people de la base de datos records:

sh.splitFind( "records.people", { "zipcode": "63109" } )

Utilice splitAt() para dividir un fragmento en dos, empleando el documento consultado como límite inferior en el nuevo fragmento:

Ejemplo

El siguiente comando divide el fragmento que contiene el valor de 63109 para el campo zipcode en la colección people de la base de datos records.

sh.splitAt( "records.people", { "zipcode": "63109" } )

Nota

splitAt() no necesariamente divide el fragmento en dos fragmentos de igual tamaño. La división ocurre en la ubicación del documento que coincide con la query, independientemente de dónde se encuentre ese documento en el fragmento.

Tip

Volver

Crear rangos