AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

읽기 고려 'majority'

"majority"

다중 문서 트랜잭션과 관련이 없는 읽기 작업의 경우, 읽기 고려 "majority"은(는) 읽은 데이터를 복제본 세트 멤버의 과반수가 승인했음을 보장합니다(즉, 읽은 문서는 지속될 수 있으며 롤백되지 않도록 보장). 읽은 문서는 내구성이 뛰어나고 롤백되지 않음이 보장됩니다.

다중 문서 트랜잭션에서 수행되는 작업의 경우, 읽기 고려 (read concern) 는 트랜잭션 "majority" 쓰기 고려 (write concern) "majority"와 함께 커밋되는 경우에만 보장 을 제공합니다. 그렇지 않으면 읽기 고려 (read concern) 트랜잭션에서 읽은 데이터에 대한 "majority" 보장 제공하지 않습니다.

읽기 고려 수준에 관계없이 노드의 최신 데이터는 시스템에 있는 데이터의 최신 버전을 반영하지 않을 수 있습니다.

프라이머리에 장애가 발생하는 경우 어떻게 되는지 자세히 알아보려면 자동 페일오버를 참조하세요.

각 복제본 세트 멤버는 과반수 커밋 포인트의 데이터 뷰를 메모리에 유지하며, 과반수 커밋 포인트는 프라이머리에서 계산합니다. 읽기 고려 "majority"를 해결하기 위해 노드는 이 뷰에서 데이터를 반환하며 성능 측면에서 다른 읽기 고려와 비슷합니다.

읽기 고려 (read concern) "majority" 는 쿼리 성능을 저하시키지 않습니다. 클라이언트에게 반환되는 내용만 수정합니다. 읽기 고려 (read concern) "majority" 는 복제본 세트에 있는 과반수의 노드에 지속적으로 저장된 데이터만 클라이언트로 반환하도록 허용합니다. 이에 비해 읽기 고려 (read concern) "local" 가 있는 쿼리는 롤백 과 같은 특정 시나리오에서 손실될 수 있는 데이터를 반환할 수 있습니다.

읽기 고려 는 인과적으로 일관적인 세션과 트랜잭션의 유무에 관계없이 사용할 수 "majority" 있습니다.

경고

프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용 중이라면 다음을 고려하세요.

  • 쓰기 고려 (write concern) "majority" 는 세컨더리를 사용할 수 없거나 지연되었을 때 성능 문제를 일으키습니다. 이러한 문제를 완화하는 방법에 대핕 조언은 자체 관리형 PSA 복제본 세트를 통한 성능 문제 완화를 참조하세요.

  • 글로벌 기본값 를 사용하고 있고 쓰기 고려 (write concern) 과반수 크기보다 작으면 쿼리가 오래된 (완전히 복제되지 않은) 부실 데이터를 반환할 수 있습니다."majority"

세 멤버로 구성된 복제본 세트에 0을 쓰는 쓰기 작업의 다음 타임라인을 고려해 보십시오.

참고

단순화를 위해 이 예시에서는 다음과 같은 상황을 가정합니다.

  • 쓰기 0 이전의 모든 쓰기가 모든 구성원에 성공적으로 복제되었습니다.

  • 쓰기 이전은 쓰기 0 이전의 이전 쓰기입니다.

  • Write 0 이후에는 다른 쓰기가 발생하지 않았습니다.

3 노드 복제본 세트에 대한 쓰기 작업의 타임라인
시간
이벤트
가장 최근 글
가장 최근 w: "대다수" 쓰기

t 0

기본 적용 쓰기 0

0
1프라이머리:쓰기
2세컨더리: 이전 쓰기 세컨더리: 이전 쓰기

프라이머리: 이전 쓰기
1세컨더리: 이전 쓰기
2세컨더리: 이전 쓰기

t 1

보조 1은 쓰기 0을적용합니다.

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리:이전 쓰기

프라이머리: 이전 쓰기
1세컨더리: 이전 쓰기
2세컨더리: 이전 쓰기

2

보조 2 는 쓰기 0을 적용합니다.

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리: 쓰기 0

프라이머리: 이전 쓰기
1세컨더리: 이전 쓰기
2세컨더리: 이전 쓰기

t 3

