최재영의 개발 일지
GitHubLinkedIn

Read Preference(읽기 설정)

MongoDB#mongodb1분 읽기

읽기 설정 - 데이터베이스 매뉴얼 - MongoDB Docs

read preference는 MongoDB 클라이언트가 Replica Set 환경에서 어떤 노드에서 데이터를 읽을지를 결정하는 설정이다.

애플리케이션의 필요에 따라 데이터 일관성, 가용성, 낮은 지연 시간 사이의 균형을 맞출 수 있다.

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Primary   │     │  Secondary  │     │  Secondary  │
│             │     │             │     │             │
└─────────────┘     └─────────────┘     └─────────────┘
      ▲                   ▲                   ▲
      │                   │                   │
      └─── ReadPreference가 어디서 읽을지 결정 ────┘

Read Preference Modes

모드설명사용 사례
primaryPrimary에서만 읽기 (기본값)항상 최신 데이터가 필요한 경우
primaryPreferredPrimary 우선, 불가능하면 Secondary최신 데이터 선호 + 고가용성
secondarySecondary에서만 읽기읽기 부하 분산, Primary 보호
secondaryPreferredSecondary 우선, 불가능하면 Primary읽기 부하 분산 + 고가용성
nearest네트워크 지연 시간이 가장 짧은 노드지연 시간 최소화가 중요한 경우

추가 옵션

  • tags: 특정 태그가 있는 노드에서만 읽기(예: 특정 지역이나 데이터센터의 노드)
  • maxStaleness: 최대 허용 지연 시간 - 데이터가 얼마나 오래됐는지 허용하는 한계(예: 90초 이내로 복제된 노드에서만 읽기)

주의사항

  • Secondary에서만 읽으면 최신 데이터가 아닐 수 있음
  • 트랜잭션 내부에서는 primary 모드만 사용 가능