정보관리기술/데이터베이스

샤딩(Sharding)

아이티신비 2024. 2. 11. 10:00

문제 3) 데이터베이스 샤딩(Sharding)에 대한 아래의 사항을 설명하시오.

가. 샤딩의 개념 및 분할방법

나. 샤딩과 파티셔닝(Partitioning)의 차이점

다. 샤딩 적용 시 고려사항

 

답)

 

1. 샤딩(Sharding)의 개념 및 분할방법

가. 샤당의 개념

  • DBMS 레벨에서 데이터를 나누는 것이 아니고 물리적으로 다른 데이터베이스에 데이터를 샤드(Shard)라고 부르는 각각의 개별 파티션으로 수평 분할 방식으로 분산 저장하고 조회하는 방법

 

나. 샤당의 분할방법

 
방법
설명
사례/특징
Vertical
Partitioning
  • 테이블 별로 서버를 분할하는 방식
  • 구현 간단. 전체 시스템에 큰 변화 필요 없음.
  • 각 서버 데이터 거대해지면 추가 샤딩 필요
  • 사용자 프로필정보용 서버, 사용자 친구리스트용 서버, 사용자가 만든 콘텐츠용 서버 등으로 분할하는 방식
Range based
Partitioning
  • 하나의 feature나 table이 점점 거대해지는 경우 서버를 분리하는 방식
  • 데이터를 분할하는 방법이 예측 가능해야 함
  • 사용자가 많은 경우 사용자의 지역정보를 이용해서 user 별로 서버를 분리하거나, 일정데이터라면 연도별로 분리, 거래정보라면 우편번호를 이용하는 방식
Key or Hash
Based
Partitioning
  • 엔티티를 해쉬 함수에 넣어서 나오는 값을 이용해서 서버를 정하는 방식
  • 해쉬 결과 데이터가 균등하게 분포되도록 해쉬 함수를 정하는 게 중요
  • 예) 사용자ID가 숫자일 경우 나머지연산을 이용하는 방법
Directory
Based
Partitioning
  • 파티셔닝 메커니즘을 제공하는 추상화된 서비스를 생성
  • 샤드키를 look-up 할 수 있으면 되므로, 구현은 DB와 캐쉬를 적절히 조합해서 만들 수있음

 

2. 샤딩(Sharding)과 파티셔닝(Partitioning)의 차이점

 
구분
사딩
파티셔닝
개념
  • 각각의 개별 파티션을 수평분할 방식을 사용 하여 저장하는 기술
  • 퍼포먼스, 가용성 또는 정비용이성를 목적으로 당신의 논리적인 데이터 엘리먼트들을 다수의 엔티티(table)로 쪼개는 행위
분할 방식
  • 수평 분할
  • 수평 분할
  • 수직 분할
관리
  • Master Node 관리
  • 별도 Master node 없음
분할 데이터 저장위치
  • 별도 서버로 분리 저장
  • 동일서버에 저장
  • Shared Key 저장
  • 별도 Key 없음
  • 샤딩은 파티셔닝 유형 중 수평 분할 유형의 다른 형태임

 

3. 샤딩 적용 시 고려사항

 
구분
가이드라인
주요내용
DB설계
가이드 라인
데이터 재분배
  • 서비스 정지 없이 scale-up 할 수 있어야 함
조인
  • Sharding-DB 간에 조인이 불가능 하기에 처음부터 역정규화도 고려해야 함
파티션
  • 샤드 해쉬 함수 설계가 중요
데이터는 작게
  • Table의 단위를 가능한 작게 만들어야 함
응용 설계
가이드 라인
트랜잭션
  • Global Transaction을 사용하면 shard DB간의 트랜잭션도 가능
Gobal Unique Key
  • DBMS 에서 제공하는 auto-increment를 사용하면 key가 중복될 수 있기 때문에, 어플리케이션 레벨에서 GUID를 생성해야 함

 


 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥

 

'정보관리기술 > 데이터베이스' 카테고리의 다른 글

DA와 DBA  (27) 2024.02.12
옵티마이저(Optimizer)  (25) 2024.02.11
데이터 품질관리  (20) 2024.02.11
데이터베이스 튜닝  (24) 2024.02.10
CAP이론의 한계와 PACELC 이론 / ①  (0) 2024.02.10