샤딩

minstone·2022년 5월 4일
0
post-thumbnail

1. 샤딩이란?

샤딩은 여러 독립 서버 또는 샤드에 데이터를 분산하여 확장성과 성능을 개선하는 데 사용되는 기술. 샤딩에는 수평분할과, 수직분할 두가지의 유형이 있다.

수평분할 - 동일 구성의 여러 스키마를 생성 후, 데이터를 기준으로 분할
수직분할 - 컬럼 단위로 분리하여 저장 (역정규화 -> 정규화)

보편적으로 수평분할을 많이 사용함.



2. 샤딩 특징

  • scalability :

    사용자 수와 데이터 크기를 수용하기 위해 서버 증설로 인한 수평 확장, 즉 성능을 향상 시킬 수 있음.
  • load balancing :

    샤딩은 여러 서버에 데이터를 균등하게 분산하여 부하를 분산여 성능 저하를 방지.
    고성능 및 짧은 지연 시간: 데이터가 여러 서버에 분산되면 각 서버가 더 작은 데이터 세트를 처리하므로 쿼리 처리 비용이 낮음.
    장애격리 : 한개의 서버에서 장애가 발생했을때, 장애서버의 데이터만 영향을 받음. 장애시 영향 범위를 최소화.


3. 샤딩 키

샤딩된 데이터베이스에서 특정 데이터를 조회하기 위해 샤딩 키를 사용사용 할 수 있다.
샤딩 키는 각 샤드에 데이터 분산에 사용되는 기준이며, 샤딩 키를 사용하면 데이터가 어느 샤드에 있는지 알 수 있음.

고객ID를 샤딩 키로 사용하는 경우, 고객 데이터 조회 시 고객ID를 사용하여 데이터가 있는 샤드위치를 확인할 수 있습니다.
이와 같이 특정데이터 샤딩 키를 사용하면 해당 데이터가 있는 샤드만 조회하면 됩니다.

  • 샤딩 키를 사용하지 않는 경우.

    샤딩 키를 사용할 수 없거나 샤딩 키가 없는 상태에서 조회해야 하는 경우에는 모든 샤드에 대해 조회해야 할 수 있다.
    모든 샤드에서 데이터를 조회하고 그 결과를 병합하는 과정을 거치게 되며, 프로세스 성능 저하를 발생 시길 수 있음. (유니온 쿼리, 샤드 조인)


4. 샤딩 알고리즘

  • Range Sharding :

    각 데이터베이스에 특정 범위의 샤딩 키를 할당(예: ID 1~5는 데이터베이스 1에 저장하고, ID 6~10은 데이터베이스 2에 저장하는 식).
  • Modular Sharding:

    모듈러스 연산을 샤딩 키에 적용하여 데이터가 어느 샤드에 적재할지 결정.


5. 고려사항

조인 작업에 필요한 테이블의 경우 단일 서버에 저장.
샤딩된 특정 데이터를 조회할 때는 샤딩 키를 사용하여 조회하는 것이 중요.

profile
🌚Stone Kid

0개의 댓글