Docs Menu
Docs Home
/ / /
C 드라이버

복제본 세트에 대한 작업 구성

이 페이지의 내용

  • 개요
  • 쓰기 고려
  • readConcern
  • 읽기 설정
  • API 문서

이 가이드에서는 쓰기 고려 (write concern), 읽기 고려 (read concern), 읽기 설정 (read preference) 구성을 사용하여 MongoDB가 복제본 세트에서 생성, 읽기, 업데이트 및 삭제(CRUD) 작업을 실행하는 방식을 수정하는 방법에 대해 설명합니다.

이러한 구성은 다음 수준에서 설정하다 수 있습니다.

  1. 재정의되지 않는 한 모든 작업 실행에 대한 기본값 을 설정하는 클라이언트

  2. 트랜잭션

  3. Database

  4. 컬렉션

앞의 목록은 우선 순위가 오름차순입니다. 예를 예시 클라이언트 와 데이터베이스 수준 모두에서 읽기 고려를 설정하다 하면 데이터베이스 수준에서 지정된 읽기 고려 (read concern) 고려가 클라이언트 수준의 읽기 고려 (read concern) 고려를 재정의합니다.

쓰기 고려는 작업이 성공적으로 반환되기 전에 쓰기 (write) 작업에 대해 MongoDB 에서 요청하는 승인 수준을 지정합니다. 명시적인 쓰기 고려 (write concern) 를 지정하지 않은 작업은 전역 기본값 쓰기 고려 (write concern) 설정을 상속합니다.

다음 함수를 호출하여 쓰기 고려 (write concern) 를 설정하다 수 있습니다.

  • mongoc_client_set_write_concern() 클라이언트 에 쓰기 고려 (write concern) 를 설정합니다.

  • mongoc_transaction_opts_set_write_concern() 트랜잭션 에 쓰기 고려 (write concern) 를 설정합니다.

  • mongoc_database_set_write_concern() 데이터베이스에 대한 쓰기 고려 (write concern) 고려를 설정합니다.

  • mongoc_collection_set_write_concern() 컬렉션 에 쓰기 고려 (write concern) 를 설정합니다.

쓰기 고려 (write concern) 수준을 지정하려면 mongoc_write_concern_set_w() 함수를 호출하고 쓰기 고려 (write concern) 와 다음 값 중 하나를 전달합니다.

  • MONGOC_WRITE_CONCERN_W_DEFAULT: 쓰기 (write) 작업은 작업이 메모리에 기록된 후 반환됩니다.

  • 0: 프라이머리 노드 가 쓰기 (write) 작업을 처리한 후 쓰기 (write) 작업이 반환됩니다.

  • 1: 쓰기 (write) 작업은 세컨더리 노드의 승인을 기다리지 않고 프라이머리 노드 만 쓰기 (write) 작업을 승인한 후에 반환됩니다.

  • MONGOC_WRITE_CONCERN_W_MAJORITY: 대다수의 복제본 세트 멤버가 쓰기 (write) 작업을 승인한 후 쓰기 (write) 작업이 반환됩니다.

  • MONGOC_WRITE_CONCERN_W_TAG: 지정된 태그를 지정하다 가 있는 복제본 세트 멤버가 쓰기 (write) 작업을 승인한 후 쓰기 (write) 작업이 반환됩니다.

다음 예시 에서는 mongoc_client_t 인스턴스 에 대해 쓰기 고려 (write concern) 를 MONGOC_WRITE_CONCERN_W_MAJORITY 로 설정합니다.

// Create a new client instance
mongoc_client_t *client = mongoc_client_new ("<connection string>");
// Create a new write concern
mongoc_write_concern_t *write_concern = mongoc_write_concern_new ();
mongoc_write_concern_set_w (write_concern, MONGOC_WRITE_CONCERN_W_MAJORITY);
// Set the write concern on the client
mongoc_client_set_write_concern (client, write_concern);

