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
/ /

Nivel de confirmación de escritura (write concern) para sets de réplicas

Nivel de confirmación de escritura (write concern) para sets de réplicas describe el número de miembros que contienen datos (es decir, el primario y los secundarios, pero no los árbitros) que deben reconocer una operación de escritura antes de que la operación se considere exitosa. Un nodo solo puede reconocer una operación de guardar después de haberla recibido y aplicado correctamente.

Para set de réplicas:

Para la documentación completa sobre el comportamiento de reconocimiento de guardado, consulta Comportamiento de reconocimiento.

Operación de escritura en un set de réplicas con nivel de confirmación de escritura (write concern) ``w: "mayoría"`` o escritura en el primario/a y al menos un secundario.

Una aplicación que realiza una operación de escritura que requiere acuse de recibo de nivel de confirmación de escritura (write concern) espera hasta que el primario reciba acuse de recibo de los nodos requeridos para el nivel de confirmación de escritura (write concern) especificado. Para nivel de confirmación de escritura (write concern) de w mayor que 1 o w : "majority", el primario espera hasta que el número requerido de secundarios reconozca la escritura antes de devolver la confirmación del nivel de confirmación de escritura (write concern). Para nivel de confirmación de escritura (write concern) de w: 1, el primario puede devolver un reconocimiento de nivel de confirmación de escritura (write concern) tan pronto como aplique localmente el guardado, ya que está capacitado para contribuir al nivel de confirmación de escritura (write concern) solicitado.

Cuantos más nodos confirmen una escritura, es menos probable que los datos escritos se anulen si la principal falla. Sin embargo, especificar un alto nivel de confirmación de escritura (write concern) puede aumentar la latencia, ya que el cliente debe esperar hasta recibir el nivel solicitado de acuse de recibo de nivel de confirmación de escritura (write concern).

Seleccionar el nivel de confirmación de escritura (write concern) ideal para cualquier operación de escritura dada depende de los objetivos de rendimiento de tu aplicación y de los requisitos de durabilidad de los datos. Para obtener más orientación sobre cómo configurar el nivel de confirmación de escritura (write concern) para evitar rollbacks, consulte Evitar rollbacks en el set de réplicas.

La siguiente operación incluye la opción writeConcern para el método insertOne(). La operación especifica: - la "majority" nivel de confirmación de escritura (write concern), y - un tiempo de espera de 5 segundos.

El parámetro wtimeout de nivel de confirmación de escritura (write concern) garantiza que la operación no se bloquee indefinidamente.

db.products.insertOne(
{ item: "envelopes", qty : 100, type: "Clasp" },
{ writeConcern: { w: "majority" , wtimeout: 5000 } }
)

La aplicación espera a que el primario devuelva el acuse de recibo del nivel de confirmación de escritura (write concern), lo que indica que una mayoría calculada de los nodos con derecho a voto que contienen datos acusaron recibo de la operación de escritura. Por ejemplo, en un set de réplicas de 3 nodos (P-S-S), la operación requeriría el acuse de recibo de 2 de los 3 nodos. Si más tarde el set de réplicas se ampliara para incluir dos miembros secundarios adicionales con derecho a voto, la misma operación requeriría el acuse de recibo de 3 de los 5 miembros del set de réplicas. Si el primario no devuelve el reconocimiento de nivel de confirmación de escritura (write concern) dentro del límite de wtimeout, la operación de escritura falla y muestra un error de nivel de confirmación de escritura (write concern).

Una operación de escritura que se agota esperando el nivel de confirmación de escritura (write concern) especificado solo indica que el número requerido de miembros del conjunto de réplicas no reconoció la operación de escritura dentro del periodo de tiempo wtimeout. Esto no implica necesariamente que el principal haya fallado en aplicar el guardar. Los datos pueden existir en un subconjunto de nodos del set de réplicas en el momento del error de nivel de confirmación de escritura (write concern), y pueden seguir replicándose hasta que todos los nodos del clúster tengan esos datos. Las aplicaciones deben tener en cuenta la posible disponibilidad de datos escritos independientemente del estado de reconocimiento del nivel de confirmación de escritura (write concern).

La sintaxis exacta para especificar el nivel de confirmación de escritura (write concern) depende de la operación de escritura. Consulte la documentación de la operación de escritura para obtener instrucciones sobre el soporte y la sintaxis del nivel de confirmación de escritura (write concern). Para una documentación completa sobre el nivel de confirmación de escritura (write concern), consulta nivel de confirmación de escritura (write concern).

Puede modificar el nivel de confirmación de escritura (write concern) por defecto para un set de réplicas emitiendo el comando setDefaultRWConcern.

Si se realiza una operación de escritura con un nivel de confirmación de escritura (write concern) específico, la operación de escritura usa su propio nivel de confirmación de escritura (write concern) en lugar del predeterminado.

Tip

Puedes etiquetar a los nodos de los sets de réplicas y utilizar los conjuntos de etiquetas resultantes para crear niveles de confirmación de escritura (write concern) personalizadas. Consulta Configurar Conjuntos de Etiquetas de set de réplicas para obtener información sobre cómo configurar nivel de confirmación de escritura (write concern) Personalizados usando conjuntos de etiquetas.

Volver

Semántica de lectura y guardado

En esta página