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?