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 conjunto de réplicas con nivel de preocupación de escritura de ``w: "majority"`` o escritura en el primario y al menos en 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 miembros confirmen una escritura, menor será la probabilidad de que los datos escritos se reviertan si falla el servidor principal. Sin embargo, especificar un nivel alto de preocupación por la escritura puede aumentar la latencia, ya que el cliente debe esperar hasta recibir el nivel de confirmación solicitado.

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 hasta que el primario devuelva la confirmación de escritura, lo que indica que una mayoría calculada de los miembros con derecho a voto que contienen datos confirmaron la operación de escritura. Por ejemplo, en un conjunto de réplicas (PSS) de 3 miembros, la operación requeriría la confirmación de 2 de los 3 miembros. Si el conjunto de réplicas se ampliara posteriormente para incluir dos miembros secundarios con derecho a voto adicionales, la misma operación requeriría la confirmación de 3 de los 5 miembros del conjunto de réplicas. Si el primario no devuelve la confirmación de escritura dentro del wtimeout límite de, la operación de escritura falla con un error de escritura.

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 la preocupación de escritura predeterminada para un conjunto de réplicas emitiendo el setDefaultRWConcern comando.

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