ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DB] 샤딩(sharding )이란?
    DB/Modeling 2023. 1. 31. 21:43
    반응형

    샤딩이란?

    샤딩이 나온 배경을 먼저 알아보자면, 현대에는 서비스가 증가 속도 및 데이터 증가 속도가 빠르기 때문이다. 서비스와 데이터가 증가함에 따라 과거에 사용하던 모놀리식 방법으로는 급격히 늘어나는 트래픽을 감당하기 어려워 졌다. 그래서 데이터베이스도 여러대의 컴퓨터에서 처리하고 응답을 해주는 것으로 처리 속도를 높였는데, 이것이 바로 샤딩이다. 즉, 샤딩이란 여러 머신에 저장하는 프로세스를 말한다. 데이터를 샤드라고 하는 더 작은 청크로 분할하고 여러 데이터베이스 서버에 저장한다.

    샤딩의 장점

    • 응답 시간 - 컴퓨팅이 여러 대이기 때문에 처리 속도가 향상된다.
    • HA의 용이성 - 컴퓨터의 replica를 진행하여 HA구성하기 용이하다.
    • 자원의 효율적인 사용 - 리소스가 작거나 클 때 데이터 베이스를 붙이거나 때면 돼어서 필요 시에 scaling in, out이 용이하다.

    샤딩의 단점

    • 데이터 핫스팟 - 데이터를 여러대 분리해서 저장해야 하는데, DB를 한 곳만 집중되어서 사용돼는 경우를 가질 수 있다. 이것을 핫스팟이라고 한다.
    • 운영 복잡도 - 리소스를 분산해서 관리하다보니 운영 복잡도가 증가한다.
    • 비용 - 물리적 샤드로 추가하는 컴퓨터가 많을 수록 인프라 비용이 발생한다.
    • 애플리케이션 복잡도 - 개발자와 관리자가 커뮤니케이션할 리소스가 늘어난다.

     

    샤딩의 방식

    모듈러 샤딩

    • 모듈러 샤딩(Moduler Sharding) 샤딩 키를 모듈러에서 연산하여 결과값과 일치하는 DB에 라우팅되는 방식이다.
    • DB를 추가 증설 시 DB를 잘 찾아 갈 수 있도록 하는 재정렬이 필요하다.
    • 데이터량이 일정 수준에서 유지되는 곳에서 보통 사용된다.
    • 특정 조건에서 사용되는 방법이다.

    레인지 샤딩

    • 레인지 샤딩(Range sharding) - 샤딩 키 값의 범위를 기준으로 DB를 특정하는 방식이다.
    • 키 값을 기준으로 데이터를 연속적인 범위로 나눌 때 보통 사용한다. 날짜, 숫자, 문자열 등 범위를 지정하여 사용한다.
    • 구현이 쉽고, 범위 기준이기 때문에 색인을 찾기 쉬워 문제 서칭이 빠르다.
    • 하지만, 범위 별로 핫스팟이 생길 위험도가 높다.
    • 가장 많이 사용되는 방법이다.

    해쉬 샤딩

    • 해쉬 샤당(Hash sharding) 은 샤딩 키를 Hash 한 결과를 이용하여 샤드를 진행한다. 해쉬 결과값을 기준으로 하므로 랜덤하게 고르게 데이터가 분산 된다는 장점이 있다.
    • DB 추가 증설 시 샤드를 추가하기 까다롭다.
    • 가장 많이 사용되는 방법이다.

    Directory 샤딩

    • 디렉토리 샤딩은 샤딩 키값을 미리 정의해서 데이터가 해당 값에 해당할 때만 샤딩된다.
    • 샤딩 키값을 미리 정해 놨으므로 복잡도가 낮으나, 확장성을 갖기는 힘들다.
    • 주로 쓰이는 방법은 아니다

     

     

    샤딩 시 고려사항

    Cardinality

    • cardinality란 - 고유한(unique) 값을 가지는 정도를 나타낸다.
    • 예로 영화의 수로 cardinality를 구하면 수도 없이 많이 나눌수 있으며, 장르로 cardinality를 구하면 구분이 장르의 수만 구하기 때문에 cardinality는 줄어든다.
    • Hash 샤딩은 cardinality가 많을 수록 좋고, 모듈러 샤딩은 cardinality가 작을 수록 좋을 수 있다.

    빈도

    • 샤딩 키값이 매칭되는 확률을 알아야한다.
    • 모듈러, Hash, range를 매칭하는 확률을 알아야 샤딩에 핫스팟이 생기지 않고 골고루 분산돼어 저장 될 수 있다.

    변화

    • 샤딩 키 값의 변화율을 알아야 합니다.
    • Range 샤딩을 구사했다고 가정했을 때, 샤딩 키 값이 높아지거나, 낮아지거나 하여 샤딩 키값이 추가되거나 삭제 될 수 있습니다.
    • 이런 경우 부하 분산이나, 유휴 분산을 막기 위해 샤딩 키값을 조정해 주어야 합니다.

     

     

     

     

     

    참고문헌

    https://aws.amazon.com/ko/what-is/database-sharding/

    반응형

    'DB > Modeling' 카테고리의 다른 글

    [DB] 데이터 모델링 - Partitioning(파티셔닝)이란?  (2) 2023.01.30

    댓글

Designed by Tistory.