Docs Menu
Docs Home
/
MongoDB 매뉴얼
/

기본 MongoDB 읽기 고려/쓰기 고려

이 페이지의 내용

  • readConcern
  • 쓰기 고려
  • 인과적 일관성 보장
읽기/쓰기 고려 상속
클릭하여 확대

기본값 읽기 고려 (read concern) 는 다음과 같습니다.

운영
기본 읽기 고려

프라이머리에 대해 읽기

Reads against secondaries.

"local"

  • 이 읽기 고려는 롤백될 수 있는 데이터를 반환할 수 있습니다.

  • 이 읽기 고려는 인과적 일관성을 보장하지 않습니다.

다음 정보는 트랜잭션 외부에서 실행 되는 작업에 적용됩니다. 트랜잭션 내부에서 실행 되는 작업과 관련된 읽기 고려 (read concern) 고려 정보를 보려면 Operations in Transactions 탭 을 클릭합니다.

MongoDB 드라이버 를 사용하면 기본값 읽기 고려 (read concern) 를 재정의하고 다음 수준에서 작업에 대한 읽기 고려 (read concern) 를 설정하다 수 있습니다.

수준
설명

클라이언트 수준

작업에 대한 세분화된 읽기 문제가 데이터베이스/컬렉션/작업 수준에서 설정되지 않는 한 작업에 적용됩니다.

데이터베이스 수준

데이터베이스 컬렉션에 대한 작업에 적용됩니다(예: 클라이언트 읽기 고려 재정의). 단, 컬렉션 수준 또는 작업 수준에서 읽기 고려가 설정된 경우에 한합니다.

트랜잭션 내부의 작업에는 적용되지 않습니다.

컬렉션 수준

컬렉션에 대한 읽기 작업을 적용합니다(예: 데이터베이스/클라이언트 읽기 고려 재정의). 단, 작업 수준에서 읽기 고려가 설정된 경우에 한합니다.

트랜잭션 내부의 작업에는 적용되지 않습니다.

작업 수준

특정 읽기 작업에 적용됩니다(예: 데이터베이스/클라이언트/컬렉션 읽기 고려 재정의).

연산 시 읽기 고려를 설정하는 기능은 드라이버에 따라 다릅니다. 드라이버의 설명서를 참조하세요.

트랜잭션 내부의 작업에는 적용되지 않습니다.

다음 정보는 트랜잭션 내부에서 실행 되는 작업에 적용됩니다. 트랜잭션 외부에서 실행 되는 작업과 관련된 읽기 고려 (read concern) 고려 정보를 보려면 Operations outside Transactions 탭 을 클릭합니다.

MongoDB 드라이버 를 사용하면 기본값 읽기 고려 (read concern) 를 재정의하고 다음 수준에서 트랜잭션에 대한 읽기 고려 (read concern) 를 설정하다 수 있습니다.

수준
설명

클라이언트 수준

세션/트랜잭션 수준에서 더 세분화된 읽기 고려를 설정하지 않는 한 트랜잭션에 적용됩니다.

트랜잭션 내의 모든 작업은 트랜잭션 읽기 고려 (read concern) 를 사용합니다. 작업, 컬렉션 또는 데이터베이스 수준에서 설정하다 모든 읽기 고려 (read concern) 는 트랜잭션 내부에서 무시됩니다.

세션 수준

세션에서 시작된 트랜잭션에 적용됩니다(예: 클라이언트 읽기 고려 재정의). 단, 특정 트랜잭션 수준에서 더 세분화된 읽기 고려 수준을 설정하지 않아야 합니다.

트랜잭션 내의 모든 작업은 트랜잭션 읽기 고려 (read concern) 를 사용합니다. 작업, 컬렉션 또는 데이터베이스 수준에서 설정하다 모든 읽기 고려 (read concern) 는 트랜잭션 내부에서 무시됩니다.

자세한 내용은 트래잭션 및 읽기 고려를 참조하세요.

트랜잭션 수준

특정 트랜잭션에 적용됩니다(예: 클라이언트/세션 읽기 고려 재정의).

트랜잭션 내의 모든 작업은 트랜잭션 읽기 고려 (read concern) 를 사용합니다. 작업, 컬렉션 또는 데이터베이스 수준에서 설정하다 모든 읽기 고려 (read concern) 는 트랜잭션 내부에서 무시됩니다.

자세한 내용은 트래잭션 및 읽기 고려를 참조하세요.

사용 가능한 읽기 고려에 대한 자세한 내용은 읽기 고려를 참조하세요.

읽기/쓰기 고려 상속
클릭하여 확대

MongoDB 5.0부터 암시적 기본 쓰기 우려는 w: majority입니다. 그러나 중재자가 포함된 배포의 경우 특별히 고려해야 할 사항이 있습니다.

  • 복제 세트의 투표 과반수는 1에 투표 회원 수의 절반을 반올림한 값입니다. 데이터를 포함하는 투표 구성원의 수가 투표 과반수보다 많지 않은 경우 기본 쓰기 문제는 { w: 1 } 입니다.

  • 다른 모든 시나리오에서 기본 쓰기 우려는 { w: "majority" }입니다.

특히 MongoDB는 다음 공식을 사용하여 기본 쓰기 문제를 결정합니다.

if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ]
defaultWriteConcern = { w: 1 }
else
defaultWriteConcern = { w: "majority" }

