readConcern
Nivel de consistencia de lectura por defecto
La predeterminado nivel de consistencia de lectura es el siguiente:
Operaciones | Nivel de consistencia de lectura por defecto |
|---|---|
Lee contra la primaria |
|
Reads against secondaries. |
|
Especificar nivel de consistencia de lectura: drivers de MongoDB
La siguiente información se aplica a las operaciones que se ejecutan fuera de las transacciones. Para obtener información sobre el nivel de consistencia de lectura relacionada con las operaciones que se ejecutan dentro de las transacciones, haz clic en la pestaña Operations in Transactions.
Utilizando los drivers de MongoDB, puedes modificar la configuración por defecto de nivel de consistencia de lectura y establecer el nivel de consistencia de lectura para las operaciones en los siguientes niveles:
Nivel | Descripción |
|---|---|
Nivel de cliente | Se aplica a las operaciones, a menos que se establezca una preocupación de lectura más detallada para una operación en el nivel de base de datos/colección/operación. |
Nivel de base de datos | Aplica a las operaciones en las colecciones de la base de datos (es decir, anula el nivel de consistencia de lectura del cliente) a menos que se haya establecido un nivel de consistencia de lectura a nivel de colección o a nivel de operación. No aplica a operaciones dentro de transacciones. |
A nivel de colección | Se aplica a las operaciones de lectura en la colección (es decir. anula el nivel de consistencia de lectura de la base de datos/cliente) a menos que se haya establecido un nivel de consistencia de lectura a nivel de operación. No aplica a operaciones dentro de transacciones. |
Nivel de operación | Aplica para la operación de lectura específica (es decir, anula el nivel de consistencia de lectura de la base de datos/cliente/colección). La capacidad de configurar la lectura de problemas durante la operación depende del controlador. Consulte la documentación del controlador. No aplica a operaciones dentro de transacciones. |
La siguiente información se aplica a las operaciones que se ejecutan dentro de transacciones. Para obtener información sobre el nivel de consistencia de lectura relacionado con las operaciones que se ejecutan fuera de las transacciones, haz clic en la pestaña Operations outside Transactions.
Usando los drivers de MongoDB,se puede anular el nivel de consistencia de lectura por defecto y establecer el nivel de consistencia de lectura para transacciones en los siguientes niveles:
Nivel | Descripción |
|---|---|
Nivel de cliente | Se aplica a las transacciones, a menos que se establezca un nivel de consistencia de lectura más detallado en el nivel de sesión/transacción. Todas las operaciones dentro de una transacción usan el nivel de consistencia de lectura de la transacción: cualquier nivel de consistencia de lectura establecido a nivel de operación, colección o base de datos es ignorado dentro de la transacción. |
Nivel de sesión | Se aplica a transacciones iniciadas en la sesión (es decir, anula el nivel de consistencia de lectura del cliente) a menos que se establezca un nivel de consistencia de lectura más detallado a nivel de transacción. Todas las operaciones dentro de una transacción usan el nivel de consistencia de lectura de la transacción: cualquier nivel de consistencia de lectura establecido a nivel de operación, colección o base de datos es ignorado dentro de la transacción. Consulte Transacciones y Lea Preocupación para obtener más información. |
Nivel de transacción | Se aplica a la transacción específica (es decir, anula el nivel de consistencia de lectura del cliente/sesión). Todas las operaciones dentro de una transacción usan el nivel de consistencia de lectura de la transacción: cualquier nivel de consistencia de lectura establecido a nivel de operación, colección o base de datos es ignorado dentro de la transacción. Consulte Transacciones y Lea Preocupación para obtener más información. |
Información Adicional
Para obtener más información sobre los niveles de consistencia de lectura disponibles, consulta Nivel de consistencia de lectura.
Nivel de confirmación de escritura
Nivel de confirmación de escritura (write concern) por defecto
A partir de MongoDB 5.0, el nivel de confirmación de escritura (write concern) predeterminado implícito es w: majority. Sin embargo, existe un caso excepcional para las implementaciones de set de réplicas que contienen árbitros:
La mayoría de los votos de un conjunto de réplicas es igual a 1 más la mitad del número de miembros con derecho a voto, redondeada hacia abajo. Si el número de miembros con derecho a voto que contienen datos no es mayor que la mayoría de los votos, el nivel de confirmación de escritura por defecto es
{ w: 1 }.En todos los demás escenarios, el nivel de confirmación de escritura por defecto es
{ w: "majority" }.
Específicamente, MongoDB usa la siguiente fórmula para determinar el nivel de confirmación de escritura por defecto:
if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ] defaultWriteConcern = { w: 1 } else defaultWriteConcern = { w: "majority" }
Por ejemplo, considera las siguientes implementaciones y sus respectivos niveles de confirmación de escritura por defecto:
Non-Arbiters | Árbitros | Nodos de votación | Mayoría de nodos de votación | Nivel de confirmación de escritura por defecto implícito |
|---|---|---|---|---|
2 | 1 | 3 | 2 |
|
4 | 1 | 5 | 3 |
|
En el primer ejemplo:
Hay 2 miembros no árbitros y 1 árbitro, para un total de 3 nodos con derecho a voto.
La mayoría de los nodos de votación (1 más la mitad de 3, redondeado hacia abajo) es 2.
El número de miembros no árbitros (2) es igual a la mayoría de los nodos de votación (2), lo que genera un nivel de confirmación de escritura implícita de
{ w: 1 }.
En el segundo ejemplo:
Hay 4 miembros no árbitros y 1 árbitro para un total de 5 nodos de votación.
La mayoría de los nodos de votación (1 más la mitad de 5, redondeado hacia abajo) es 3.
El número de miembros que no son árbitros (4) es mayor que la mayoría de los nodos con derecho a voto (3), lo que resulta en un nivel de confirmación de escritura implícito de
{ w: "majority" }.
Especifica el nivel de confirmación de escritura (write concern): drivers de MongoDB
La siguiente información se aplica a las operaciones que se ejecutan fuera de las transacciones. Para obtener información sobre el nivel de consistencia de lectura relacionada con las operaciones que se ejecutan dentro de las transacciones, haz clic en la pestaña Operations in Transactions.
Mediante el uso de drivers de MongoDB, puedes anular el nivel de confirmación de escritura (write concern) por defecto y establecer el nivel de confirmación de escritura (write concern) para operaciones en los siguientes niveles:
Nivel | Descripción |
|---|---|
Nivel de cliente | Se aplica a las operaciones a menos que se establezca un nivel de confirmación de escritura (write concern) más detallado para una operación en la operación/base de datos/colección. |
Nivel de base de datos | Se aplica a operaciones de guardar en las colecciones de la base de datos (es decir, anula el nivel de confirmación de escritura (write concern) del cliente) a menos que se haya establecido un nivel de confirmación de escritura (write concern) a nivel de colección o a nivel de operación. No aplica a operaciones dentro de transacciones. |
A nivel de colección | Se aplica a las operaciones de escritura en la colección (es decir, anula el nivel de confirmación de escritura (write concern) de la base de datos y del cliente a menos que se haya establecido a nivel de operación). No aplica a operaciones dentro de transacciones. |
Nivel de operación | Se aplica a la operación de escritura específica. La capacidad de establecer el nivel de confirmación de escritura (write concern) en la operación depende del controlador. Consulta la documentación del controlador. No aplica a operaciones dentro de transacciones. |
La siguiente información se aplica a las operaciones que se ejecutan dentro de transacciones. Para obtener información sobre el nivel de consistencia de lectura relacionado con las operaciones que se ejecutan fuera de las transacciones, haz clic en la pestaña Operations outside Transactions.
Al utilizar los controladores MongoDB, puede anular la preocupación de escritura predeterminada y establecer la preocupación de escritura para las transacciones en los siguientes niveles:
Nivel | Descripción |
|---|---|
Nivel de cliente | Se aplica a las transacciones, a menos que se establezca una preocupación de escritura más detallada para las transacciones en el nivel de sesión/transacción. La preocupación por la escritura de transacciones se aplica a la operación de confirmación y a las operaciones dentro de la transacción. Todas las operaciones dentro de una transacción utilizan el nivel de confirmación de escritura (write concern) de la transacción: cualquier nivel de confirmación de escritura (write concern) establecido a nivel de operación, colección o base de datos se ignora dentro de la transacción. |
Nivel de sesión | Se aplica para las transacciones iniciadas en la sesión, a menos que el nivel de confirmación de escritura (write concern) esté establecido en un nivel de transacción específico. La preocupación por la escritura de transacciones se aplica a la operación de confirmación y a las operaciones dentro de la transacción. Todas las operaciones dentro de una transacción utilizan el nivel de confirmación de escritura (write concern) de la transacción: cualquier nivel de confirmación de escritura (write concern) establecido a nivel de operación, colección o base de datos se ignora dentro de la transacción. |
Nivel de transacción | Se aplica a la transacción específica. La preocupación por la escritura de transacciones se aplica a la operación de confirmación y a las operaciones dentro de la transacción. Todas las operaciones dentro de una transacción utilizan el nivel de confirmación de escritura (write concern) de la transacción: cualquier nivel de confirmación de escritura (write concern) establecido a nivel de operación, colección o base de datos se ignora dentro de la transacción. |
Consulta Transacciones y nivel de confirmación de escritura (write concern) para más información.
Información Adicional
Para más información sobre las preocupaciones de escritura disponibles, consulta nivel de confirmación de escritura (write concern).
Garantías de coherencia causal
Con sesiones de cliente con coherencia causal, las sesiones de cliente solo garantizan la coherencia causal si:
las operaciones de lectura asociadas utilizan el
"majority"nivel de consistencia de lectura, ylas operaciones de escritura asociadas utilizan
"majority"nivel de confirmación de escritura (write concern).