//
Search
Duplicate

5μž₯ μ•ˆμ • ν•΄μ‹œ 섀계

ν•΄μ‹œ ν‚€ 재배치 문제

β€’
N개의 μΊμ‹œ μ„œλ²„μ—μ„œ 보톡은 serverIndex = hash(key)%N
β€’
보편적이고 직관적인 λ°©λ²•μ΄μ§€λ§Œ μ„œλ²„κ°€ μΆ”κ°€λ˜κ±°λ‚˜ μ‚­μ œλ˜λ©΄ λ¬Έμ œκ°€ λ°œμƒ
β€’
뢄포가 λ‹¬λΌμ§ˆ 수 있고 λŒ€λΆ€λΆ„μ˜ ν‚€λ₯Ό μž¬λ°°μΉ˜ν•΄μ•Όν•œλ‹€.

μ•ˆμ • ν•΄μ‹œ

β€’
μ•ˆμ • ν•΄μ‹œλ₯Ό μ μš©ν•˜λ©΄ 였직 k/n 개만의 ν‚€λ§Œ μž¬λ°°μΉ˜λœλ‹€.
β€’
λ‚˜λ¨Έμ§€ μ—°μ‚°μœΌλ‘œ ν•΄μ‹œ 킀값을 κ΅¬ν•˜λŠ” 것이 μ•„λ‹ˆκ³  ν•΄μ‹œ κ³΅κ°„μ˜ μ–‘μͺ½μ„ ꡬ뢀렀 ν•΄μ‹œ 링을 λ§Œλ“ λ‹€.
β€’
μƒμ„±λœ 킀듀을 ν•΄μ‹œ 링 μœ„μ˜ μ–΄λŠ 지점에 λ°°μΉ˜ν•œλ‹€.
β€’
μ‹œκ³„λ°©ν–₯으둜 λŒλ©΄μ„œ κ°€μž₯ λ¨Όμ € λ§Œλ‚˜λŠ” μ„œλ²„μ— μ €μž₯λœλ‹€.

μ„œλ²„ μΆ”κ°€

β€’
μ„œλ²„λ₯Ό μΆ”κ°€ν•˜λ”λΌλ„ ν‚€ κ°€μš΄λ° μΌλΆ€λ§Œ μž¬λ°°μΉ˜ν•˜λ©΄ λœλ‹€.
k2, k3, k4 λŠ” κ·ΈλŒ€λ‘œ μœ μ§€λ˜κ³  k1 만 μ„œλ²„ 1μ—μ„œ μ„œλ²„ 5둜 μ΄λ™ν•œλ‹€.

μ„œλ²„ 제거

β€’
μ„œλ²„κ°€ μ œκ±°λ˜μ–΄λ„ ν‚€ κ°€μš΄λ° μΌλΆ€λ§Œ μž¬λ°°μΉ˜λœλ‹€.

두 가지 문제

β€’
μ„œλ²„κ°„ ν• λ‹Ή 크기λ₯Ό κ· λ“±ν•˜κ²Œ μœ μ§€ν•˜λŠ”κ²Œ λΆˆκ°€λŠ₯ν•˜λ‹€.
β—¦
μœ„μ˜ 제거 μ˜ˆμ‹œμ—μ„œ s1 은 s3~s1 κΉŒμ§€μ˜ 크기λ₯Ό λͺ¨λ‘ 감당해야 ν•œλ‹€.
β€’
ν‚€μ˜ κ· λ“± 뢄포λ₯Ό λ‹Ήμ„±ν•˜κΈ° μ–΄λ ΅λ‹€.
β—¦
μ•žμ„  문제 λ“±μœΌλ‘œ 인해 μ„œλ²„λ“€ μ‚¬μ΄μ—μ„œ ν‚€μ˜ 뢄포가 λ‹€λ₯Ό 수 μžˆλ‹€.

가상 λ…Έλ“œ

β€’
가상 λ…Έλ“œλŠ” μ‹€μ œ λ…Έλ“œ λ˜λŠ” μ„œλ²„λ₯Ό κ°€λ¦¬ν‚€λŠ” λ…Έλ“œλ‘œμ„œ 링 μœ„μ— μ—¬λŸ¬ 개의 가상 λ…Έλ“œλ₯Ό κ°€μ§€λŠ” 방법
β€’
ν‘œμ€€ νŽΈμ°¨κ°€ μž‘μ•„μ Έμ„œ 데이터가 κ³ λ₯΄κ²Œ λΆ„ν¬λ˜κΈ° λ•Œλ¬Έμ— 가상 λ…Έλ“œμ˜ 개수λ₯Ό 늘릴수둝 ν‚€μ˜ λΆ„ν¬λŠ” 점점 더 균등해진닀.
β€’
λ„ˆλ¬΄ 많이 늘리면 가상 λ…Έλ“œ 데이터λ₯Ό μ €μž₯ν•  곡간이 ν•„μš”ν•΄μ„œ νŠΈλ ˆμ΄λ“œ μ˜€ν”„κ°€ ν•„μš”ν•˜λ‹€.

마무리

β€’
μ•ˆμ • ν•΄μ‹œμ˜ 이점
β—¦
μ„œλ²„κ°€ μΆ”κ°€λ˜κ±°λ‚˜ μ‚­μ œλ  λ•Œ μž¬λ°°μΉ˜λ˜λŠ” ν‚€μ˜ μˆ˜κ°€ μ΅œμ†Œν™”λœλ‹€.
β—¦
데이터가 보닀 κ· λ“±ν•˜κ²Œ λΆ„ν¬ν•˜κ²Œ λ˜μ–΄ μˆ˜ν‰μ  규λͺ¨ ν™•μž₯에 μœ λ¦¬ν•˜λ‹€.
β—¦
ν‘œμ€€ νŽΈμ°¨κ°€ μž‘μ•„μ Έ ν•«μŠ€νŒŸ ν‚€ 문제λ₯Ό 쀄인닀.