DB의 분산처리 기법, 샤드(Shard), 샤딩(Sharding)

    DB 서버 부하 분산, 샤드의 개념

    - 부하 분산을 위해 Application/DB Level에서 다수의 데이터베이스에 데이터를 분산 저장하는 기법

    - 데이터베이스 분야에서 성능, 확장성 및 I/O 대역폭을 개선하는데 사용하는 분산처리 기법

     

    샤드 혹은 샤딩기법은 데이터를 분리하기 용이한 기준을 잡고 데이터를 분산저장하거나 Row의 행수 등을 기준으로 분산저장을 한다. 최근 데이터의 폭발적인 증가는 빅데이터(Bigdata)라는 신조어를 만들게 되었고, 수많은 빅데이터를 처리하기 위해서는 데이터를 모두 동일하게 복제하는 방식이 아닌 수평적인 서버들에 분산 저장하여 처리를 하는 방식으로 가게 되었다. 물론 샤드의 문제를 방지하기 위해서 리플리카(replica)의 방식을 섞어서 실제로는 둘 중 하나의 방식이 아닌 여러대의 노드에 혼합하여 처리한다.

     

    샤드의 개념도 및 구성요소

    가. 샤드의 개념도

    https://www.digitalocean.com/community/tutorials/understanding-database-sharding

    나. 샤드의 구성요소

    구분

    구성 요소

    설명

    주요 기법

    vertical partitioning

    테이블 별로 서버를 분할하는 방식

    Range Based Partitioning

    하나의 테이블이 거대해질 경우 서버를 분리하는 방식

    Key or Hash Based Partitioning

    키와 같은 값을 해쉬함수(Hash)에 넣어 나오는 값으로 서버를 지정하는 방식

    Directory Based Partitioning

    파티셔닝 매커니즘을 제공하는 추상화된 서비스 생성

     

    샤드 수행 시 고려사항

    데이터 재분배 : 서비스 정지 없이 데이터베이스 스키마 및 서버 설계 필요

    - 샤딩 조인 : 역정규화를 어느정도 감수해야 함

    - 샤딩 알고리즘 : 정수값 등으로 샤딩을 처리할 때 데이터의 비율 고려

     

    샤드 수행 시 가장 중요 한 것은 무엇보다 해당 서버의 장애가 났을 때 replica의 존재여부이다. 장애처리를 전혀 하지 않고 샤딩처리만 할 경우 데이터의 크기는 분산처리한 만큼 줄어들겠지만, 장애가 발생할 경우 치명적이 될 수 있다.

    댓글

    Designed by JB FACTORY