Aprenda cómo MongoDB gestiona las operaciones de lectura y escritura en conjuntos de réplicas y clústeres fragmentados. Esta página explica la importancia de la arquitectura de clústeres para el enrutamiento de consultas y la consistencia de los datos.
Operaciones de lectura en conjuntos de réplicas
De forma predeterminada, los clientes leen desde un conjunto de réplicas. Principal. Sin embargo, puede especificar una preferencia de lectura para dirigir las operaciones de lectura a otros miembros. Por ejemplo, configure las preferencias de lectura para leer desde los secundarios o desde el miembro más cercano a:
Reducir la latencia en implementaciones con múltiples centros de datos.
Realizar operaciones de backup.
Permitir lecturas hasta que se elija una nueva primaria.
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 consistentes, lo que proporciona varias garantías, incluidas lecturas monótonas.
Puede configurar la preferencia de lectura por conexión o por operación. Para obtener más información sobre la preferencia de lectura o sobre los modos de preferencia de lectura, consulte Preferencia de lectura y Modos de preferencia de lectura.
Operaciones de escritura en conjuntos de réplicas
En los conjuntos de réplicas, todas las operaciones de escritura se dirigen al conjunto principal. Este aplica la operación de escritura y registra las operaciones en su registro de operaciones (o registro de operaciones). El registro de operaciones es una secuencia reproducible de operaciones en el conjunto de datos. Los miembros secundarios del conjunto replican continuamente el registro de operaciones y se aplican las operaciones a sí mismos de forma asincrónica.
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).
Operaciones de lectura en clústeres fragmentados
Los clústeres fragmentados le 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 emiten operaciones a una de las instancias asociadas con el mongos clúster.
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.
Si una consulta no incluye la clave del fragmento, el mongos debe dirigirla a todos los fragmentos del clúster. Estas consultas de dispersión y recopilación pueden ser ineficientes. En clústeres más grandes, las consultas de dispersión y recopilación no son viables para operaciones rutinarias.
En el caso de los fragmentos de conjuntos de réplicas, 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.
Nota
Los clientes pueden utilizar sesiones causalmente consistentes, lo que proporciona varias garantías, incluidas lecturas monótonas.
Todos los miembros de un conjunto de réplicas de fragmentos, no solo el principal, mantienen los metadatos de los fragmentos. Esto evita que las lecturas de los secundarios devuelvan datos huérfanos si no se utiliza la función de
"available"lectura. En versiones anteriores, las lecturas de los secundarios, independientemente de la función de lectura, podían devolver documentos huérfanos.
Para obtener más información sobre las operaciones de lectura en clústeres fragmentados, consulte las secciones mongos y Claves de fragmentación.
Operaciones de escritura en clústeres fragmentados
Para colecciones fragmentadas en un clúster fragmentado, el mongos dirige las operaciones de escritura desde las aplicaciones a los fragmentos responsables de la parte específica del conjunto de datos. El mongos utiliza los metadatos del clúster de la base de datos de configuración para enrutar la operación de escritura a los fragmentos correspondientes.
MongoDB particiona los datos de una colección fragmentada en rangos según los valores de la clave de fragmento. Posteriormente, MongoDB distribuye estos fragmentos a los fragmentos. La clave de fragmento determina la distribución de los fragmentos a los fragmentos. Esto puede afectar el rendimiento de las operaciones de escritura en el clúster.
Importante
Las operaciones de actualización que afectan a un solo documento deben incluir la clave de fragmento o el _id campo. Las actualizaciones que afectan a varios documentos son más eficientes en algunos casos si cuentan con la clave de fragmento, pero pueden difundirse a todos los fragmentos.
Si el valor de la clave de fragmento aumenta o disminuye con cada inserción, todas las operaciones de inserción se centran en un único fragmento. Como resultado, la capacidad de un único fragmento se convierte en el límite de la capacidad de inserción del clúster fragmentado.
Para obtener más información, consulte Operaciones de fragmentación y escritura masiva.
Change Streams y documentos huérfanos
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.