readConcern
Preocupación de lectura predeterminada
El predeterminado La preocupación leída es la siguiente:
Operaciones | Preocupación de lectura predeterminada |
|---|---|
Lecturas contra las primarias |
|
Reads against secondaries. |
|
Especificar preocupación de lectura: Controladores MongoDB
La siguiente información se aplica a las operaciones que se ejecutan fuera de las transacciones. Para obtener información sobre las operaciones que se ejecutan dentro de las transacciones, haga Operations in Transactions clic en la pestaña.
Usando el Controladores de MongoDB, puede anular la preocupación de lectura predeterminada y configurar la preocupación de lectura para 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 operaciones de lectura en la colección (es decir, anula la preocupación de lectura de la base de datos/cliente) a menos que se haya establecido una preocupación de lectura en el nivel de operación. No aplica a operaciones dentro de transacciones. |
Nivel de operación | Se aplica a la operación de lectura específica (es decir, anula la preocupación de lectura de 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 las transacciones. Para obtener información sobre las operaciones que se ejecutan fuera de las transacciones, haga Operations outside Transactions clic en la pestaña.
Al utilizar los controladores MongoDB, puede anular la preocupación de lectura predeterminada y establecer la preocupación de lectura 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 lectura más detallada en el nivel de sesión/transacción. Todas las operaciones dentro de una transacción utilizan la preocupación de lectura de la transacción: cualquier preocupación de lectura establecida en el nivel de operación, colección o base de datos se ignora dentro de la transacción. |
Nivel de sesión | Se aplica a las transacciones iniciadas en la sesión (es decir, anula la preocupación de lectura del cliente) a menos que se establezca un nivel de preocupación de lectura más detallado en un nivel de transacción específico. Todas las operaciones dentro de una transacción utilizan la preocupación de lectura de la transacción: cualquier preocupación de lectura establecida en el nivel de operación, colección o base de datos se ignora 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 la preocupación de lectura del cliente/sesión). Todas las operaciones dentro de una transacción utilizan la preocupación de lectura de la transacción: cualquier preocupación de lectura establecida en el nivel de operación, colección o base de datos se ignora 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 las inquietudes de lectura disponibles, consulte Inquietud de lectura.
Nivel de confirmación de escritura
Nivel de confirmación de escritura (write concern) por defecto
La nivel de confirmación de escritura (write concern) predeterminada implícita es w: majority. w: majority asegura la durabilidad de la escritura exigiendo que los sets de réplicas esperen el registro en la bitácora en disco por defecto, controlada por writeConcernMajorityJournalDefault. Sin embargo, hay un caso límite 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" }.
Especificar preocupación de escritura: Controladores MongoDB
La siguiente información se aplica a las operaciones que se ejecutan fuera de las transacciones. Para obtener información sobre las operaciones que se ejecutan dentro de las transacciones, haga Operations in Transactions clic en la pestaña.
Al utilizar los controladores MongoDB, puede anular la preocupación de escritura predeterminada y establecer la preocupación de escritura 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 escritura más detallada para una operación en la operación/base de datos/colección. |
Nivel de base de datos | Se aplica a las operaciones de escritura en las colecciones de la base de datos (es decir, anula la preocupación de escritura del cliente) a menos que se haya establecido una preocupación de escritura en el nivel de colección o en el 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 posibilidad de configurar la escritura 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 las transacciones. Para obtener información sobre las operaciones que se ejecutan fuera de las transacciones, haga Operations outside Transactions clic en la pestaña.
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 la preocupación de escritura de transacción: cualquier preocupación de escritura establecida en el nivel de operación, colección o base de datos se ignora dentro de la transacción. |
Nivel de sesión | Se aplica a transacciones iniciadas en la sesión, a menos que el nivel de escritura 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 la preocupación de escritura de transacción: cualquier preocupación de escritura establecida en el 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 la preocupación de escritura de transacción: cualquier preocupación de escritura establecida en el 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 obtener más información sobre las inquietudes de escritura disponibles,consulte Inquietud de escritura.
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 la preocupación de
"majority"escritura.