MongoDB - Sharding(이론)

김솔이·2022년 11월 9일
0

[기본 구조]

Server역할구성
Config Server샤딩 메타 데이터 저장/처리fail over 처리를 위해 동일한 역할을 하는 3대로 구성(복제x)
Mongos Server라우터 역할1개 이상으로 구성
Mongod Server데이터 저장Replica Set 구성

1. Config Server

  1. 데이터 관리
  • Mongos가 처리해야할 기본 데이터 저장
  • 연결되어있는 Mongos를 통해 데이터 동기화
    -> 성능상의 이유로 복제 미사용

2. Mongos Server

  1. 라우터 역할
  • 자동 샤딩 처리하는 balancer 탑재
  • Config와 연결하여 샤딩에 필요한 정보 취득
  1. 수행 동작
  • 10초 주기로 config서버에 두 개의 질의 수행
  1. mongos의 현 상태 업데이트(샤딩 상태면 5초 주기로 더 짧게 적용)
  2. 분산 락 상태 업데이트
    • balance: mongos들 간의 데이터 공유 수행
  • 샤드 관리 스레드
  1. ReplicaSetMonitorWatcher
    • 10초 주기로 mongod 서버에 복제 정보 요청하여 데이터 취득
      → 복제정보: 복제 집합 정보(이름과 노드 리스트), master 여부와 master 서버주소, mongod에 저장된 BSON 객체 크기
    • 한 샤드의 복제 정보가 변경되었을 경우 샤드 정보를 업데이트하는 용도로 사용
  2. WriteBackListener
    • mongos에 샤드가 설정될 때, 샤드에 등록된 mongod 리스트를 취득하여 각 mongod와의 연결을 유지
    • 한 샤드를 구성하고 있는 복제 집합 노드의 fail 처리

3. Mongod Server

  • Replica set(복제셋): 복제처리 가능한 master-slave 모델로 구성되며 하나의 샤드는 master-slave로 구성된 복제집합

샤딩의 한계

  1. 한 청크에 저장될 수 있는 BSON 객체의 수는 250,000개이다.
  2. 한 청크에 설정할 수 있는 분할 지점의 최대 개수는 8,192개이다.
  3. MongoDB로 설정할 수 있는 샤드 노드의 개수는 1,000개가 목표이지만 공식사이트에서도 테스트된 샤드의 개수를 100개 정도로 한정
profile
하이루!

0개의 댓글