복제본 세트에 대한 작업 구성
이 페이지의 내용
개요
이 가이드에서는 쓰기 고려 (write concern), 읽기 고려 (read concern), 읽기 설정 (read preference) 구성을 사용하여 MongoDB가 복제본 세트에서 생성, 읽기, 업데이트 및 삭제(CRUD) 작업을 실행하는 방식을 수정하는 방법에 대해 설명합니다.
이러한 구성은 다음 수준에서 설정하다 수 있습니다.
재정의되지 않는 한 모든 작업 실행에 대한 기본값 을 설정하는 클라이언트
트랜잭션
Database
컬렉션
이 목록은 우선 순위가 오름차순입니다. 예를 예시 클라이언트 와 데이터베이스 수준 모두에서 읽기 고려를 설정하다 하면 데이터베이스 수준에서 지정된 읽기 고려 (read concern) 고려가 클라이언트 수준의 읽기 고려 (read concern) 고려를 재정의합니다.
쓰기 고려
쓰기 고려는 작업이 성공적으로 반환되기 전에 쓰기 (write) 작업에 대해 MongoDB 에서 요청하는 승인 수준을 지정합니다. 명시적인 쓰기 고려 (write concern) 를 지정하지 않은 작업은 전역 기본값 쓰기 고려 (write concern) 설정을 상속합니다.
MongoClientSettings
, MongoDatabaseSettings
또는 MongoCollectionSettings
객체 에서 WriteConcern
옵션을 설정하거나 클라이언트, 데이터베이스 또는 컬렉션 인스턴스 의 WithWriteConcern()
메서드를 사용하여 쓰기 고려 (write concern) 를 설정하다 수 있습니다.
WriteConcern
옵션과 WithWriteConcern()
메서드는 WriteConcern
인스턴스 를 매개 변수로 허용합니다. 다음 값 중 하나를 사용하여 쓰기 고려 (write concern) 를 지정할 수 있습니다.
WriteConcern.Acknowledged
: 쓰기 (write) 작업은 작업이 메모리에 기록된 후 반환됩니다.WriteConcern.W1
: 쓰기 (write) 작업은 세컨더리 노드의 승인을 기다리지 않고 프라이머리 노드 만 쓰기 (write) 작업을 승인한 후에 반환됩니다.WriteConcern.W2
: 프라이머리 노드 와 하나 이상의 세컨더리 노드 가 쓰기 (write) 작업을 승인한 후 쓰기 (write) 작업이 반환됩니다.WriteConcern.W3
: 프라이머리 노드 와 두 개 이상의 세컨더리 노드가 쓰기 (write) 작업을 승인한 후 쓰기 (write) 작업이 반환됩니다.WriteConcern.WMajority
: 대다수의 복제본 세트 멤버가 쓰기 (write) 작업을 승인한 후 쓰기 (write) 작업이 반환됩니다.WriteConcern.Unacknowledged
: 프라이머리 노드 가 쓰기 (write) 작업을 처리한 후 쓰기 (write) 작업이 반환됩니다.
다음 예시 에서는 MongoClient
인스턴스 에 대해 쓰기 고려 (write concern) 를 WriteConcern.WMajority
로 설정합니다.
var mongoClientSettings = MongoClientSettings.FromConnectionString("<connection string URI>"); mongoClientSettings.WriteConcern = WriteConcern.WMajority; var mongoClient = new MongoClient(mongoClientSettings);
다음 예시 에서는 컬렉션 에 대해 쓰기 고려 (write concern) 를 WriteConcern.WMajority
로 설정합니다.
var collection = database.GetCollection<BsonDocument>("<collection name>") .WithWriteConcern(WriteConcern.WMajority);
참고
클라이언트, 컬렉션 및 데이터베이스는 변경할 수 없습니다.
IMongoClient
, IMongoDatabase
및 IMongoCollection
인스턴스는 변경할 수 없습니다. 클라이언트, 데이터베이스 또는 컬렉션 에 쓰기 고려 (write concern) 를 설정하다 하면 메서드는 지정된 설정의 새 인스턴스 를 반환하며 원래 인스턴스 에 영향을 주지 않습니다.
쓰기 고려 (write concern) 고려에 대한 자세한 내용은 MongoDB Server 매뉴얼에서 쓰기 고려 를 참조하세요.
readConcern
읽기 고려는 다음과 같은 동작을 지정합니다.
MongoClientSettings
, MongoDatabaseSettings
또는 MongoCollectionSettings
객체 에서 ReadConcern
옵션을 설정하거나 클라이언트, 데이터베이스 또는 컬렉션 에서 WithReadConcern()
메서드를 사용하여 읽기 고려 (read concern) 를 지정할 수 있습니다.
ReadConcern
옵션과 WithReadConcern()
메서드는 모두 읽기 고려 (read concern) 수준을 지정하는 단일 매개 변수를 허용합니다.
다음과 같은 읽기 고려 (read concern) 수준을 설정하다 수 있습니다.
ReadConcern.Local
: 쿼리 는 인스턴스의 가장 최근 데이터를 반환합니다. 데이터가 대부분의 복제본 세트 멤버에 기록되었다는 보장을 제공하지 않습니다.ReadConern.Available
: 쿼리 는 인스턴스의 가장 최근 데이터를 반환합니다. 데이터가 대부분의 복제본 세트 멤버에 기록되었다는 보장을 제공하지 않습니다.ReadConcern.Available
는 인과적 일관적인 적인 세션 및 트랜잭션에는 사용할 수 없습니다.ReadConcern.Majority
: 쿼리 는 복제본 세트 멤버의 과반수가 승인한 데이터를 반환합니다.ReadConcern.Linearizable
: 쿼리 는 읽기 작업이 시작되기 전에 완료된 모든 성공적인 쓰기를 반영하는 데이터를 반환합니다.ReadConcern.Linearizable
는 인과적 일관적인 적인 세션 및 트랜잭션에는 사용할 수 없습니다.ReadConcern.Snapshot
: 쿼리 는 최근 과거의 특정 단일 점 에서 샤드 전체에 나타나는 대다수 커밋 데이터를 반환합니다.
읽기 고려 (read concern) 고려 수준에 대한 자세한 내용은 MongoDB Server 매뉴얼의 읽기 고려 수준을 참조하세요.
다음 예시 에서는 MongoClient
인스턴스 에 대해 읽기 고려 (read concern) 를 ReadConcern.Majority
로 설정합니다.
var mongoClientSettings = MongoClientSettings.FromConnectionString("<connection string URI>"); mongoClientSettings.ReadConcern = ReadConcern.Majority; var mongoClient = new MongoClient(mongoClientSettings);
다음 예시 에서는 컬렉션 에 대해 읽기 고려 (read concern) 를 ReadConcern.Majority
로 설정합니다.
var collection = database.GetCollection<BsonDocument>("<collection name>") .WithReadConcern(ReadConcern.Majority);
읽기 고려 (read concern) 고려에 학습 보려면 MongoDB Server 매뉴얼에서 읽기 고려 를 참조하세요.
읽기 설정
읽기 설정은 쿼리 를 실행 때 MongoDB 가 읽는 복제본 세트 의 멤버를 결정합니다. MongoClientSettings
, MongoDatabaseSettings
또는 MongoCollectionSettings
객체 에서 ReadPreference
옵션을 설정하거나 클라이언트, 데이터베이스 또는 컬렉션 에서 WithReadPreference()
메서드를 사용하여 읽기 설정 (read preference) 설정하다 지정할 수 있습니다.
ReadPreference
옵션과 WithReadPreference()
메서드는 읽기 설정 (read preference) 모드 를 매개 변수로 허용합니다. 읽기 설정 (read preference) 모드 를 다음 값 중 하나로 설정하다 수 있습니다.
ReadPreference.Primary
: 쿼리 는 프라이머리 노드 에서 데이터를 반환합니다.ReadPreference.PrimaryPreferred
: 쿼리 는 사용 가능한 경우 프라이머리 노드 의 데이터를 반환합니다. 그렇지 않으면 쿼리 는 세컨더리 노드 에서 데이터를 반환합니다.ReadPreference.Secondary
: 쿼리 가 세컨더리 노드 에서 데이터를 반환합니다.ReadPreference.SecondaryPreferred
: 쿼리 는 사용 가능한 경우 세컨더리 노드 에서 데이터를 반환하고, 그렇지 않은 경우 쿼리 는 프라이머리 노드 에서 데이터를 반환합니다.ReadPreference.Nearest
: 쿼리 는 네트워크 지연 시간 이 가장 짧은 노드 의 데이터를 반환합니다.
다음 예시 에서는 MongoClient
인스턴스 에 대해 읽기 설정 (read preference) 을 ReadPreference.Secondary
로 설정합니다.
var mongoClientSettings = MongoClientSettings.FromConnectionString("<connection string URI>"); mongoClientSettings.ReadPreference = ReadPreference.Secondary; var mongoClient = new MongoClient(mongoClientSettings);
다음 예시 에서는 컬렉션 에 대해 읽기 설정 (read preference) 을 ReadPreference.Secondary
로 설정합니다.
var collection = database.GetCollection<BsonDocument>("<collection name>") .WithReadPreference(ReadPreference.Secondary);
읽기 설정 (read preference) 에 대한 자세한 내용은 MongoDB Server 매뉴얼에서 읽기 설정 을 참조하세요.
API 문서
이 가이드 에 설명된 유형에 학습 보려면 다음 API 문서를 참조하세요.