728x90
반응형
SMALL

샤드(shard) 의 정의

샤드(shard) 란 데이터베이스를 물리적으로 분할하는 기법 중에서 수평분할 즉 수평 파티셔닝(partitioning) 
을 했을 때 그 분할된 파티셔닝을 가리키는 말이다.
데이터베이스를 분할 하는 이유는 다 아시겠지만 데이터의 양이 많아지면 그 만큼 성능이나 퍼포먼스가
떨어지게 마련이기 때문에 가용성,확장성,성능향상을 위해 물리적으로 데이터베이스를 분할하는 것이다.

샤드(shard) 분할 기준

샤드(shard) 단위의 결정은 분할 즉 샤딩(sharding) 을 어떤 기준으로, 어떤것을 Key로해서 분할(샤딩)
하느냐에 달려있다. 

< 출처 : 118회 정보관리기술사 두드림 모임>

위 그림에서 보는 봐와 같이 하나의 물리적 데이터베이스에 통으로 들어있는 대용량 DB를
어떤 분리 기준에 의한 분할 알고리즘을 통해서 Shard Key를 생성하고 이 Key값을 기준으로
해당 샤드(shard) DB에 저장하고 있다.
이 때 shard key를 정하는 방법에 따라 다음과 같이 분류할 수 있다.

구분 내용 특징 사례
vertical
partitioning
테이블 컬럼증가에 따른 수직으로 분할 -구현간단
-각 서버의 데이터가 커지
 면 추가 샤딩(sharding)이
 필요
회원마스터의 컬럼들을
기준으로 분리
- 회원 개인정보 shard
 
- 회원 가족 shard 
- 회원 학력 shard
range based partitioning 테이블 레코드의 증가에
따른 날짜나 지역 등으로
수평 분할
데이터를 분할하는 방법
이 예측 가능해야 함.
년도별로 테이블을 생성하거나 지역별로 테이블을 생성해서 저장
Key or Hash Based Partition 엔터티값을 hash 함수에 넣어서 나온 hash 값을  기준으로 어느 서버에 저할지를 결정  균등분할  사용자ID가 숫자로만 구성된 경우 이 ID를 일정한 숫자로 나눈 나머지값을 기준으로 저장할 서버 결정

 

DB 확장성 확보 방안

<출처 : 118회 정보관리기술사 모임 두드림 >


샤드(shard) 와 파티셔닝(partitioning) 의 차이점

파티셔닝(partitioning)이란 성능(performance), 가용성(availability) 또는 유지보수용이성(maintainability)를
목적으로 논리적인 데이터 엘리먼트들을 다수의 엔티티(table)로 쪼개는 행위를 뜻하는 일반적인
데이터베이스 용어이다.
샤딩(sharding)은 수평 파티셔닝(horizontal partitioning)과 동일하다.
데이터베이스를 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에
어떤 데이터가 저장될지를  shard key를 기준으로 분리한다. 
예를 들면, 나는 고객의 데이터베이스를 CustomerId를 샤드키로 사용하여 샤딩하기로 하였다.
0 ~ 10000 번 고객의 정보는 하나의 샤드(shard)에 저장하고 10001 ~ 20000 번 고객의 정보는
다른 샤드(shard)에 저장하기로 하였다.
요약하면 파티셔닝은 퍼포먼스, 가용성, 정비용이성등의 목적을 위해 논리적인 엔티티들을 다른 물리적인
엔티티들로 나누는것을 의미하는 일반적인 용어이다. 수평 파티셔닝 또는 샤딩은 스키마 복제 후
샤드키를 기준으로 데이터를 나누는것을 말한다. 수직 파티셔닝(vertical partitioning)은 스키마를 나누고
데이터가 따라 옮겨가는것을 말한다. (발췌: 아이군의 블로그 http://theeye.pe.kr/archives/1917)

728x90
반응형
LIST

+ Recent posts