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 |