Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Queries distribuidos

Aprende cómo MongoDB gestiona las operaciones de lectura y guardar en sets de réplicas y clústeres en particiones. Esta página explica la importancia de la arquitectura de clúster en el enrutamiento de queries y la coherencia de los datos.

Por defecto, los clientes leen de un set de réplicas primario/a. Sin embargo, puedes especificar una preferencia de lectura para dirigir las operaciones de lectura a otros nodos. Por ejemplo, configura las preferencias de lectura para leer desde secundarias o desde el nodo más cercano a:

  • Reducir la latencia en implementaciones con varios centros de datos.

  • Realiza operaciones de copia de seguridad.

  • Permitir lecturas hasta que se elija un nuevo primario.

Operaciones de lectura en un set de réplicas. La preferencia de lectura por defecto dirige la lectura al primario. La preferencia de lectura de ``nearest`` dirige la lectura al nodo más cercano.
haga clic para ampliar

Las operaciones de lectura de los miembros secundarios de los conjuntos de réplicas podrían no reflejar el estado actual del principal. Las preferencias de lectura que dirigen las operaciones de lectura a diferentes servidores pueden generar lecturas no monotónicas.

Los clientes pueden utilizar sesiones causalmente coherentes, lo que brinda varias garantías, incluidas lecturas monótonas.

Puedes configurar la preferencia de lectura por cada conexión o por cada operación. Para obtener más información sobre la preferencia de lectura o sobre los modos de preferencia de lectura, consulta Preferencia de lectura y Modos de preferencia de lectura.

En los sets de réplicas, todas las operaciones de escritura van al primario del conjunto. El primario aplica la operación de escritura y registra las operaciones en el registro de operaciones del primario o oplog. El oplog es una secuencia reproducible de operaciones sobre el conjunto de datos. Los secundarios miembros del conjunto replican continuamente el oplog y aplican las operaciones a sí mismos en un proceso asíncrono.

Diagrama del enrutamiento por defecto de lecturas y el guardado al primario.
haga clic para ampliar

Para más información sobre conjuntos de réplicas y operaciones de escritura, consulta Replicación y nivel de confirmación de escritura (write concern).

Los clústeres fragmentados permiten particionar un conjunto de datos entre un clúster de mongodinstancias de forma prácticamente transparente para la aplicación. Para obtener una descripción general de los clústeres fragmentados, consulte la sección "Fragmentación" de este manual.

Para un clúster fragmentado, las aplicaciones envían operaciones a una de las instancias de mongos asociadas con el clúster.

Diagrama de un clúster fragmentado.
haga clic para ampliar

Las operaciones de lectura en clústeres fragmentados son más eficientes cuando se dirigen a un fragmento específico. Las consultas a colecciones fragmentadas deben incluir la clave de fragmento de la colección. Cuando una consulta incluye una clave de fragmento,mongos puede usar los metadatos del clúster de la base de datos de configuración para dirigir las consultas a los fragmentos.

Operaciones de lectura en un clúster con partición. El criterio de consulta incluye la clave de partición. El enrutador de queries ``mongos`` puede enviar la query a la partición o particiones apropiadas.

Si una query no incluye la clave de partición, mongos debe dirigir la query a todos los shards del clúster. Estas consultas de dispersión y recopilación pueden ser ineficientes. En clústeres más grandes, las consultas de distribución y recolección no son viables para las operaciones rutinarias.

Operaciones de lectura en un clúster sharded. Los criterios de consulta no incluyen la clave de partición. El enrutador de queries ``mongos`` debe retransmitir la query a todas las particiones de la colección.

En el caso de las particiones de conjuntos de réplicas, las operaciones de lectura de los miembros secundarios de conjuntos de réplicas pueden no reflejar el estado actual del primario. Las preferencias de lectura que dirigen las operaciones de lectura a diferentes servidores pueden resultar en lecturas no monótonas.

Nota

  • Los clientes pueden utilizar sesiones causalmente coherentes, que brindan varias garantías, incluidas lecturas monótonas.

  • Todos los miembros de un set de réplicas de partición, no solo el primario, mantienen los metadatos relacionados con los metadatos de fragmentos. Esto previene que las lecturas de las secundarias devuelvan datos huérfanos si no utilizas el nivel de consistencia de lectura "available". En versiones anteriores, las lecturas de los secundarios, independientemente del nivel de consistencia de lectura, podrían devolver documentos huérfanos.

Para obtener más información sobre las operaciones de lectura en clústeres fragmentados, consulte las secciones Enrutamiento con mongos y Claves de fragmentación.

Para colecciones particionadas en un clúster, el mongos dirige las operaciones de escritura de las aplicaciones a las particiones responsables de la porción específica del conjunto de datos. El mongos utiliza los metadatos del clúster de la base de datos de configuración para dirigir la operación de escritura a las particiones correspondientes.

Diagrama de un clúster fragmentado.
haga clic para ampliar

MongoDB divide los datos en una colección particionada en rangos según los valores de la clave de partición. Luego, MongoDB distribuye estos fragmentos a las particiones. La clave de partición determina la distribución de los fragmentos entre las particiones. Esto puede afectar el rendimiento de las operaciones de guardar en el clúster.

Diagrama del espacio del valor de la clave de partición segmentado en rangos o fragmentos más pequeños.

Importante

Las operaciones de actualización que afectan a un único documento deberán incluir la clave de partición o el campo _id. Las actualizaciones que afectan a varios documentos son más eficientes en algunas situaciones si tienen la clave de partición, pero se pueden difundir a todas las particiones.

Si el valor de la clave de partición aumenta o disminuye con cada inserción, todas las operaciones de inserción se dirigen a una sola partición. Como resultado, la capacidad de una sola partición se convierte en el límite para la capacidad de inserción del clúster.

Para obtener más información, consulte Operaciones de fragmentación y escritura masiva.

Tip

A partir de MongoDB 5.3, durante la migración de rango, los eventos de flujo de cambios no se generan para las actualizaciones de documentos huérfanos.

Volver

Atomicidad y Transacciones

En esta página