Design Key-Value Store

ν‚€-κ°’ μ €μž₯μ†ŒλŠ” ν‚€-κ°’ λ°μ΄ν„°λ² μ΄μŠ€λΌκ³ λ„ λΆˆλ¦¬λŠ” λΉ„ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ‹€.

  • key

    • 데이터λ₯Ό μ‹λ³„ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” μœ μΌν•œ κ°’

    • 일반 ν…μŠ€νŠΈ, 숫자, UUID, ν•΄μ‹œ 등이 될 수 있음

    • μ„±λŠ₯상 ν‚€ κΈΈμ΄λŠ” μ§§μ„μˆ˜λ‘ μ’‹μŒ

  • value

    • 보톡 무슨 값이든 될 수 있음

    • keyλ₯Ό ν†΅ν•΄μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯

ν‚€-κ°’ μ €μž₯μ†Œλ₯Ό 섀계할 λ•ŒλŠ” λ‹€μŒκ³Ό 같은 μš”κ΅¬μ‚¬ν•­μ„ κ³ λ €ν•΄λ³Ό 수 μžˆλ‹€.

  • ν‚€-κ°’ 쌍의 크기

  • 큰 데이터 μ €μž₯ κ°€λŠ₯

  • 높은 κ°€μš©μ„± 제곡

  • 높은 규λͺ¨ ν™•μž₯μ„±(μžλ™μ μœΌλ‘œ μ„œλ²„ 증섀/μ‚­μ œ κ°€λŠ₯)

  • 데이터 일관성 μˆ˜μ€€ μ‘°μ • κ°€λŠ₯

  • 짧은 응닡 μ‹œκ°„

ν•˜λ‚˜μ˜ μ„œλ²„λ§Œ μ‚¬μš©ν•˜λŠ” ν‚€-κ°’ μ €μž₯μ†ŒλŠ” 데이터 μ „λΆ€λ₯Ό λ©”λͺ¨λ¦¬μ— ν•΄μ‹œ ν…Œμ΄λΈ”λ‘œ μ €μž₯ν•˜λŠ” λ“± κ°„λ‹¨ν•œ λ°©λ²•μœΌλ‘œ κ΅¬ν˜„ κ°€λŠ₯ν•˜λ‹€. ν•˜μ§€λ§Œ 이 방법은 데이터가 λ§Žμ•„μ§€λ©΄ λͺ¨λ“  데이터λ₯Ό λ©”λͺ¨λ¦¬ μ•ˆμ— λ‘λŠ” 것이 λΆˆκ°€λŠ₯ν•˜μ—¬ μ•„λž˜μ˜ λ°©λ²•μœΌλ‘œ κ°œμ„ ν•΄λ³Ό 수 μžˆλ‹€.

  • 데이터 μ••μΆ•

  • 자주 μ“°μ΄λŠ” λ°μ΄ν„°λ§Œ λ©”λͺ¨λ¦¬μ— μ €μž₯(λ‚˜λ¨Έμ§€λŠ” λ””μŠ€ν¬μ— μ €μž₯)

ν•˜μ§€λ§Œ 이 방법도 ν•˜λ‚˜μ˜ μ„œλ²„λ‘œ λΆ€μ‘±ν•΄μ§ˆ 수 있기 λ•Œλ¬Έμ—, 더 λ§Žμ€ 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄μ„  λΆ„μ‚° ν‚€-κ°’ μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

λΆ„μ‚° ν‚€-κ°’ μ €μž₯μ†Œ

λΆ„μ‚° ν‚€-κ°’ μ €μž₯μ†Œμ— κ΅¬ν˜„μ— ν•„μš”ν•œ 핡심 μ»΄ν¬λ„ŒνŠΈμ™€ κΈ°μˆ λ“€μ€ λ‹€μŒκ³Ό κ°™λ‹€.

1. 데이터 νŒŒν‹°μ…˜

λͺ¨λ“  데이터λ₯Ό ν•œ λŒ€μ˜ μ„œλ²„μ— λ„£λŠ” 것은 λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ, 데이터λ₯Ό μ—¬λŸ¬ νŒŒν‹°μ…˜λ“€λ‘œ λ‚˜λˆ„μ–΄ μ €μž₯ν•΄μ•Ό ν•œλ‹€. μ•ˆμ • ν•΄μ‹œ 기법을 μ‚¬μš©ν•΄μ„œ 데이터λ₯Ό μ—¬λŸ¬ μ„œλ²„μ— κ³ λ₯΄κ²Œ λΆ„μ‚°ν•˜κ³ , λ…Έλ“œ μΆ”κ°€ μ‚­μ œ μ‹œ 데이터 재배치 μ΅œμ ν™”λ₯Ό ν•  수 μžˆλ‹€.

