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. ์ฅ์ ๊ฐ์ง
๋ถ์ฐ ์์คํ ์์๋ ํ๋์ ์๋ฒ๊ฐ ๋ค๋ฅธ ์๋ฒ์ ์ฅ์ ์ง๋จ์ ํ์ง ์๊ณ , ๋ ๋ ์ด์์ ์๋ฒ๊ฐ ๋๊ฐ์ด ์ฅ์ ๋ฅผ ๊ฐ์งํด์ผ ํ๋ค. ๋ชจ๋ ๋ ธ๋ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ฅ์ ๋ฅผ ๊ฐ์งํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ์ด ๋ฐฉ๋ฒ์ ๋คํธ์ํฌ ๋น์ฉ์ด ๋ง์ด ๋ค๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด์ง ์๋ค. ๋ถ์ฐํ ์ฅ์ ๊ฐ์ง ์๋ฃจ์ ์ธ ๊ฐ์ญ ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์ ์๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
๊ฐ ๋ ธ๋๋ง๋ค ๋ฉค๋ฒ์ญ ์ ๋ณด ์ ์ง
๊ฐ ๋ ธ๋๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ค๋ฅธ ๋ ธ๋์๊ฒ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉ์์ง ์ ์ก
๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ ธ๋๋ ์์ ์ ๋ฉค๋ฒ์ญ ์ ๋ณด๋ฅผ ์ต์ ๊ฐ์ผ๋ก ๊ฐฑ์
๋ฉค๋ฒ์ญ ๋ ธ๋ ์ค ์ง์ ๋ ์๊ฐ ์ด์ ๊ฐฑ์ ๋์ง ์์ผ๋ฉด ์ฅ์ ๋ก ๊ฐ์ฃผ
์ฅ์ ๋ฅผ ๋ฐ๊ฒฌํ ๋ ธ๋๋ ๋ค๋ฅธ ๋ ธ๋์๊ฒ ๋ฉค๋ฒ์ญ ์ ๋ณด ์ ๋ฌ
๊ฐฑ์ ๋์ง ์์ ๊ฒ์ ํ์ธํ ๋ ธ๋๋ ํด๋น ๋ ธ๋๋ฅผ ์ฅ์ ๋ ธ๋๋ก ํ์
6. ์ฅ์ ์ฒ๋ฆฌ
์ฅ์ ๋ฅผ ๊ฐ์งํ๋ฉด ํด๋น ๋ ธ๋ ๋์ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์ ์ ๋งก์ ์ฒ๋ฆฌํ๊ณ , ๋ณต๊ตฌ๊ฐ ๋์ ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ผ๊ด ๋ฐ์ํ์ฌ ์ผ๊ด์ฑ์ ๋ณด์กดํ ์ ์๋๋ก ํ๋ค.(=์์ ์ํ ๊ธฐ๋ฒ) ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ผ์์ ์ธ ์ฅ์ ๋ง ์ฒ๋ฆฌํ ์ ์๊ณ , ์๊ตฌ์ ์ธ ์ฅ์ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ๋ฐ-์ํธ๋กํผ ํ๋กํ ์ฝ์ ๊ตฌํํ์ฌ ์ฌ๋ณธ๋ค์ ๋๊ธฐํํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?