닭발족발 나는 개발
article thumbnail
Published 2023. 10. 23. 21:26
DB 부하관리 DB

Master - Slave 구조

  • 리플리케이션(Replication)은 복제를 뜻함.
  • Master DBMS의 역할
    • 웹 서버로부터 등록/수정/삭제 (CUD)의 요청을 담당하게 됨.
  • Slave DBMS의 역할
    • Master DBMS로 부터 받은 데이터를 반영하고, 주로 읽기(R)에 대한 요청을 담당. Slave는 여러개 생성 가능

✨ 장점

  • CUD에 대한 요청과 R에 대한 요청들을 Slave DB 서버들에 분산시킬 수 있으므로 성능 향상을 기대해볼 수 있음

✨ 단점

  • Master DB 서버에서 Slave DB 서버로 데이터를 동기화 할 때, 비동기방식으로 동기화를 진행하기 때문에 일관성있는 데이터를 얻지 못 할 수도 있음

 

Sharding(샤딩)

  • 각 DB 서버에서 데이터를 분할하여 저장하는 방식
  • DB 트래픽을 분산할 수 있는 중요한 수단. 추가적으로 특정 DB의 장애가 전면 장애로 이어지지 않게하는 역할

✨단점

  • 잘 못 수행된다면, 데이터 손실, 테이블 손상, 부하의 불균형 등이 발생 할 수 있음
  • 샤딩 전 원래 DB 구조로 되돌리는 작업은 매우 복잡하고 어려움
  • 모듈러 샤딩(Modular Sharding)
    • PK를 모듈러 연산한 결과를 DB를 라우팅하는 방식
    • 특징
      • 레인지 샤딩에 비해 데이터가 균일하게 분산됨
      • DB를 추가 증설하는 과정에서 이미 적대된 데이터의 재정렬이 필요
  • 레인지 샤딩(Range Sharding)
    • PK의 범위를 기준으로 DB를 특정하는 방식
    • 특징
      • 모듈러 샤딩에 비해 기본적으로 증설에 재정렬 비용이 들지 않음
      • 일부 DB에 데이터가 몰릴 수 있음
  • 디렉토리 샤딩(Directory Based Sharding)
    • 별도의 조회 테이블을 사용해서 샤딩을 하는 경우
    • 특징
      • 샤딩에 사용되는 시스템이나 알고리즘을 사용 할 수 있음
      • 샤드를 동적으로 추가하는 것도 비교적 쉬움
      • 모든 읽기 및 쓰기 쿼리 전에 조회 테이블을 참조해야하므로 오버헤드가 발생함
          •  

 


내가 사용해봤던 방식은 `Master-Slave` 방식인데, AWS로 활용하면 굉장히 쉬웠다 !

'DB' 카테고리의 다른 글

TypeORM VS Sequelize 비교하기  (0) 2024.01.27
정규화 vs 비정규화 데이터베이스  (1) 2023.10.23
ORM의 장점과 그 종류  (0) 2023.10.23
profile

닭발족발 나는 개발

@잘먹는다a

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!