2. 데이터 닀쀑화(replication)

N개의 μ„œλ²„μ— λΉ„λ™κΈ°μ μœΌλ‘œ λ‹€μ€‘ν™”ν•˜μ—¬ 높은 κ°€μš©μ„±κ³Ό μ•ˆμ •μ„±μ„ 확보할 수 μžˆλ‹€.(N은 νŠœλ‹ κ°€λŠ₯ν•œ κ°’)

3. 데이터 일관성(consistency)

μ •μ‘±μˆ˜ ν•©μ˜(Quorum Consensus) ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ λ‹€μ€‘ν™”λœ 데이터 일관성을 보μž₯ν•  수 μžˆλ‹€. μ•„λž˜μ˜ 값을 μ‘°μ •ν•˜μ—¬ 쓰기와 읽기 μ—°μ‚°μ˜ 일관성 μˆ˜μ€€μ„ μ‘°μ ˆν•  수 μžˆλ‹€.

  • W: μ“°κΈ° μ—°μ‚° 성곡 응닡 ν•„μš” 수, μ„€μ •ν•œ 개수 μ΄μƒμ˜ μ„œλ²„κ°€ μ“°κΈ° μ„±κ³΅ν•˜λ©΄ μ“°κΈ° 연산을 μ„±κ³΅ν•œ κ²ƒμœΌλ‘œ κ°„μ£Ό(λ‚˜λ¨Έμ§€ μ„œλ²„μ— μ €μž₯을 ν•˜μ§€ μ•ŠλŠ” λ‹€λŠ” 것은 μ•„λ‹˜)

  • R: 읽기 μ—°μ‚° 응닡 성곡 ν•„μš” 수, μ„€μ •ν•œ 개수 μ΄μƒμ˜ μ„œλ²„μ—μ„œ 읽기 μ„±κ³΅ν•˜λ©΄ 읽기 연산을 μ„±κ³΅ν•œ κ²ƒμœΌλ‘œ κ°„μ£Ό

W, R, N μ„Έ κ°€μ§€ 값에 따라 λ‹€μŒκ³Ό 같은 μ‹œμŠ€ν…œμ„ ꡬ성할 수 μžˆλ‹€.(N=사본 수)

  • R=1, W=N: λΉ λ₯Έ 읽기 연산에 μ΅œμ ν™”λœ μ‹œμŠ€ν…œ

  • W=1, R=N: λΉ λ₯Έ μ“°κΈ° 연산에 μ΅œμ ν™”λœ μ‹œμŠ€ν…œ

  • W+R > N: κ°•ν•œ 데이터 일관성을 보μž₯ν•˜λŠ” μ‹œμŠ€ν…œ

  • W+R <= N: κ°•ν•œ 데이터 일관성을 보μž₯ν•˜μ§€ μ•ŠλŠ” μ‹œμŠ€ν…œ

4. 일관성 뢈일치 ν•΄μ†Œ(inconsistency resolution)

일관성 λͺ¨λΈμ€ ν‚€-κ°’ μ €μž₯μ†Œλ₯Ό 섀계할 λ•Œ κ³ λ €ν•΄μ•Όν•  μ€‘μš”ν•œ μš”μ†Œ 쀑 ν•˜λ‚˜μΈλ°, κ·Έ μ’…λ₯˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • κ°•ν•œ μ•Œκ΄€μ„±: λͺ¨λ“  읽기 연산이 κ°€μž₯ μ΅œκ·Όμ— κ°±μ‹ λœ κ²°κ³Ό λ°˜ν™˜

  • μ•½ν•œ 일관성: λͺ¨λ“  읽기 연산이 μ΅œκ·Όμ— κ°±μ‹ λœ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜μ§€ μ•Šμ„ 수 있음

  • μ΅œμ’… 일관성: μ•½κ΄€ μΌκ΄€μ„±μ˜ ν•œ ν˜•νƒœλ‘œ, κ°±μ‹  κ²°κ³Όκ°€ κ²°κ΅­ λͺ¨λ“  사본에 λ°˜μ˜λ˜λŠ” λͺ¨λΈ

