HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
Database
Database
/
클러스터링, 레플리케이션, 샤딩
클러스터링, 레플리케이션, 샤딩
클러스터링, 레플리케이션, 샤딩

클러스터링, 레플리케이션, 샤딩

@)참고
  • 테리의 일상
    • 클러스터링,
    • 리플리케이션,
    • 샤딩
  • Be A Better Dev - 데이터베이스 샤딩이란?
  • 망나니 개발자 - [Database] 리플리케이션(Replication) vs 클러스터링(Clustering)
 

클러스터링, 레플리케이션, 샤딩은 모두 데이터베이스 이중화 기법의 한 종류이다.

클러스터링

  • 여러 개의 DB를 수평적인 구조로 구축하는 방식
  • 동기 방식으로 노드들 간의 데이터를 동기화 한다.
  • Active-Active 방식과 Active-Standby 방식이 있다.
notion image
notion image

장점

  • 항상 일관성 있는 데이터를 얻을 수 있다.
  • 시스템을 계속 장애없이 운영할 수 있다.

단점

  • 노드들 간의 데이터를 동기화하는 시간이 필요하므로 Replication에 비해 쓰기 성능이 떨어진다.
  • 장애가 전파된 경우 처리가 까다로우며, 데이터 동기화에 의해 스케일링에 한계가 있다.
 

리플리케이션

  • 여러 개의 DB를 수직적인 구조(Master-Slave)로 구축하는 방식
  • 비동기 방식으로 노드들 간의 데이터를 동기화 한다.
  • Master 노드는 Create, Update, Delete 연산을 수행하고 Slave 노드는 Read 연산을 수행하여 로드를 분산할 수 있다.
notion image

장점

  • DB 요청의 60~80% 정도가 읽기 작업이기 때문에 Replication만으로도 충분히 성능을 높일 수 있다.
  • 비동기 방식으로 운영되어 지연 시간이 거의 없다.

단점

  • ⚠️  노드들 간의 데이터 동기화가 보장되지 않아 일관성있는 데이터를 얻지 못할 수 있다.
  • Master 노드가 다운되면 복구 및 대처가 까다롭다.

샤딩

  • 테이블을 row 단위로 나누어 저장해 DB 용량을 줄이고 검색 성능을 올리는 기법
  • 기존 테이블과 같은 스키마를 가지는 샤드 라는 작은 단위로 나누어 저장하는 방식
notion image
  • 샤드키 - 나누어진 샤드 중 어떤 샤드를 선택할 지 결정하는 키
 

장점

  • Scalability
  • Availability + Fault Tolerance - 한 샤드내에서 장애가 난 경우 다른 샤드는 정상 동작 가능
 

단점

  • Complexity
    • Partition Mapping (Shard Key)
    • Routing Layer 추가
    • Non-uniformity - 샤드 간의 데이터 균등성을 보장하기 어렵다 → re-sharding
  • Analiytical Query
    • 통계성 쿼리를 날리기 어렵다
 

1) 해시 샤딩

  • 해시 함수를 사용해 샤드 키를 나누는 방식
(+) 구현이 간단
(-) 확장성이 좋지 않다 - 샤드가 추가 된 경우 해시 함수를 재 설계 해야함
(-) re-sharding 어렵다
 

2) 다이나믹 샤딩

  • 샤드키를 저장하는 테이블을 앞단에 두는 방식
(+) 확장성이 좋다. - 샤드가 추가 되어도 테이블에 샤드키만 추가하면 됨
(-) 복잡도가 올라간다
 

3) 엔티티 그룹

  • 관계가 되어있는 엔티티를 같은 샤드내에 구성하는 방식
(+) 단일 샤드 내 쿼리가 효율적
(-) 다른 샤드의 엔티티를 참조해야 하는 경우 비효율적