다음 예시 에서는 컬렉션 에 대해 쓰기 고려 (write concern) 를 MONGOC_WRITE_CONCERN_W_MAJORITY 로 설정합니다.

mongoc_collection_t *collection = mongoc_client_get_collection (client, "<database name>", "<collection name>");
// Create a new write concern
mongoc_write_concern_t *write_concern = mongoc_write_concern_new ();
mongoc_write_concern_set_w (write_concern, MONGOC_WRITE_CONCERN_W_MAJORITY);
// Set the write concern on the collection
mongoc_collection_set_write_concern (collection, write_concern);

참고

컬렉션과 데이터베이스는 변경할 수 없습니다.

mongoc_database_t mongoc_collection_t 인스턴스는 변경할 수 없습니다. 데이터베이스 나 컬렉션 에 쓰기 고려 (write concern) 를 설정하다 하면 이 메서드는 새 인스턴스 를 반환하며 원래 인스턴스 에 영향을 주지 않습니다.

쓰기 고려 (write concern) 고려에 대한 자세한 내용은 MongoDB Server 매뉴얼에서 쓰기 고려 를 참조하세요.

읽기 고려는 다음과 같은 동작을 지정합니다.

다음 함수를 호출하여 읽기 고려 (read concern) 를 지정할 수 있습니다.

  • mongoc_client_set_read_concern() 클라이언트 에 읽기 고려 (read concern) 를 설정합니다.

  • mongoc_transaction_opts_set_read_concern() 트랜잭션 에 읽기 고려 (read concern) 를 설정합니다.

  • mongoc_database_set_read_concern() 데이터베이스 에 읽기 고려 (read concern) 를 설정합니다.

  • mongoc_collection_set_read_concern() 컬렉션 에 읽기 고려 (read concern) 를 설정합니다.

읽기 고려 (read concern) 수준을 지정하려면 mongoc_read_concern_set_level() 함수를 호출하고 읽기 고려 (read concern) 와 다음 값 중 하나를 전달합니다.

  • MONGOC_READ_CONCERN_LEVEL_LOCAL: 쿼리 는 인스턴스의 가장 최근 데이터를 반환합니다. 데이터가 대부분의 복제본 세트 멤버에 기록되었다는 보장을 제공하지 않습니다.

  • MONGOC_READ_CONCERN_LEVEL_AVAILABLE: 쿼리 는 인스턴스의 가장 최근 데이터를 반환합니다. 데이터가 대부분의 복제본 세트 멤버에 기록되었다는 보장을 제공하지 않습니다. ReadConcern.AVAILABLE 는 인과적 일관적인 적인 세션 및 트랜잭션에는 사용할 수 없습니다.

  • MONGOC_READ_CONCERN_LEVEL_MAJORITY: 쿼리 는 복제본 세트 멤버의 과반수가 승인한 데이터를 반환합니다.

  • MONGOC_READ_CONCERN_LEVEL_LINEARIZABLE: 쿼리 는 읽기 작업이 시작되기 전에 완료된 모든 성공적인 쓰기를 반영하는 데이터를 반환합니다. MONGOC_READ_CONCERN_LEVEL_LINEARIZABLE 는 인과적 일관적인 적인 세션 및 트랜잭션에는 사용할 수 없습니다.

  • MONGOC_READ_CONCERN_LEVEL_SNAPSHOT: 쿼리 는 최근 과거의 특정 단일 점 에서 샤드 전체에 나타나는 대다수 커밋 데이터를 반환합니다.

읽기 고려 (read concern) 고려 수준에 대한 자세한 내용은 MongoDB Server 매뉴얼의 읽기 고려 수준을 참조하세요.

다음 예시 에서는 mongoc_client_t 인스턴스 에 대해 읽기 고려 (read concern) 를 MONGOC_READ_CONCERN_LEVEL_MAJORITY 로 설정합니다.

