Docs Menu
Docs Home
/ /
Particionamiento de datos

Fragmentos divididos en un clúster fragmentado

Normalmente, MongoDB divide una Fragmento después de una inserción si el fragmento excede el tamaño máximo. Sin embargo, puede que desee dividir los fragmentos manualmente si:

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

  • Espera agregar una gran cantidad de datos que inicialmente residirían en un solo fragmento o fragmento. Por ejemplo, planea insertar una gran cantidad de datos con valores de clave de fragmento entre 300 y,400 pero todos los valores de sus claves de fragmentos entre 250 y 500 están en un solo fragmento.

Nota

MongoDB proporciona el mergeChunks comando para combinar rangos de fragmentos contiguos en un solo fragmento.Consulte "Fusionar fragmentos en un clúster fragmentado" para obtener más información.

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

Advertencia

Tenga cuidado al dividir datos en una colección fragmentada para crear nuevos fragmentos. Al fragmentar una colección con datos existentes, MongoDB crea fragmentos automáticamente para distribuirlos uniformemente. Para dividir los datos eficazmente en un clúster fragmentado, debe considerar la cantidad 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, los fragmentos pueden tener el mismo número de fragmentos, pero tamaños de datos muy diferentes. Evite crear divisiones que resulten en una colección con fragmentos de diferentes tamaños.

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

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

splitFind() divide el fragmento que contiene el primer documento devuelto que coincide con esta consulta en dos fragmentos de igual tamaño. Debe especificar el espacio de nombres completo (es decir, "<database>.<collection>") de la colección fragmentada en.splitFind() splitFind() La consulta en no necesita usar la clave de fragmento, aunque casi siempre es recomendable 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 para dividir un fragmento en dos, utilizando el documento consultado como límite inferior en el nuevo splitAt() 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 se produce en la ubicación del documento que coincide con la consulta, independientemente de dónde se encuentre dicho documento en el fragmento.

Tip

Volver

Crear rangos