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>