Notations

샤딩은 대규모 데이터를 여러 개의 작은 데이터 단위로 나누어 저장하는 기술을 의미합니다. 이 방식은 특히 하나의 데이터베이스에 모든 데이터를 저장하기에는 너무 클 때 사용됩니다. 샤딩을 통해 데이터를 분산하여 저장함으로써, 각 노드에서 처리해야 할 데이터 양이 줄어들고, 그 결과 더 빠른 트랜잭션 속도를 얻을 수 있습니다.

A.1) 주요 특징

  • 데이터 분할: 데이터를 구간별로 나누어 여러 노드에 분산시킴으로써, 각 노드가 처리해야 할 부하를 줄입니다.
  • 부하 분산: 모든 샤드는 동일한 스키마를 사용하지만, 각 샤드에 저장된 데이터는 중복되지 않습니다. 즉, 서로 다른 샤드에는 서로 다른 데이터가 들어갑니다.
  • 빠른 검증 및 처리: 데이터를 여러 곳에 나누어 보관함으로써, 특정 노드에서만 검증하거나 처리할 수 있어 전체적인 성능이 향상됩니다.

A.2) 예시

아래 그림에서는 사용자 데이터를 여러 개의 샤드로 나눈 예시를 보여줍니다. 사용자 ID 를 기준으로 해시 함수를 적용하여 어떤 샤드에 해당 사용자의 데이터를 저장할지 결정합니다. 예를 들어 user_id % 3 이라는 해시 함수를 사용하면, 사용자 ID 값에 따라 3 개의 샤드 중 하나에 데이터가 배정됩니다.

이러한 방식은 대규모 시스템에서 효율적으로 데이터를 관리하고 빠르게 접근할 수 있도록 도와줍니다.

A.3) Shard

  • sharding 을 통해 나누어진 블록들의 구간
  • 각각의 shard 는 데이터의 복사본이 아니라 데이터 그 자체

샤딩 키 (Sharding Key)

샤딩 전략을 구현할 때 고려해야 할 가장 중요한 것이 바로 샤딩 키 (sharding key) 를 어떻게 정하느냐 하는 것이다. 샤딩 키는 파티션 키(partition key) 라고도 부르는데, 데이터가 어떻게 분산될지 정하는 하나 이상의 칼럼으로 구성된다. 위 그림의 경우, 샤딩 키는 user_id 이다. 샤딩 키를 통해 올바른 데이터베이스에 질의를 보내어 데이터 조회나 변경을 처리하므로 효율을 높일 수 있다. 이 샤딩 키를 정할 때는 데이터를 고르게 분할 할 수 있도록 하는 게 가장 중요하다.

B) Related

C) References