El particionado basado en rangos implica dividir los datos en rangos continuos determinados por los valores de la clave de partición. En este modelo, es probable que documentos con valores de la clave de partición "cercanos" estén en la misma fragmento or shard. Esto permite realizar consultas eficientes donde las lecturas se dirigen a documentos dentro de un rango contiguo. Sin embargo, tanto el rendimiento de lectura como el de escritura pueden verse afectados por una mala selección de clave de partición. Ver Selección de clave de fragmento.
La fragmentación basada en rangos es la metodología de fragmentación predeterminada si no se configuran otras opciones,como las requeridas para la fragmentación en hash o las zonas.
Selección de Shard Key
El particionamiento por rangos es más eficiente cuando la clave de partición presenta los siguientes rasgos:
La siguiente imagen ilustra un clúster fragmentado utilizando el campo X como la clave de partición. Si los valores para X tienen un rango amplio, una frecuencia baja y cambian a una tasa no monótona, la distribución de inserciones podría verse similar a la siguiente:
Fragmenta una colección
Utilice el método, especificando el espacio de nombres sh.shardCollection() completo de la colección y el índice de destino o índice compuesto que se utilizará como clave de fragmento.
sh.shardCollection( "database.collection", { <shard key> } )
Importante
A partir de MongoDB 5.0, puedes redistribuir una colección cambiando la clave de partición de una colección.
Para ajustar una clave de fragmentación, agrega un campo o campos de sufijo a la clave de fragmentación existente.
Crear particiones en una colección poblada
Si fragmenta una colección completa, inicialmente solo se crea un fragmento. El balanceador migra los rangos de ese fragmento si es necesario, según el tamaño del rango configurado.
Particionar una colección vacía
Si fragmentas una colección vacía:
Sin zonas ni rangos de zonas especificados para la colección vacía o inexistente:
La operación de particionado crea un único fragmento vacío para cubrir todo el rango de valores de la clave de partición.
Tras la creación inicial del fragmento, el balanceador migra el fragmento inicial a través de las particiones según convenga, además de gestionar la distribución de fragmentos en adelante.
Con zonas y rangos de zonas especificados para colecciones vacías o inexistentes:
La operación de particionado crea fragmentos vacíos para los rangos de zona definidos, así como fragmentos adicionales 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 y distribución inicial de fragmentos permite configurar más rápidamente el particionado de zona.
Después de la distribución inicial, el balanceador gestiona la distribución de fragmento en adelante.
Tip
Para aprender a desplegar un clúster e implementar el particionado clasificado por rango, consulte Desplegar un clúster autogestionado.