🧩 [λ°μ΄ν„°λ² μ΄μŠ€] νŒŒν‹°μ…”λ‹(Partitioning)κ³Ό 샀딩(Sharding) 정리

κΉ€μ€€ν˜ΈΒ·2025λ…„ 3μ›” 24일

DB

λͺ©λ‘ 보기
1/3

νŒŒν‹°μ…”λ‹κ³Ό 샀딩은 데이터λ₯Ό λΆ„μ‚° μ €μž₯ν•˜μ—¬ μ„±λŠ₯ ν–₯상, ν™•μž₯μ„± 확보, 관리 νŽΈμ˜μ„± 등을 μ œκ³΅ν•˜λŠ” 기법이닀.

이번 κΈ€μ—μ„œλŠ” 이 λ‘˜μ˜ κ°œλ…κ³Ό 차이점, μ‚¬μš© μ˜ˆμ‹œκΉŒμ§€ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


🧱 νŒŒν‹°μ…”λ‹(Partitioning)μ΄λž€?

νŒŒν‹°μ…”λ‹μ€ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ„ λ…Όλ¦¬μ μœΌλ‘œ λΆ„ν• ν•˜μ—¬ μ—¬λŸ¬ 개의 νŒŒν‹°μ…˜(Partition)으둜 λ‚˜λˆ„λŠ” 방식
DBλŠ” μ—¬μ „νžˆ ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€μ—μ„œ κ΄€λ¦¬λ˜μ§€λ§Œ, ν…Œμ΄λΈ”μ΄ λ‚΄λΆ€μ μœΌλ‘œ λ‚˜λ‰˜μ–΄ μ €μž₯λ˜λŠ” ꡬ쑰

βœ”οΈ μ˜ˆμ‹œ

μœ„μ™€κ°™μ€ ν…Œμ΄λΈ”μ΄ μžˆλ‹€κ³  ν–ˆμ„λ•Œ 이λ₯Ό 수직 νŒŒν‹°μ…”λ‹κ³Ό μˆ˜ν‰ νŒŒν‹°μ…”λ‹ 두 κ°€μ§€ λ°©λ²•μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆλ‹€.

수직 νŒŒν‹°μ…”λ‹

수직 νŒŒν‹°μ…”λ‹μ€ ν…Œμ΄λΈ”μ˜ Column을 λΆ„ν• ν•˜μ—¬ μ—¬λŸ¬ 개의 μ„œλ‘œ λ‹€λ₯Έ ν…Œμ΄λΈ”λ‘œ λ‚˜λˆ„λŠ” 방법이닀. 자주 μ‘°νšŒν•˜κ²Œ λ˜λŠ” 칼럼과 잘 μ‘°νšŒν•˜μ§€ μ•ŠλŠ” μΉΌλŸΌμ„ κ΅¬λΆ„μ§€μŒμœΌλ‘œμ¨ μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.

μˆ˜ν‰ νŒŒν‹°μ…”λ‹

λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν…Œμ΄λΈ”μ˜ Rowλ₯Ό λΆ„ν• ν•˜μ—¬ μ—¬λŸ¬ 개의 μ„œλ‘œ λ‹€λ₯Έ ν…Œμ΄λΈ”λ‘œ λ‚˜λˆ„λŠ” 방법이닀.

νŒŒν‹°μ…”λ‹ λ²”μœ„

1. λ²”μœ„ λΆ„ν• , Range Partitioning

연속적인 값을 λ²”μœ„λ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜μ—¬ λΆ„ν• 
우편 번호, λ‚ μ§œ, λΆ„κΈ° λ“±μ˜ 데이터에 적합

2. λͺ©λ‘ λΆ„ν• , List Partitioning

데이터 값이 νŠΉμ • λͺ©λ‘μ— ν¬ν•¨λœ 경우 데이터λ₯Ό 뢄리
λ‚˜λΌ, μ§€μ—­ λ“±μ˜ 데이터에 적합

3. ν•΄μ‹œ λΆ„ν• , Hash Partitioning

Keyκ°’ λ“± νŠΉμ • Column의 값을 Hashing ν•˜μ—¬ λΆ„ν• 
κ· λ“±ν•œ 데이터 뢄할이 κ°€λŠ₯
λ²”μœ„κ°€ μ—†λŠ” 데이터에 적합

4. ν•©μ„± λΆ„ν• , Composite Partitioning

μœ„ μ’…λ₯˜ 쀑 2개 이상을 μ‚¬μš©ν•˜μ—¬ λΆ„ν• 

βœ… μž₯점
쿼리 μ„±λŠ₯ ν–₯상
관리 용이 (νŒŒν‹°μ…˜ λ‹¨μœ„ λ°±μ—…/μ‚­μ œ κ°€λŠ₯)
단일 μΈμŠ€ν„΄μŠ€ 운영으둜 νŠΈλžœμž­μ…˜ 관리 쉬움

