Configuración de Write Concern y Read Concern en AWS DocumentDB

El Write Concern define las condiciones que MongoDB debe cumplir antes de confirmar que una operación de escrituar fue exitosa. Indica cuántos nodos deben confirmar que la escritura ha sido persistida. ### Niveles de Write Concern

  • w: 0: No espera confirmación; el cliente no espera ninguna verificación de la operación de escritura (no recomendado).
  • w: 1: Espera confirmación del nodo principal.
  • w: "mayoría": Espera confirmación de la mayoría de los miembros del conjunto de réplicas.
  • j: true: Asegura que la escritura se haya registrado en el diario de disco, ofreciendo mayor durabilidad.

Ejemplo de Configuración


import com.mongodb.MongoClientSettings;
import com.mongodb.WriteConcern;

public class ConfiguracionEjemplo {
    public static void configurar() {
        MongoClientSettings settings = MongoClientSettings.builder()
            .writeConcern(new WriteConcern(1, true, 2000)) // Confirmación de mayoría con registro en disco
            .build();
    }
}

Leer Preocupaciones (Read Concern)

El Read Concern define el nivel de aislamiento y consistencia para las operaciones de lectura. ### Niveles de Read Concern

  • local: Lee los datos más recientes del nodo local.
  • mayoría: Lee datos confirmados por la mayoría de los nodos.
  • linearizable: Ofrece la máxima consistencia.

Ejemplo de Configuración


import com.mongodb.MongoClientSettings;
import com.mongodb.ReadConcern;

public class ConfiguracionLectura {
    public static void configurar() {
        MongoClientSettings settings = MongoClientSettings.builder()
            .readConcern(ReadConcern.MAJORITY) // Lectura de mayoría
            .build();
    }
}

Configuración Combinada

Ambas configuraciones pueden combinarse para ajustar el comportamiento de MongoDB según sea necesario. ```

import com.mongodb.MongoClientSettings; import com.mongodb.ReadConcern; import com.mongodb.WriteConcern;

public class ConfiguracionCombinada { public static void configurar() { MongoClientSettings settings = MongoClientSettings.builder() .writeConcern(new WriteConcern(1, true, 2000)) .readConcern(ReadConcern.MAJORITY) .build(); } }


Implementación en AWS DocumentDB
--------------------------------

AWS DocumentDB admite configuraciones similares. Sin embargo, dado que es un servicio administrado, algunas opciones están limitadas. ### Ejemplo de Implementación

import com.mongodb.MongoClientSettings; import com.mongodb.ServerAddress; import com.mongodb.WriteConcern;

import java.util.Collections;

public class DocumentDBConfig { public static void main(String[] args) { WriteConcern writeConcern = new WriteConcern(1, true, 1000); // Confirmación de mayoría

    MongoClientSettings settings = MongoClientSettings.builder()
        .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("endpoint", 27017))))
        .writeConcern(writeConcern)
        .build();
}

}


¿Son Necesarias Ambas Configuraciones?
--------------------------------------

No, las configuraciones de *Write Concern* y *Read Concern* pueden utilizarse independientemente. Cada una responde a necesidades específicas de consistencia y durabilidad. </div>

Etiquetas: AWS DocumentDB MongoDB java

Publicado el 8-27 13:51