mongoc_client_t *client = mongoc_client_new ("<connection string>");
// Create a new read concern
mongoc_read_concern_t *read_concern = mongoc_read_concern_new ();
// Set the read concern level
mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_MAJORITY);
// Set the read concern on the client
mongoc_client_set_read_concern (client, read_concern);

다음 예시 에서는 컬렉션 에 대해 읽기 고려 (read concern) 를 MONGOC_READ_CONCERN_LEVEL_MAJORITY 로 설정합니다.

mongoc_collection_t *collection = mongoc_client_get_collection (client, "<database name>", "<collection name>");
// Create a new read concern
mongoc_read_concern_t *read_concern = mongoc_read_concern_new ();
// Set the read concern level
mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_MAJORITY);
// Set the read concern on the collection
mongoc_collection_set_read_concern (collection, read_concern);

읽기 고려 (read concern) 고려에 학습 보려면 MongoDB Server 매뉴얼에서 읽기 고려 를 참조하세요.

읽기 설정은 쿼리 를 실행 때 MongoDB 가 읽는 복제본 세트 의 멤버를 결정합니다. 다음 함수를 호출하여 읽기 설정 (read preference) 설정하다 지정할 수 있습니다.

  • mongoc_client_set_read_prefs() 클라이언트 에서 읽기 설정 (read preference) 을 설정합니다.

  • mongoc_transaction_opts_set_read_prefs() 트랜잭션 에 대한 읽기 설정( 읽기 설정 (read preference) )을 설정합니다.

  • mongoc_database_set_read_prefs() 데이터베이스 에 대한 읽기 설정 (read preference) 을 설정합니다.

  • mongoc_collection_set_read_prefs() 컬렉션 에 대한 읽기 설정( 읽기 설정 (read preference) )을 설정합니다.

읽기 설정 (read preference) 수준을 지정하려면 mongoc_read_prefs_new() 함수를 호출하고 다음 값 중 하나를 전달합니다.

  • MONGOC_READ_PRIMARY: 쿼리 는 프라이머리 노드 에서 데이터를 반환합니다.

  • MONGOC_READ_PRIMARY_PREFERRED: 쿼리 는 사용 가능한 경우 프라이머리 노드 의 데이터를 반환합니다. 그렇지 않으면 쿼리 는 세컨더리 노드 에서 데이터를 반환합니다.

  • MONGOC_READ_SECONDARY: 쿼리 가 세컨더리 노드 에서 데이터를 반환합니다.

  • MONGOC_READ_SECONDARY_PREFERRED: 쿼리 는 사용 가능한 경우 세컨더리 노드 에서 데이터를 반환하고, 그렇지 않은 경우 쿼리 는 프라이머리 노드 에서 데이터를 반환합니다.

  • MONGOC_READ_NEAREST: 쿼리 는 네트워크 지연 시간 이 가장 짧은 노드 의 데이터를 반환합니다.

다음 예시 에서는 mongoc_client_t 인스턴스 에 대해 읽기 설정 (read preference) 을 MONGOC_READ_SECONDARY 로 설정합니다.

mongoc_client_t *client = mongoc_client_new ("<connection string>");
// Create a new read preference
mongoc_read_prefs_t *read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
// Set the read preference on the client
mongoc_client_set_read_prefs (client, read_prefs);

다음 예시 에서는 컬렉션 에 대해 읽기 설정 (read preference) 을 MONGOC_READ_SECONDARY 로 설정합니다.

mongoc_collection_t *collection = mongoc_client_get_collection (client, "<database name>", "<collection name>");
// Create a new read preference
mongoc_read_prefs_t *read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
// Set the read preference on the collection
mongoc_collection_set_read_prefs (collection, read_prefs);

읽기 설정 (read preference) 에 대한 자세한 내용은 MongoDB Server 매뉴얼에서 읽기 설정 을 참조하세요.

이 가이드 에 설명된 함수 또는 유형에 학습 보려면 다음 API 문서를 참조하세요.

돌아가기

드라이버 빌드