Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Clusters fragmentados en MongoDB


Clusters fragmentados en MongoDB


Los grupos fragmentados de MongoDB proporcionan un método poderoso para escalar horizontalmente grandes conjuntos de datos distribuyendo datos en múltiples servidores o fragmentos, lo que permite que una base de datos maneje un alto rendimiento y grandes cantidades de datos de manera eficiente.

Un clúster fragmentado de MongoDB consiste principalmente en tres componentes principales: fragmentos, servidores de configuración y enrutadores Mongos. Cada fragmento es un conjunto de réplica que contiene un subconjunto de los datos del clúster. Los conjuntos de réplicas aseguran la redundancia de datos y una alta disponibilidad para los datos en cada fragmento. Los servidores de configuración almacenan metadatos y detalles de configuración sobre el clúster, incluida la asignación de fragmentos de datos a fragmentos. Mongos actúa como un servicio de enrutamiento que interfiere con las aplicaciones de los clientes y dirige consultas a los fragmentos apropiados en función de la clave de fragmentos.

El fragmento en MongoDB está diseñado para habilitar la escala horizontal al dividir los datos a través de los fragmentos a través de una tecla de fragmentos elegido. Esta partición crea fragmentos de datos distribuidos de manera uniforme entre los fragmentos, lo que permite a MongoDB extender la carga de lecturas y escrituras. Las consultas que incluyen la clave de fragmentos o los prefijos de una llave compuesta de fragmentos pueden ser enrutadas de manera eficiente por Mongo a fragmentos específicos, reduciendo la sobrecarga de consultas y mejorando el rendimiento. Si una consulta no incluye la llave del fragmento, Mongos puede transmitir la consulta a todos los fragmentos, lo cual es menos eficiente.

Los fragmentos en un clúster son escalables; Se pueden agregar fragmentos adicionales dinámicamente para acomodar el crecimiento en el volumen de datos o la carga de consultas sin tiempo de inactividad. Cada fragmento es una réplica establecida para garantizar la tolerancia a las fallas, y el diseño general del clúster admite una alta disponibilidad. MongoDB equilibra automáticamente los datos en fragmentos, redistribuyendo fragmentos de datos según sea necesario para mantener una carga de trabajo uniforme entre los fragmentos.

Los servidores de configuración juegan un papel fundamental en la administración de los metadatos del clúster, almacenando información sobre la estructura y la distribución de datos del clúster. Los servidores de configuración deben implementarse como una réplica establecida para alta disponibilidad. Se sincronizan con los enrutadores Mongos, que almacenan metadatos localmente para enrutar consultas de manera eficiente. El estado consistente de los metadatos en los servidores de configuración es esencial para el funcionamiento correcto de un clúster fragmentado.

Las instancias de Mongos actúan como enrutadores de consulta que proporcionan la capa de interfaz entre las aplicaciones del cliente y el clúster fragmentado. Abrazan la complejidad del entorno fragmentado mediante el enrutamiento de las operaciones a los fragmentos correctos en función de los metadatos de los servidores de configuración. Se pueden implementar múltiples instancias de Mongos para el equilibrio de carga y la alta disponibilidad, y deben colocarse cerca de los servidores de aplicaciones para reducir la latencia de la red.

Un aspecto crucial de los grupos fragmentados es la elección de la llave de fragmentos. La clave del fragmento rige cómo se dividen los datos, afectando directamente el rendimiento del clúster y la distribución de datos. Seleccionar una clave de fragmentos apropiada requiere analizar la carga de trabajo para garantizar una distribución uniforme de las operaciones de lectura y escritura en fragmentos. Una vez que se crea una colección fragmentada con una clave de fragmentos específica, cambiar la tecla de fragmentos es compleja y generalmente implica un proceso de migración de datos que lleva mucho tiempo. Por lo tanto, es importante la selección de clave de fragmentos cuidadosa por adelantado.

En los entornos de producción, las buenas prácticas para grupos fragmentados incluyen la implementación de servidores de configuración y fragmentos como réplicas en múltiples centros de datos para garantizar la tolerancia a las fallas y la alta disponibilidad. Se recomienda que cada fragmento sea un conjunto de réplica de tres nodos. Los grupos requieren al menos dos fragmentos, aunque se pueden usar grupos de fragmentación de un solo shard si se planifican fragmentos en el futuro.

El fragmento mejora la capacidad de la base de datos al aumentar los límites de almacenamiento a través del almacenamiento de datos distribuidos en fragmentos. También mejora el rendimiento distribuyendo lecturas y escrituras, lo que permite manejar cargas de trabajo de mayor rendimiento. Además, un clúster fragmentado puede mantener la disponibilidad parcial durante las interrupciones de los fragmentos; Si bien los datos en fragmentos afectados pueden ser inaccesibles, el clúster continúa con las solicitudes de servicio en fragmentos disponibles.

En un clúster fragmentado, los datos se dividen en fragmentos dentro del rango definido por la tecla de fragmentos. MongoDB configura los tamaños de fragmentos que afectan la forma en que los datos se dividen y se equilibran en los fragmentos. Las migraciones de fragmentos y los procesos de reequilibrio son manejados automáticamente por el clúster para mantener una distribución de datos uniforme y un rendimiento óptimo. Este equilibrio automático garantiza que ningún fragmento se convierta en un cuello de botella de rendimiento o un punto de acceso de almacenamiento.

Los clústeres fragmentados también admiten zonas (TAG-consciente de fragmentación), lo que permite que los datos se agrupen y restringan a fragmentos específicos en función de las asociaciones de zona. Esta característica permite una localidad de datos más controlada y es útil para el cumplimiento o los requisitos de distribución geográfica. A las zonas se les asignan rangos de valores clave de fragmentos, y se asocian con fragmentos para controlar la colocación de datos de manera más granular.

Las limitaciones y las consideraciones operativas incluyen la complejidad de la gestión de múltiples fragmentos y el aumento de la sobrecarga operativa. La latencia de la red entre los componentes y la sobrecarga de mantenimiento de metadatos y enrutamiento del servidor de configuración puede afectar el rendimiento si no se administra correctamente. Implementar múltiples enrutadores Mongos y servidores de configuración y monitorear su salud es esencial para evitar la degradación del rendimiento. El número de instancias de Mongos debe estar equilibrado ya que las instancias excesivas de Mongos pueden conducir a una comunicación frecuente con los servidores de configuración y el posible impacto en el rendimiento del clúster.

Algunos límites se aplican en versiones alojadas o administradas de grupos fragmentados de MongoDB, como Azure Cosmos DB para la API MongoDB, incluidos los recuentos de fragmentos, el almacenamiento y los límites de recursos por fragmento o clúster. Estos límites específicos de la plataforma varían y pueden ser más altos con niveles premium.

En general, los clústeres fragmentados de MongoDB proporcionan una base robusta para escalar aplicaciones modernas con conjuntos de datos grandes y crecientes mediante la distribución de datos y operaciones de manera transparente en múltiples nodos, asegurando el rendimiento, la tolerancia a las fallas y la escalabilidad a través de la partición inteligente de datos y el despliegue del conjunto de réplicas.