대용량 트래픽을 처리하는 개발자라면 고려해 볼 DB Sharding 에 대해 정리하고자 한다.
1. 개념
- 데이터를 논리적으로 나누는 작업으로, 각 분할된 데이터는 독립적으로 관리됨
2. 장점
- 성능 향상
> 읽기 및 쓰기 작업이 여러 샤드로 분산되어 병렬 처리 가능
- 확장성
> 필요에 따라 샤드와 서버를 추가하여 수평적 확장 가능
- 고가용성
> 특정 샤드에 장애가 발생해도 나머지 샤드가 동작 유지 가능
3. 단점
- 운영 복잡성
- 쿼리 복잡성
> 분산된 샤드에 걸친 데이터를 조회하기 위해 추가 로직(ex. 애플리케이션에서 집계 쿼리) 필요
- 데이터 재분배 비용
> 샤드 키가 잘못 설계되었거나 데이터 불균형 시 샤드 간 데이터 재분배가 필요한데 이는 많은 자원과 시간 소모
4. 기타
- 적절한 키 선정 필요
> 균등한 데이터 분배 보장할 수 있는 키
- 다양한 분배 전략 존재
'IT > DB' 카테고리의 다른 글
[MySQL] GROUP BY 사용법 (0) | 2024.03.09 |
---|---|
[MySQL] JSON_TABLE (0) | 2023.09.14 |
SQLD 내용 정리 4 (0) | 2021.04.11 |
SQLD 내용 정리3 (0) | 2021.04.04 |
SQLD 내용 정리2 (0) | 2021.03.28 |