핵심 구조

샤딩은 하나의 큰 테이블을 샤드 키 기준으로 가로로 나눠, 각 노드가 서로 다른 행 범위만 맡게 만드는 수평 분할이다.

user_id
name
status
1 ~ 2500
Kim ...
active
2501 ~ 5000
Lee ...
active
5001 ~ 7500
Park ...
sleep
7501 ~ 10000
Choi ...
active

열 구조는 그대로 두고, 같은 테이블의 행 묶음만 여러 노드로 나눈다. 그래서 샤딩은 수평 분할이다.

요청은 샤드 키로 대상 노드를 먼저 찾는다

애플리케이션이나 라우터는 어느 범위를 담당하는 샤드인지를 보고 해당 노드로 읽기·쓰기를 보낸다.

user_id = 2400 -> 샤드 1 (노드 A)
행 범위별로 분산 저장
노드 A
1 ~ 2500

이 범위의 사용자 행만 저장하고 처리한다.

노드 B
2501 ~ 5000

같은 스키마를 유지하지만 담당 행 구간은 다르다.

노드 C
5001 ~ 7500

전체 데이터의 일부만 맡으므로 저장 부담이 분산된다.

노드 D
7501 ~ 10000

노드를 더 늘리면 더 많은 행 구간을 나눠 맡길 수 있다.

운영 의미

저장 공간과 쓰기 부하를 여러 노드에 분산해, 한 대로 감당하기 어려운 데이터를 수평 확장할 수 있다.

복제와의 차이

복제는 같은 데이터를 여러 노드에 복사하지만, 샤딩은 서로 다른 조각을 나눠 맡긴다.