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?