DB의 분산처리 기법 중 샤딩(Sharding)을 이해하기 위해 아래 내용을 번역하였습니다.
https://www.digitalocean.com/community/tutorials/understanding-database-sharding

 

1. 샤딩(Sharding) 이란?

샤딩(Sharding)은 수평 분할 (Horizontal partitioning) 데이터베이스 설계 패턴입니다.
즉, 하나의 테이블 데이터를 여러 개의 테이블로 분리하는 것을 말하며 나누어진 블록은
데이터베이스 샤드(database shard)로 정의합니다.
 

샤드(shard)는 각 데이터베이스 서버 인스턴스에서 관리되며 분산처리를 위해
고유한 데이터를 가지고 있어야 하며 컴퓨터 자원을 공유하지 않습니다.
단, 테이블 참조가 필요할 경우 각 shard에 특정 테이블을 복사하는 패턴을 사용합니다.

 
테이블을 수평 및 수직으로 분할하는 시나리오는 다음과 같습니다.


2. 장점

  • 수평 확장 (Horizontal Scaling) 이 용이해져 시스템 확장에 유연해진다.
  • 데이터 스캔 범위가 줄어들어 쿼리 반응 속도가 빨라진다.
  • 데이터베이스 중단 시 일부 사용자만 영향이 가기 때문에 Application 신뢰도를 높인다.

3. 단점

  • 아키텍처 설계가 복잡하며 잘못 구성했을 경우 데이터 손실 및 테이블 손상이 될 수 있다.
  • 샤드(Shard)가 불균형이 발생할 수 있으며 그로 인한 속도 저하 및 충돌을 일으킬 수 있다.
  • un-sharded 구조로 Roll-back 하기 어렵다.
  • 모든 데이터베이스 엔진에서 지원하지 않는다.

 
읽어주셔서 감사합니다.
 

레퍼런스
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기