예를 들어 다음 배포와 해당 기본 쓰기 문제를 고려해보세요.

Non-Arbiters
중재자
투표 노드
과반수 투표 노드
자세한 내용은 암시적 기본 쓰기 고려를 참조하세요.

2

1

3

2

{ w: 1 }

4

1

5

3

{ w: "majority" }

  • 첫 번째 예시에서는

    • 총 3개의 투표 노드에는 2명의 비중재자와 1명의 중재자가 있습니다.

    • 투표 노드의 대다수(1 + 3의 절반, 반내림)는 2입니다.

    • 비중재자 수(2)는 대다수의 투표 노드(2)와 동일하므로 { w: 1 } 의 암시적 쓰기 문제가 발생합니다.

  • 두 번째 예시에서는

    • 총 5개의 투표 노드에는 4명의 비중재자와 1명의 중재자가 있습니다.

    • 투표 노드의 대다수(1 + 5의 절반, 반내림)는 3입니다.

    • 비 중재자 (4) 의 수가 투표 노드 (3) 의 과반수보다 많아서 암묵적인 쓰기 문제가 { w: "majority" } 발생합니다.

다음 정보는 트랜잭션 외부에서 실행 되는 작업에 적용됩니다. 트랜잭션 내부에서 실행 되는 작업과 관련된 읽기 고려 (read concern) 고려 정보를 보려면 Operations in Transactions 탭 을 클릭합니다.

MongoDB 드라이버를 사용하면 기본 쓰기 고려를 재정의하고 다음 수준에서 연산에 대한 쓰기 고려를 설정할 수 있습니다.

수준
설명

클라이언트 수준

작업에 대한 세분화된 쓰기 문제가 작업/데이터베이스/컬렉션에서 설정되지 않는 한 작업에 적용됩니다.

데이터베이스 수준

데이터베이스 컬렉션에 대한 쓰기 작업에 적용됩니다(예: 클라이언트 쓰기 고려 재정의). 단, 컬렉션 수준 또는 작업 수준에서 쓰기 고려가 설정된 경우에 한합니다.

트랜잭션 내부의 작업에는 적용되지 않습니다.

컬렉션 수준

컬렉션에 대한 쓰기 작업에 적용합니다(예: 데이터베이스 및 클라이언트 쓰기 고려 재정의). 단, 작업 수준에서 쓰기 고려가 설정된 경우에 한합니다.

트랜잭션 내부의 작업에는 적용되지 않습니다.

작업 수준

특정 쓰기 작업에 적용됩니다.

작업 시 쓰기 고려를 설정하는 기능은 드라이버에 따라 다릅니다. 드라이버 설명서를 참조하세요.

트랜잭션 내부의 작업에는 적용되지 않습니다.

다음 정보는 트랜잭션 내부에서 실행 되는 작업에 적용됩니다. 트랜잭션 외부에서 실행 되는 작업과 관련된 읽기 고려 (read concern) 고려 정보를 보려면 Operations outside Transactions 탭 을 클릭합니다.

MongoDB 드라이버를 사용하면 다음 수준에서 기본 쓰기 고려를 재정의하고 트랜잭션에 대한 쓰기 고려를 설정할 수 있습니다.

수준
설명

클라이언트 수준

세션/트랜잭션 수준에서 더 세분화된 쓰기 고려를 설정하지 않는 한 트랜잭션에 적용됩니다.

트랜잭션 쓰기 고려는 커밋 작업과 트랜잭션 내부의 작업에 적용됩니다.

트랜잭션 내의 모든 작업은 트랜잭션 쓰기 고려 (write concern) 를 사용합니다. 작업, 컬렉션 또는 데이터베이스 수준에서 설정하다 모든 쓰기 고려 (write concern) 는 트랜잭션 내부에서 무시됩니다.

세션 수준

특정 트랜잭션 수준에서 쓰기 고려 수준을 설정하지 않은 경우 세션에서 시작된 트랜잭션에 적용됩니다.

트랜잭션 쓰기 고려는 커밋 작업과 트랜잭션 내부의 작업에 적용됩니다.

트랜잭션 내의 모든 작업은 트랜잭션 쓰기 고려 (write concern) 를 사용합니다. 작업, 컬렉션 또는 데이터베이스 수준에서 설정하다 모든 쓰기 고려 (write concern) 는 트랜잭션 내부에서 무시됩니다.

트랜잭션 수준

특정 트랜잭션 에 적용됩니다.

트랜잭션 쓰기 고려는 커밋 작업과 트랜잭션 내부의 작업에 적용됩니다.

트랜잭션 내의 모든 작업은 트랜잭션 쓰기 고려 (write concern) 를 사용합니다. 작업, 컬렉션 또는 데이터베이스 수준에서 설정하다 모든 쓰기 고려 (write concern) 는 트랜잭션 내부에서 무시됩니다.

자세한 내용은 트랜잭션 및 쓰기 고려를 참조하세요.

사용 가능한 쓰기 고려에 대한 자세한 내용은 쓰기 고려를 참조하세요.

인과적으로 일관된 클라이언트 세션의 경우, 클라이언트 세션은 다음과 같은 경우에만 인과적 일관성을 보장합니다.

  • 관련된 읽기 작업은 "majority" 읽기 고려를 사용합니다.

  • 관련 쓰기 작업은 "majority" 쓰기 고려를 사용합니다.

돌아가기

기본 포트