본문 바로가기

IT/몽고DB

몽고DB - mongos

반응형

MongoDB에서 mongos는 주로 라우터(Router) 역할을 담당하지만, 이를 넘어서 몇 가지 중요한 기능을 수행합니다.

1. 라우팅 기능 (Primary Role)
  • 클라이언트 애플리케이션으로부터의 요청을 적절한 샤드로 라우팅합니다.
  • 애플리케이션은 샤딩된 데이터베이스 구조를 신경 쓸 필요 없이 mongos에 연결하여 데이터에 접근할 수 있습니다.
  • mongos는 Config 서버로부터 메타데이터를 가져와 어떤 요청을 어떤 샤드에 전달할지 결정합니다.

2. 부하 분산(Load Balancing)
  • 클러스터 전체에 걸쳐 데이터 읽기/쓰기 요청을 고르게 분산합니다.
  • 특정 샤드에 트래픽이 집중되지 않도록 요청을 분배하여 성능을 최적화합니다.
  • 여러 mongos 인스턴스를 병렬로 배포하여 애플리케이션의 확장성과 가용성을 확보할 수 있습니다.

3. 쿼리 병렬 처리(Query Scatter-Gather)
  • 샤딩된 데이터가 여러 샤드에 분산되어 있을 때, 필요한 데이터를 병렬로 요청한 후 결과를 통합하여 반환합니다.
  • Scatter-Gather 쿼리는 성능에 영향을 줄 수 있으므로 샤딩 키를 잘 설계하는 것이 중요합니다.

4. Config 서버와의 동기화
  • Config 서버로부터 메타데이터를 주기적으로 동기화하여 최신 샤딩 정보를 유지합니다.
  • 데이터가 샤드 간에 이동(Chunk Migration)될 때, 변경된 위치 정보를 업데이트받아 정확한 라우팅을 보장합니다.

5. 클라이언트 인터페이스 제공
  • 클라이언트 애플리케이션은 단일 mongos를 통해 샤딩된 데이터에 접근할 수 있습니다.
  • 복잡한 내부 샤딩 구조를 애플리케이션이 인지할 필요가 없도록 해줍니다.

6. 보안 기능 연계
  • MongoDB 인증 및 권한 부여 설정 시, mongos는 클라이언트의 인증 요청을 처리하고 적절한 권한이 부여된 사용자만 접근할 수 있도록 관리합니다.

7. 트랜잭션 지원
  • MongoDB 4.2부터 샤드 클러스터에서 다중 샤드 간의 트랜잭션(Distributed Transactions)을 지원합니다.
  • mongos는 다중 샤드에 걸친 트랜잭션을 조율하여 일관성을 유지합니다.

반응형

'IT > 몽고DB' 카테고리의 다른 글

몽고DB TTL 인덱스 정의 및 활용 전략  (0) 2025.02.20
몽고DB - Config 서버  (0) 2025.02.19
몽고DB expire after 동작 주기  (1) 2025.02.13
몽고DB - Cache Dirty  (1) 2025.02.13
몽고DB 쿼리 실행계획 조회  (0) 2025.02.11