• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • MongoDB Sharded Cluster
        2023년 06월 01일
        • starryeye
        • 작성자
        • 2023.06.01.:17
        반응형

        이번 포스트에서는 MongoDB 의 Sharded Cluster 배포 형태에 대해 알아보겠다.

         

        사용 목적

        Sharded Cluster 의 사용 목적은 다음 상황에 적절하다...

        기존에 Replica Set 을 잘 이용하고 있다가..

        서비스가 잘 커서 MongoDB 에 많은 양의 데이터가 추가 되어

        더이상 감당 할 수 없게 되었다..

        이 때, Sharding 을 통해 데이터를 샤드 키로 분산하여

        여러개의 Replica Set 묶음으로 적재 할 수 있도록 할 수 있다.

         

         

        아래 그림을 통하여 더 자세히 알아보도록 하자..

        위 그림은 대표적인 MongoDB 의 Sharded Cluster 형태를 나타낸다.

        각 샤드는 내부에서 Replica Set 을 이루고 있다.

         

        Application 은 mongos 라는 라우터를 통해 데이터에 접근 할 수 있다.

        mongos 는 쿼리를 샤드로 전달하고 결과를 merge 하여 application 에게 반환 해준다.

         

        Config Server 는 어떤 샤드가 어떤 데이터를 가지고 있는지.. 클러스터 상태는 어떤지.. 등을 가지고 있는

        메타 데이터를 소유하는 컴포넌트이다.

        Config Server 또한 Replica Set 형태를 가진다.

         

        데이터를 분산하는 기준을 샤드 키라 부르며

        샤드 키는 Collection 의 필드에 생성된 인덱스를 이용하여 활성화 된다.

        따라서, 컬렉션 단위로 샤딩이 되는 것이다.

        (물론, Sharded Cluster 형태라고 하여도.. 모든 컬렉션이 무조건 샤딩이 될 필요는 없다.(선택))

         

        Sharded Cluster 장단점

        장점

        대용량 데이터를 분산 할 수 있다. (데이터 관점의 Scale-Out)

        내부적으로 Replica Set 의 형태로 되어있어서 HA 가 보장된다.

         

        단점

        데이터가 분산되어 있어서 Replica Set 에 비교하여 조회가 느릴 수 있다.

        -> 조회 시, Config Server 의 메타 정보를 이용해야 하며..

        -> 여러 샤드에 걸친 데이터는 합치는 작업이 추가가 될 것이고.. 등등의 부가작업이 존재

         

        결국..

        Write 성능(대 용량 처리)를 위해서 Read 성능을 포기 한 것으로 볼 수 있다..

        역시, 모든 것은 Read/Write Trade-Off 이다.

        (실무에서 대부분의 경우.. Replica Set 을 선택한다..)

         

         

        Sharding Strategy 2가지

        1. Ranged Sharding

        샤드 키 값을 바탕으로 청크 범위를 할당하는 방식이다.

        즉, 데이터를 샤드에 분배하는데 샤드 키 값을 그대로 사용하는 방법이다.

         

        참고>

        MongoDB는 샤드 키를 기반으로 데이터를 청크라는 단위로 분할한다.

        각 청크는 특정 범위의 샤드 키 값을 포함한다.(1~1000, 1001~2000)

        청크는 샤딩된 데이터베이스에서 데이터를 관리하는 데 사용되는 논리적 단위이다.

        하나의 샤드에는 여러 개의 청크가 있을 수 있다.

        하나의 샤드에 너무 많은 청크가 몰려있다면 리벨런싱을 통해 청크를 다른 샤드로 이동 시킬 수 있다.

         

        장점

        데이터의 범위가 정해져있으므로

        데이터가 있는 샤드에만 쿼리를 요청하는 타겟 쿼리가 가능해진다.

         

        단점

        데이터가 균형있게 분산되지 않을 가능성이 높다.

        (실제 데이터의 분산은 균형잡혀 있지 않을 가능성이 높다.)

        -> 그래서, 자체적으로 다른 샤드로 데이터를 넘기는 분산 마이그레이션을 하는데 부하가 크다.

         

        2. Hashed Sharding

        실무에서 가장 많이 사용되는 방법이다.

        샤드 키의 해시 값을 기반으로 데이터를 분배하는 방법이다.

        데이터를 균등하게 분산할 확률이 높은 방법이다.

        키의 순서를 유지하지 않기 때문에 범위 쿼리 시, Broadcast 쿼리를 많이 날리게 된다..

         

        3.

        Zone 기반 샤딩, Directory 기반 샤딩 전략 등은 자주 쓰이지 않으므로..

        생략 하겠다.

         

         

        반응형

        'DataBase > NoSQL' 카테고리의 다른 글

        Redis Data Type 1  (0) 2023.06.02
        Redis 시작해보기  (0) 2023.06.01
        MongoDB Replica Set  (0) 2023.05.20
        MongoDB 3가지 형태  (0) 2023.05.20
        MongoDB 구조  (1) 2023.05.18
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바