프라이머리는 세컨더리 1에 성공적으로 복제되었음을 알리고 클라이언트에 확인 메시지를 보냅니다.

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리: 쓰기 0

0
1프라이머리:쓰기
2세컨더리: 이전 쓰기 세컨더리: 이전 쓰기

t 4

주 서버가 보조 서버 2로복제가 성공했음을 인식합니다.

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리: 쓰기 0

0
1프라이머리:쓰기
2세컨더리: 이전 쓰기 세컨더리: 이전 쓰기

t 5

보조 1은 (정기적인 복제 메커니즘을 통해) 가장 최근의 w에 대한 스냅샷을 업데이트하라는 알림을 받습니다. "majority" 쓰기

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리: 쓰기 0

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리:이전 쓰기

t 6

보조 2는 (정기적인 복제 메커니즘을 통해) 가장 최근의 w에 대한 스냅샷을 업데이트하라는 알림을 받습니다. "majority" 쓰기

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리: 쓰기 0

프라이머리: 쓰기 0
1세컨더리: 쓰기 0
2세컨더리: 쓰기 0

그런 다음 다음 표에는 읽기 고려 (read concern) 있는 읽기 작업이 시간 에 볼 수 있는 데이터 상태 가 요약되어 "majority" T 있습니다.

세 멤버 복제본 세트에 대한 쓰기 작업의 타임라인입니다.
대상 읽기
시간 T
데이터 상태

기본

t 이전 3

데이터는 이전쓰기를 반영합니다.

기본

t 이후 3

데이터는 쓰기 0을반영합니다.

중고등 교육 1

t 이전 5

데이터는 이전쓰기를 반영합니다.

중고등 교육 1

t 이후 5

데이터는 쓰기 0을반영합니다.

중고등 교육 2

t 이전 또는 t 6

데이터는 이전쓰기를 반영합니다.

중고등 교육 2

t 이후 6

데이터는 쓰기 0을반영합니다.

"majority" 읽기 고려 는 WiredTiger 스토리지 엔진 에 사용할 수 있습니다.

serverStatus 명령은 스토리지 엔진이 "majority" 읽기 고려를 지원하는지 여부를 나타내는 storageEngine.supportsCommittedReads 필드를 반환합니다.

참고

개별 작업 수준이 아닌 트랜잭션 수준에서 읽기 문제를 설정합니다. 트랜잭션에 대한 읽기 문제를 설정하려면 트랜잭션 및 읽기 문제를 참조하십시오.

다중 문서 트랜잭션에서 수행되는 작업의 경우, 읽기 고려 (read concern) 는 트랜잭션 "majority" 쓰기 고려 (write concern) "majority"와 함께 커밋되는 경우에만 보장 을 제공합니다. 그렇지 않으면 읽기 고려 (read concern) 트랜잭션에서 읽은 데이터에 대한 "majority" 보장 제공하지 않습니다.

단계를 포함하는 "majority" 집계 $out 에 대해 읽기 고려 (read concern) 수준 을 지정할 수 있습니다.

쓰기에서 승인을 요청하는 경우 인과적으로 일관된 세션을 사용하여 자신의 쓰기를 읽을 수 있습니다.

MongoDB 5.0부터는 스토리지 엔진 개선으로 인해 enableMajorityReadConcern--enableMajorityReadConcern 변경할 수 없으며 항상 true으로 설정됩니다.

이전 버전의 MongoDB에서는 enableMajorityReadConcern--enableMajorityReadConcern 구성할 수 있으며 false으로 설정하여 스토리지 캐시 압력으로 인해 3멤버 PSA(Primary-Secondary-Arbiter) 아키텍처를 사용하는 배포가 고정되지 않도록 방지할 수 있습니다.

프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용 중이라면 다음을 고려하세요.

  • 쓰기 고려 (write concern) "majority" 는 세컨더리를 사용할 수 없거나 지연되었을 때 성능 문제를 일으키습니다. 이러한 문제를 완화하는 방법에 대핕 조언은 자체 관리형 PSA 복제본 세트를 통한 성능 문제 완화를 참조하세요.

  • 글로벌 기본값 를 사용하고 있고 쓰기 고려 (write concern) 과반수 크기보다 작으면 쿼리가 오래된 (완전히 복제되지 않은) 부실 데이터를 반환할 수 있습니다."majority"