[게임 서버] 8.8 MongoDB 수평 확장

게시:     수정

카테고리:

태그:

이 글은 아래의 책을 자세히 정리한 후, 정리한 글을 GPT에게 요약을 요청하여 작성되었습니다.
게임 서버 프로그래밍 교과서, 배현직 저자

📦 8. NoSQL 기초

👉🏻 8. MongoDB 수평 확장

📌 수평 확장

  • 서버 한 대가 할 일을 여러 대로 분산
  • 샤딩, 파티셔닝이라고도 함

MongoDB_ShardCluster_Setting.svg


🔀 mongos

  • 애플리케이션 서버에서 명령을 받고, 적절한 샤드로 송수신한다.

⚙️ mongod (ConfigDB)

  • 동일한 데이터베이스이지만 하는 역할이 다르다.
  • 샤드 클러스터 전체의 메타데이터를 저장한다.
    • 샤드 목록, 컬렉션 샤딩 키 정보, 청크 분포 등
  • MongoDB가 제공하는 관리 명령어를 사용해야 한다.
    • sh.addShard(), sh.enableSharding(), sh.shardCollection()
    • db.config.update(…)와 같은 질의 구문으로 수정하면 안된다.
  • ConfigDB가 죽으면, 모든 샤드가 죽는다.
    • 별도 서버 기기에 설치하는 것을 권장한다.
    • 예비 데이터베이스, 즉 이중화(replica set) 를 하도록 되어 있다.
    • MongoDB는 이중화 기능을 제공한다.

🗄️ mongod (Shard#n)

  • 샤드 키로 구분되는 도큐먼트를 분배해서 가지고 있다.
  • 샤드 키를 해시 함수에 넣고 나오는 정수 값으로, 저장할 샤드를 정한다.
    • e.g. John → 해시 함수 → 1~4
  • 샤드 키가 없는 질의 명령을 수행하면, mongos는 모든 샤드에 브로드캐스트한다.
    • e.g. Null → 모든 샤드에서 질의 명령 수행
  • 한 샤드가 죽더라도, 다른 샤드는 사용할 수 있다.
    • 각 샤드에 이중화를 통해 고가용성을 추구할 수 있다.

GameServer 카테고리 내 다른 글 보러가기

댓글남기기