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

Gestiona colecciones no particionadas

Las colecciones en el mismo set de réplicas pueden encontrar cuellos de botella en el rendimiento al competir por recursos. A medida que tus datos crecen más allá de la memoria disponible, el aumento de la E/S en disco introduce latencia y genera presión sobre los recursos del sistema, lo que degrada el rendimiento general de la aplicación. Aislar las colecciones en particiones dedicadas dentro de tu clúster reduce estas restricciones de recursos mientras mantiene un único punto de conexión para tu aplicación.

Beneficios del aislamiento de colecciones:

  • Separación de cargas de trabajo: Evita la competencia por recursos asignando colecciones a particiones específicos.

  • Optimización de hardware: configurar particiones asimétricas con hardware adaptado a requisitos de colección específicos.

  • Escalado independiente: escalamiento individual de colecciones según el crecimiento de la carga de trabajo.

  • Resiliencia mejorada - Reduce el tiempo de recuperación aislando posibles fallas.

Mover las colecciones en particiones dedicadas es particularmente beneficioso cuando los requisitos de su colección varían de las siguientes maneras:

Requisito
Descripción

Patrones de acceso

Algunas de tus colecciones requieren mayor lectura, mientras que otras requieren muchas operaciones de guardado.

Rendimiento

Algunas colecciones requieren más RAM, CPU o rendimiento de disco que otras.

Exigencias de escalabilidad

Las colecciones que tienen patrones de crecimiento rápido o impredecible requieren hardware dedicado.

Asignar colecciones a las particiones con el hardware necesario para satisfacer sus requisitos específicos optimiza el rendimiento mientras se mantiene la simplicidad operativa.

A partir de MongoDB 8.0, las colecciones móviles te permiten colocar estratégicamente cualquier colección sin partición en cualquier partición dentro del clúster. Anteriormente, las colecciones no particionadas estaban restringidas a la partición primaria de su base de datos, lo que provocaba cuellos de botella en los recursos. Mover una colección simplifica la escalabilidad horizontal al permitirte reubicar colecciones no fragmentadas sin interrumpir las cargas de trabajo.

Aunque no todas las colecciones necesitan ser particionadas, implementar un clúster proporciona ventajas de escalado horizontal incluso para colecciones no particionadas. Este enfoque mantiene un único punto de conexión para todo el acceso a los datos, lo que simplifica la arquitectura de la aplicación.

Los siguientes escenarios se benefician de mover colecciones no fragmentadas entre particiones:

Cuando varias colecciones atienden diferentes cargas de trabajo dentro del mismo clúster, mover colecciones no fragmentadas entre diferentes particiones ayuda a prevenir la competencia por recursos. Esta separación elimina los problemas donde el rendimiento de una carga de trabajo afecta negativamente a otras.

En entornos que alojan colecciones para diferentes tenants, el comando moveCollection de MongoDB permite la distribución sin interrupciones de colecciones en las particiones sin tiempo de inactividad. Esta flexibilidad permite optimizar la asignación de recursos según las necesidades específicas de cada tenant.

Las organizaciones pueden necesitar almacenar datos de usuarios en regiones geográficas específicas para cumplir con las regulaciones de soberanía de datos. Con moveCollection, puedes ubicar colecciones no fragmentadas en particiones de diferentes regiones y reubicarlas a medida que evolucionan los requisitos normativos.

Antes de MongoDB 8.0, todas las colecciones no particionadas dentro de una base de datos estaban restringidas a la partición primaria. Esta limitación a menudo obligaba a actualizar a niveles de instancias más grandes y costosas. MongoDB 8.0 remueve esta restricción, permitiendo el movimiento de colecciones no fragmentadas a través de todas las particiones disponibles en el clúster.

Mover colecciones no fragmentadas a través de hardware partición asimétrica proporciona beneficios significativos para la optimización de recursos, permitiéndote ubicar colecciones específicas en hardware adaptado a sus requisitos. Al asignar colecciones a recursos de hardware adecuados, puedes escalar diferentes cargas de trabajo de forma independiente según sus necesidades reales. Este enfoque dirigido mejora el rendimiento evitando el costo de provisionamineto de recursos en exceso en todo el clúster.

Aunque MongoDB no tiene un límite estricto en la cantidad de colecciones por instancia, el rendimiento disminuye cuando un nodo administra demasiadas colecciones e índices. Para obtener más información sobre estos límites, consulta Límites de colección e índices de MongoDB Atlas.

Al distribuir colecciones sin particiones entre diferentes particiones, puedes reducir la densidad de la colección en cualquier nodo, manteniendo un punto de acceso unificado para las aplicaciones.

Considera alojar colecciones no particionadas en la misma partición para minimizar las operaciones distribuidas, como las transacciones entre colecciones o las operaciones de join ($lookup). Mantener las operaciones relacionadas confinadas a una única partición elimina la sobrecarga de la red, reduce la latencia y mejora el rendimiento general. Este enfoque es especialmente eficaz para colecciones que se suelen combinar o a las que se accede juntas en la misma transacción.

sh.moveCollection("database.collection", "shardName")

El siguiente ejemplo mueve cuatro colecciones no particionadas entre dos particiones para una distribución equitativa de las colecciones:

db.adminCommand({moveCollection:"E", toShard: "shard1"})
Diagrama de colecciones no particionadas que se mueven a una partición especificada para distribuir las colecciones de manera uniforme entre dos particiones.
haga clic para ampliar

Si bien moveCollection ofrece una flexibilidad significativa, hay algunos escenarios específicos en los que puede no ser la solución óptima:

No uses moveCollection cuando una colección es demasiado grande para una sola partición. Considera particionar una colección cuando se acerque a 3 TB en tamaño.

Si una colección específica utiliza Atlas Search, ten en cuenta que moveCollection usa resharding para reescribir la colección en una partición diferente. Después de trasladar la colección, necesitarás reconstruir manualmente su índice de búsqueda de Atlas. Hasta que los índices se reconstruyan completamente, la funcionalidad de Atlas Search no estará disponible para esta colección específica, aunque el resto de tu aplicación funcionará normalmente.

Antes de usar moveCollection, evalúa estas limitaciones en relación con los requisitos de su aplicación para determinar si es la solución adecuada.

Volver

Comience con clúster

En esta página