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
/

Niveles de consistencia de lectura y de confirmación de escritura por defecto de MongoDB

Herencia de la preocupación de lectura/nivel de confirmación de escritura (write concern)
haga clic para ampliar

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.

"local"

  • Esta preocupación de lectura puede devolver datos que pueden revertirse.

  • Este nivel de consistencia de lectura no garantiza coherencia causal.

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.

Usando el MongoDB drivers, puedes anular el nivel de consistencia de lectura por defecto y establecer nivel de consistencia 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 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 las {transactions} 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 específico.

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.

Para obtener más información sobre los niveles de consistencia de lectura disponibles, consulta Nivel de consistencia de lectura.

Herencia de la preocupación de lectura/nivel de confirmación de escritura (write concern)
haga clic para ampliar

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

{ w: 1 }

4

1

5

3

{ w: "majority" }

  • 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" }.

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 a 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.

Para más información sobre las preocupaciones de escritura disponibles, consulta nivel de confirmación de escritura (write concern).

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, y

  • las operaciones de escritura asociadas utilizan "majority" nivel de confirmación de escritura (write concern).

Volver

Puerto por defecto

En esta página