κ³ κ°€μš©μ„± μ‹œμŠ€ν…œμ„ μ œκ³΅ν•˜κΈ° μœ„ν•΄ μ΅œμ’… 일관성 λͺ¨λΈμ„ νƒν•˜λŠ” κ²½μš°κ°€ λ§Žμ€λ°, 데이터 버저닝을 μ‚¬μš©ν•΄ 일관성 뢈일치 ν•΄μ†Œλ₯Ό ν•˜κ³  μžˆλ‹€. (벑터 μ‹œκ³„ μ°Έκ³ )

5. μž₯μ•  감지

λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œλŠ” ν•˜λ‚˜μ˜ μ„œλ²„κ°€ λ‹€λ₯Έ μ„œλ²„μ˜ μž₯μ•  진단을 ν•˜μ§€ μ•Šκ³ , 두 λŒ€ μ΄μƒμ˜ μ„œλ²„κ°€ λ˜‘κ°™μ΄ μž₯μ• λ₯Ό 감지해야 ν•œλ‹€. λͺ¨λ“  λ…Έλ“œ 사이λ₯Ό μ—°κ²°ν•˜μ—¬ μž₯μ• λ₯Ό κ°μ§€ν•˜λŠ” 방법도 μžˆμ§€λ§Œ, 이 방법은 λ„€νŠΈμ›Œν¬ λΉ„μš©μ΄ 많이 λ“€κΈ° λ•Œλ¬Έμ— νš¨μœ¨μ μ΄μ§€ μ•Šλ‹€. λΆ„μ‚°ν˜• μž₯μ•  감지 μ†”λ£¨μ…˜μΈ κ°€μ‹­ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•  수 μžˆλŠ”λ°, λ‹€μŒκ³Ό 같은 λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.

  1. 각 λ…Έλ“œλ§ˆλ‹€ 멀버십 정보 μœ μ§€

  2. 각 λ…Έλ“œλŠ” 주기적으둜 λ‹€λ₯Έ λ…Έλ“œμ—κ²Œ 주기적으둜 λ©”μ‹œμ§€ 전솑

  3. λ©”μ‹œμ§€λ₯Ό 받은 λ…Έλ“œλŠ” μžμ‹ μ˜ 멀버십 정보λ₯Ό μ΅œμ‹  κ°’μœΌλ‘œ κ°±μ‹ 

  4. 멀버십 λ…Έλ“œ 쀑 μ§€μ •λœ μ‹œκ°„ 이상 κ°±μ‹ λ˜μ§€ μ•ŠμœΌλ©΄ μž₯μ• λ‘œ κ°„μ£Ό

  5. μž₯μ• λ₯Ό λ°œκ²¬ν•œ λ…Έλ“œλŠ” λ‹€λ₯Έ λ…Έλ“œμ—κ²Œ 멀버십 정보 전달

  6. κ°±μ‹ λ˜μ§€ μ•Šμ€ 것을 ν™•μΈν•œ λ…Έλ“œλŠ” ν•΄λ‹Ή λ…Έλ“œλ₯Ό μž₯μ•  λ…Έλ“œλ‘œ ν‘œμ‹œ

6. μž₯μ•  처리

μž₯μ• λ₯Ό κ°μ§€ν•˜λ©΄ ν•΄λ‹Ή λ…Έλ“œ λŒ€μ‹  λ‹€λ₯Έ λ…Έλ“œκ°€ μž μ‹œ λ§‘μ•„ μ²˜λ¦¬ν•˜κ³ , 볡ꡬ가 됐을 λ•Œ 변경사항을 일괄 λ°˜μ˜ν•˜μ—¬ 일관성을 보쑴할 수 μžˆλ„λ‘ ν•œλ‹€.(=μž„μ‹œ μœ„νƒ 기법) ν•˜μ§€λ§Œ 이 방법은 μΌμ‹œμ μΈ μž₯μ• λ§Œ μ²˜λ¦¬ν•  수 있고, 영ꡬ적인 μž₯μ• λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„  반-μ—”νŠΈλ‘œν”Ό ν”„λ‘œν† μ½œμ„ κ΅¬ν˜„ν•˜μ—¬ 사본듀을 λ™κΈ°ν™”ν•˜μ—¬ μ²˜λ¦¬ν•  수 μžˆλ‹€.

참고자료

Last updated

Was this helpful?