⚠️ 단점
μŠ€ν† λ¦¬μ§€λ‚˜ 처리 λŠ₯λ ₯은 ν•œ μΈμŠ€ν„΄μŠ€μ— 의쑴
νŒŒν‹°μ…˜ 섀계가 λ³΅μž‘ν•  수 있음


πŸͺ“ 샀딩(Sharding)μ΄λž€?

샀딩(Sharding)은 데이터λ₯Ό μ—¬λŸ¬ DB μΈμŠ€ν„΄μŠ€(μ„œλ²„)에 λΆ„μ‚° μ €μž₯ν•˜λŠ” 방식이닀.
즉, 단일 ν…Œμ΄λΈ”μ„ λ‚˜λˆ„λŠ” 것이 μ•„λ‹ˆλΌ, λ™μΌν•œ μŠ€ν‚€λ§ˆλ₯Ό κ°€μ§„ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ‚˜λˆ μ„œ μš΄μ˜ν•œλ‹€.
μ–΄λ–»κ²Œ 보면 샀딩은 μˆ˜ν‰ νŒŒν‹°μ…”λ‹κ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ 차이점은 μˆ˜ν‰ νŒŒν‹°μ…”λ‹μ˜ 경우 λ™μΌν•œ μ„œλ²„μ— μ €μž₯λ˜μ–΄ 있고, 샀딩은 μ„œλ‘œ λ‹€λ₯Έ μ„œλ²„μ— λΆ„μ‚°ν•˜μ—¬ μ €μž₯ν•œλ‹€λŠ” 점이닀. λ”°λΌμ„œ 쿼리 μ„±λŠ₯ ν–₯μƒλΏλ§Œ μ•„λ‹ˆλΌ λΆ€ν•˜κ°€ λΆ„μ‚°λ˜λŠ” νš¨κ³ΌκΉŒμ§€ 얻을 수 μžˆλ‹€. 즉, 샀딩은 λ°μ΄ν„°λ² μ΄μŠ€ μ°¨μ›μ˜ μˆ˜ν‰ ν™•μž₯(scale-out)이닀.

μˆ˜ν‰νŒŒν‹°μ…”λ‹

샀딩

μœ„μ²˜λŸΌ λͺ¨λ“  νŒŒν‹°μ…˜μ„ 같은 DB μ„œλ²„μ— μ €μž₯ν•˜λŠ” μˆ˜ν‰ νŒŒν‹°μ…”λ‹κ³Ό λ‹€λ₯΄κ²Œ 샀딩은 각 νŒŒν‹°μ…˜λ“€μ„ μ„œλ‘œ λ‹€λ₯Έ DB μ„œλ²„μ— μ €μž₯ν•¨μœΌλ‘œμ„œ DBμ„œλ²„μ˜ λΆ€ν•˜λ₯Ό λΆ„μ‚°μ‹œν‚€λŠ” λͺ©μ μ΄ μžˆλ‹€. μ΄λ•Œ μˆ˜ν‰λΆ„ν• λœ μž‘μ€ ν…Œμ΄λΈ”μ„ μƒ€λ“œ(shard)λΌκ³ ν•˜λ©° 규λͺ¨κ°€ 큰 μ„œλΉ„μŠ€, 데이터가 많이 μŒ“μ΄λŠ” ν…Œμ΄λΈ”, νŠΈλž˜ν”½μ΄ 많이 λͺ°λ¦¬λŠ” κ²½μš°μ— μ‚¬μš©ν•œλ‹€.

βœ… μž₯점
μˆ˜ν‰μ  ν™•μž₯ κ°€λŠ₯ (μ„œλ²„ μΆ”κ°€λ‘œ μ²˜λ¦¬λŸ‰ 증가)
νŠΈλž˜ν”½ 및 μ €μž₯μ†Œ λΆ„μ‚°
λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ— 유리

⚠️ 단점
νŠΈλžœμž­μ…˜ 관리가 어렀움 (μƒ€λ“œ κ°„ 쑰인, μ •ν•©μ„± 문제)
샀딩 ν‚€ 섀계가 맀우 μ€‘μš” (μ–΄λŠ μƒ€λ“œμ—λ§Œ 데이터가 주ꡬμž₯μ°½ λͺ¨μ΄λ©΄ 였히렀 μ•ˆμ’‹μŒ)
μƒ€λ“œ μΆ”κ°€/병합 μ‹œ 데이터 μž¬λΆ„λ°° ν•„μš”

μ°Έκ³ ν•œ λΈ”λ‘œκ·Έ

https://aiday.tistory.com/123
https://velog.io/@yangsijun528/%ED%8C%8C%ED%8B%B0%EC%85%94%EB%8B%9D%EA%B3%BC-%EC%83%A4%EB%94%A9

profile
κ³΅λΆ€ν•œ λ‚΄μš© μ •λ¦¬ν•˜κ³  λ³΅μŠ΅ν•˜λŠ” λΈ”λ‘œκ·Έ

0개의 λŒ“κΈ€