분할 전 상태
한 서버가 전체 데이터와 모든 쓰기를 함께 맡으면 병목이 생깁니다.
샤딩은 데이터를 복제하는 대신 잘라서 보관합니다. 먼저 왜 단일 서버가 한계에 부딪히는지 한눈에 보여줍니다.
A
B
C
D
E
F
G
H
I
J
K
L
저장 위치
전체 12건을 서버 1대가 모두 보관
쓰기 처리
들어오는 요청도 같은 서버에 집중
문제
저장량과 쓰기 부하를 수평으로 늘리기 어렵다
샤드 키 규칙으로 한 번 자르고, 그 결과를 각 서버가 맡습니다.
핵심은 복제가 아니라
서로 다른 범위의 담당 분리
샤드 1
A-D
샤드 2
E-H
샤드 3
I-L
샤드 1
서버 1
A
B
C
D
A-D 범위의 데이터와 그 범위로 들어오는 쓰기를 처리합니다.
샤드 2
서버 2
E
F
G
H
같은 데이터를 복사하지 않고, 서로 다른 조각만 따로 저장합니다.
샤드 3
서버 3
I
J
K
L
서버를 더 추가하면 저장량과 쓰기 부하를 계속 나눌 수 있습니다.
샤딩의 본질
은 "전체를 여러 서버가 똑같이 갖는 것"이 아니라, "각 서버가 자기 구간만 갖고 처리하는 것"입니다.
결과적으로 각 서버는
전체의 일부만 저장
하고, 쓰기 부하도
서버별로 분산
됩니다.