다섯 살도 알 수 있게 · DB/데이터

데이터베이스 샤딩·파티셔닝이 뭐예요?

샤딩과 파티셔닝을, 너무 커진 창고를 구역으로 쪼개는 이야기로 풀어봤어요.

상자가 너무 많아서 찾는 데 한참 걸려요창고 하나로는 늘어난 상자와 요청을 못 받아내요

상자가 너무 많아서 찾는 데 한참 걸려요.창고 하나로는 늘어난 상자와 요청을 못 받아내요.

창고를 나누는 기준을 아무렇게나 정하면 상자가 한 구역에만 몰려요나누는 기준(키)을 잘 골라야 해요

창고를 나누는 기준을 아무렇게나 정하면 상자가 한 구역에만 몰려요.나누는 기준(키)을 잘 골라야 해요.

구역 A구역 B샤딩 = 창고를 여러 구역(서버)으로 쪼개는 것각 구역은 자기 몫의 상자만 책임져요

샤딩 = 창고를 여러 구역(서버)으로 쪼개는 것이에요.각 구역은 자기 몫의 상자만 책임져요.

샤딩 키 고르기상자가 어느 구역으로 갈지 정해요
수직/수평 나누기샤딩은 행 기준, 파티셔닝은 행이나 열 기준
올바른 구역으로 안내배송 기사(요청)가 맞는 구역으로 바로 가요
여러 구역에 걸친 질문은 느려짐그 질문은 여러 구역을 다 봐야 해요
샤딩 vs 파티셔닝샤딩파티셔닝서로 다른 창고(서버)로 나눔한 창고 안에서 구역만 나눔수평 분할(행 기준)수평/수직 모두 가능샤딩 키 선택이 핵심조회 패턴에 맞춰 구획

샤딩은 데이터를 여러 서버로 나누고, 파티셔닝은 한 창고(서버) 안의 구역을 나눠요.둘 다 나누는 기준이 핵심이에요.

구역 A구역 B두 구역을 다 뒤져야 해요(조인)구역을 나누면 한 구역 조회는 빨라지지만, 여러 구역에 걸친 질문은 느려져요

구역을 나누면 한 구역 조회는 빨라지지만, 여러 구역에 걸친 질문은 느려져요.여러 구역을 합쳐 봐야 하는 조인은 특히 느려요.

한 줄로

샤딩/파티셔닝 = 너무 커진 창고를 여러 구역(또는 서버)으로 나눠, 각자 자기 몫만 책임지게 하는 것.

샤딩은 데이터를 여러 물리 서버(샤드)로 수평 분할해 확장성을 얻는 기법이고, 파티셔닝은 한 서버/DB 안에서 테이블을 수평 또는 수직으로 나누는 것이에요. 둘 다 조인·트랜잭션 범위가 샤드/파티션을 넘어가면 성능과 일관성 비용이 커져요.

어른들은 이렇게 불러요

샤딩
Sharding
여러 서버(창고)로 나누는 것. 샤딩 키 선택이 가장 중요해요.
파티셔닝
Partitioning
한 창고 안에서 구역만 나누는 것. 수평/수직 두 방향 모두 가능해요.
샤딩 키
Shard Key
상자를 어느 구역으로 보낼지 정하는 번호표. 잘못 고르면 상자가 한 구역에만 몰려요.
조인 비용
Join Cost
여러 구역을 다 뒤지는 수고. 데이터를 잘게 나눌수록 커져요.
분산 시스템 관점의 샤딩
Sharding (Distributed Systems View)
SRE 분야의 더 깊은 이야기. 복제·합의·CAP은 SRE 분야에서 더 깊이 다뤄요. → 분산 시스템의 샤딩
병행제어
Concurrency Control
동시에 손대도 안 부딪히게 막는 규칙. 구역이 나뉘어도 안에서는 이 규칙이 필요해요. → 동시에 안 부딪히는 규칙
NoSQL 모델링
NoSQL Modeling
자유로운 선반 창고. 샤딩을 수월하게 지원하는 경우가 많아요. → 자유로운 선반 창고
정규화
Normalization
선반 한 칸에 한 번만 적는 규칙. 정규화를 너무 따르면 조인이 늘어 샤딩과 부딪혀요. → 한 칸에 한 번만 적는 규칙
다음 이야기
동시에 손댈 때 얼마나 가려 볼지 정하는 규칙 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →