쓰기 고려
개요
이 가이드 에서는 Java Reactive Streams 운전자 를 사용하여 쓰기 고려 (write concern) 를 지정하는 방법을 학습 수 있습니다. 쓰기 고려는 쓰기 (write) 작업에 대해 MongoDB 에서 요청한 승인 수준을 설명합니다.
다음 수준에서 쓰기 고려를 구성할 수 있습니다.
MongoDB deployment 의 경우
데이터베이스 의 경우
컬렉션
배포 수준에서 쓰기 고려 구성
다음과 같은 방법으로 배포서버 수준에서 쓰기 고려 (write concern) 를 구성할 수 있습니다.
다음 코드에 표시된 대로
MongoClientSettings
인스턴스 를 만듭니다.MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .applyConnectionString(new ConnectionString("mongodb://host1,host2")) .writeConcern(WriteConcern.MAJORITY) .build()); 다음 코드에 표시된 대로
ConnectionString
인스턴스 를 만듭니다.MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017/?w=majority");
데이터베이스 또는 컬렉션 수준에서 쓰기 고려 구성
다음과 같은 방법으로 데이터베이스 또는 컬렉션 수준에서 쓰기 고려 (write concern) 를 구성할 수 있습니다.
다음 코드와 같이
MongoDatabase
에서withWriteConcern()
메서드를 사용합니다.MongoDatabase database = mongoClient.getDatabase("test").withWriteConcern(WriteConcern.MAJORITY); 다음 코드와 같이
MongoCollection
에서withWriteConcern()
메서드를 사용합니다.MongoCollection<Document> collection = database .getCollection("restaurants") .withWriteConcern(WriteConcern.MAJORITY);
MongoDatabase
MongoCollection
인스턴스는 변경할 수 없습니다. 기존 MongoDatabase
또는 MongoCollection
인스턴스에서 withWriteConcern()
를 호출하면 새 인스턴스가 반환되며 메서드가 호출되는 인스턴스에는 영향을 주지 않습니다.
다음 예제에서 collWithWriteConcern
인스턴스의 쓰기 고려는 majority
인 반면, collection
의 읽기 설정은 영향을 받지 않습니다.
MongoCollection<Document> collWithWriteConcern = collection .withWriteConcern(WriteConcern.MAJORITY);
읽기 고려, 읽기 설정 및 쓰기 고려 결합
읽기 고려, 읽기 설정 및 쓰기 고려의 조합을 포함하도록 MongoClientSettings
, MongoDatabase
또는 MongoCollection
인스턴스를 빌드할 수 있습니다.
예를 들어 다음 코드는 컬렉션 수준에서 이 세 가지를 모두 설정합니다.
Collection = database.getCollection("restaurants") .withReadPreference(ReadPreference.primary()) .withReadConcern(ReadConcern.MAJORITY) .withWriteConcern(WriteConcern.MAJORITY);
추가 정보
쓰기 (write) 고려에 학습 보려면 MongoDB Server 매뉴얼의 쓰기 고려 가이드 를 참조하세요.