El particionado de una colección distribuye sus documentos entre varias particiones en el clúster de MongoDB. MongoDB utiliza la clave de partición que especificaste para determinar exactamente dónde pertenece cada documento. La elección de una clave de partición eficaz es fundamental para garantizar una distribución uniforme de los datos y el equilibrio de la carga de trabajo entre todas las particiones disponibles. Este enfoque se vuelve esencial cuando las colecciones crecen demasiado como para que una única partición las gestione eficientemente. Una vez particionada, MongoDB distribuye automáticamente la colección entre todas las particiones disponibles según la estrategia de particionamiento elegida.
Cuándo considerar el particionado
Debería considerar fragmentar una colección cuando se acerque a ciertos límites de recursos o umbrales de rendimiento.
Alta utilización de recursos
Si la colección el conjunto de trabajo cabe en la RAM, MongoDB sirve las queries desde la memoria, lo que ofrece los tiempos de respuesta más rápidos para las queries. Cuando el conjunto de trabajo supera la memoria disponible, las latencias de las consultas aumentan debido al aumento del acceso a disco. El particionado de una colección mejora el rendimiento de las queries al distribuir los datos entre varias particiones, donde cada partición mantiene sus propios índices de datos.
Tamaño de datos grande
Si tu colección contiene 3TB de datos o más, deberías considerar dividirla en fragmentos para optimizar el rendimiento.
Opciones de Distribución
Al fragmentar una colección en MongoDB, puede elegir entre las siguientes opciones de distribución:
Opción | Descripción |
|---|---|
El particionado clasificado por rango utiliza uno o más campos de documentos para determinar la ubicación de los datos. Los datos con valores similares de la clave de partición se almacenan en la misma partición, optimizando las queries basadas en rangos. Este enfoque funciona mejor cuando los patrones de acceso incluyen operaciones de rango. | |
El particionado encriptada calcula un valor hash desde tu campo especificado y distribuye datos aleatoriamente entre las particiones. Si bien es útil para la escalabilidad de la escritura, este enfoque puede impactar el rendimiento de las consultas basadas en rangos, ya que los datos lógicamente adyacentes pueden residir en diferentes particiones. | |
La fragmentación por zonas distribuye las colecciones entre un subconjunto específico de fragmentos en lugar de por todo el clúster. Este enfoque es ideal cuando las colecciones superan la capacidad de un solo fragmento, pero requieren una ubicación estratégica, ya sea por proximidad geográfica a los usuarios, para optimizar patrones de acceso específicos con hardware especializado o para garantizar el cumplimiento normativo mediante el control de la ubicación de los datos. |
Comportamiento
Al fragmentar una colección, debe:
Elige una clave de partición. Usa la
analyzeShardKeycomando de base de datos para facilitar esta elección.Seleccione un método de fragmentación:
clúster balanceador para la migración automática de datos
Redistribuir en partición para una redistribución completa