κ° λ°μ΄ν°λ₯Ό κ³ μ ν keyμ λμνλλ‘ μ μ₯νλ κ°λ μ΄λ€.
# key-value Storeμ μ μ₯λ λ°μ΄ν°μ keyλ‘ μ κ·Ό
{key: 32501, value: {
name: Alex,
score: 100,
...
}
}
key-Value μμ μ λ ₯νλ μ°μ°μ put, νΉμ keyμ valueλ₯Ό μ‘°ννλ μ°μ°μ getμ΄λΌκ³ μ μνλ€.
λ°°μ΄μ valueλ₯Ό μ μ₯νκ³ , λ°°μ΄μ μΈλ±μ€λ₯Ό Keyλ‘ μ΄μ©νλ λ°©μμΌλ‘ ꡬννλ€λ©΄:
DB = kvStore()
DB.put(2,7)
myVal = [0,0,7,0,3,0,0,]
DB.get(4)
# 3
μ΄λ° μμΌλ‘ κ°λ₯ν κ²μ΄λ€.
κ·Έλ¬λ μ¬λ¬ κ²½μ°μμ λ¬Έμ μ μ΄ λ°μνλ€.
DB.put(100,2)
κΈ°μ‘΄μ λ°°μ΄μ ν¬κΈ°λ 7μΈλ°, μΈλ±μ€ 100λ²μ κ°μ μΆκ°ν΄μΌνλ κ²½μ°, λ°°μ΄μ ν¬κΈ°λ₯Ό 101κΉμ§ λλ € μΈλ±μ€ 100μ 곡κ°μ λ§λ€μ΄ μ€ νμμΌ μμλ₯Ό λ£μ μ μλ€. λ°λΌμ, λΉν¨μ¨μ μ΄λ€.
μ κ°μ μ₯μ μ΄ μμ§λ§ , λ¨μ μΌλ‘λ
- μ΅μ μ κ²½μ°, μλ£μ μ°κΈ° μ°μ°μ΄ λΉ λ₯΄λ€
- μλ£μ μ½κΈ° μ°μ°μ΄ λΉ λ₯΄λ€.
λ μ μ΄ κ³΅μ‘΄νλ€.
- 'μλ£κ° μμ κ²½μ°'λ₯Ό νννλ κ²μ΄ μ½μ§ μλ€
- 곡κ°μ΄ μ§λμΉκ² λλΉλ μμλ€.
keyλ₯Ό μ μ₯νλ λ°°μ΄κ³Ό valueλ₯Ό μ μ₯νλ λ°°μ΄μ λ°λ‘ μμ±νμ¬ μ μ₯νλ λ°©λ²μ μ±ννλ€λ©΄
DB =kvStore()
DB.put(4,8)
# ν€λ₯Ό μ μ₯νλ λ°°μ΄
myKey = [2,3]
#κ°μ μ μ₯νλ λ°°μ΄
myVal = [1,7]
#곡κ°μ μ΄λ§λ¬΄μνκ² λ릴 νμκ° μλ€.
DB.put(100,2)
myKey = [2,3,100]
myVal = [1,7,2]
DB.get(3)
# 3μ μΈλ±μ€ λ²νΈ 1μ κΈ°μ΅νκ³
myKey = [2,3,100]
# κ°μ μΈλ±μ€ μμΉμ κ°μ μ°Ύλλ€.
myVal = [1,7,8]
μ λ°©λ²μ μ₯λ¨μ
μ₯μ :
λ¨μ :
μλ£μ μ½κΈ° μ°μ°μ΄ λ리λ€.
μλ£μ μ°κΈ° μ°μ°λ λ리λ€.
ν΄μλ μμ λ°μ΄ν°μ ν΄μ ν¨μλ₯Ό μ΄μ©νμ¬ κ³ μ λ κΈΈμ΄μ λ°μ΄ν°λ‘ λ³ννλ κ²μ μλ―Ένλ€.
λ³ννλ κ³Όμ μ체λ₯Ό ν΄μ±(hashing), λ³νλ κ°μ ν΄μ κ°μ΄λΌκ³ λΆλ₯Έλ€.
ν΄μ μκ³ λ¦¬μ¦μΌλ‘ μλ €μ§ λνμ μΈ μμλ SHA-256μ΄ μλ€.
μλ³Έ : a
ν΄μ κ°: ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
#μνΈν
νμ΄μ¬ λ΄μ₯ ν¨μ hash()λ₯Ό μ΄μ©νμ¬ μμμ κ°μ ν΄μ κ°(μ μ)μ μ μ μλ€.
νμ΄μ¬μ hash() ν¨μλ 보μμ μ΄μ λ‘ νλ‘κ·Έλ¨μ μ€νν λλ§λ€ λ°νκ°μ΄ λ¬λΌμ§λ€.
ν΄μλ₯Ό μ΄μ©νμ¬ Key-Value Storeλ₯Ό ꡬνν μ μλλ°, ν΄μλ₯Ό μ΄μ©νμ¬ κ΅¬νλ
Key-Value Storeλ₯Ό ν΄μ ν
μ΄λΈ(Hash Table) λλ λμ
λ리(Dictionary)λΌκ³ νλ€.
κ°λ μΈλ±μ€κ° κ²ΉμΉλ ν΄μ μΆ©λμ λ¬Έμ λ λ°μνκΈ°λ νλ€..
μ’μ ν΄μ ν¨μλ μ€λ³΅λλ ν΄μ κ°μ΄ μ΅λν μλλ‘ ν΄μ, λλλ‘ μΆ©λμ΄ λ°μνμ§ μλ ν¨μμ΄λ€.
κ·Έλ¬λ ν΄μ ν¨μμ λ°ν κ°μ κ²½μ°μ μλ μ ννκ³ , μ λ ₯κ°μ κ²½μ°μ μλ 무ννκΈ° λλ¬Έμ μΆ©λμ μ΄μ© μ μμ΄ λ°μνλ€.
λΉλκΈ° μ§μ μ리:
nκ°μ λΉλκΈ° μ§μ (n+1)λ§λ¦¬μ λΉλκΈ°λ₯Ό ν μ§μ ν λ§λ¦¬μ© λ£λ κ²μ λΆκ°λ₯νλ€λ μ리λ₯Ό λ§νλ€.
λΉλκΈ°κ° μ΅λ 1λ§λ¦¬μ© λ€μ΄μλ λΉλκΈ° μ§μ΄ nκ° μλ€λ©΄ μ 체 λΉλκΈ°μ§μλ λΉλκΈ°κ° λ§μμΌ nλ§λ¦¬ μ‘΄μ¬νλ€.
λ°λΌμ (n+1)λ§λ¦¬μ λΉλκΈ°λ₯Ό nκ°μ λΉλκΈ°μ§μ ν λ§λ¦¬μ© λ£λ κ²μ λΆκ°λ₯νλ€.
μμ:
μ°λ½μ²μ μλ μ¬λ 366λͺ
μ μμΌμ μ¬ν΄ λ¬λ ₯μ μ μ κ²½μ°, μ¬ν΄κ° μ€λ
μ΄ μλκ³ , 2μ 29μΌμ΄ μμΌμΈ μ¬λμ΄ μλ€λ©΄ ν λ μ§μ λ μ¬λμ μ΄λ¦μ μ μ΄μΌ νλ κ²½μ°κ° λ°λμ μκΈ΄λ€.
κ°λ³ 체μ΄λ λ°©μμ μ¬μ©νλ©΄, 볡μμ ν€κ°μ΄ ν΄μ ν¨μλ₯Ό ν΅ν΄ Key-Value Storeμμ κ°μ ν€λ‘ μ μ₯μ΄ λλ€ νλλΌλ, κ°μ μ°κ²°(체μ΄λ)νμ¬ μΆ©λμ νΌν μ μλ€. getν¨μλ₯Ό ν΅ν΄ Key-Value Storeμ κ°μ ν€λ‘ μ μ₯λ 볡μμ κ°μ΄ μ‘΄μ¬ν κ²½μ°, μ°Ύλ κ°μ΄ μλ κ²½μ° μ²΄μ΄λ λ λ€λ₯Έ κ°μ μ°Ύμ μ μλ€.
μ 리νλ€λ©΄, κ°λ³ 체μ΄λμ Key-Value Storeμ κ° μΈλ±μ€λ₯Ό 'μ°κ²° 리μ€νΈ'λ‘ λ§λ€μ΄μ λμΌν μΈλ±μ€μ κ°λ€μ μ°κ²°νλ λ°©λ²μ΄λ€.
μΆ©λμ΄ λ°μνμ λ μλ£λ₯Ό μ μ₯νκΈ° μν΄ λΉ κ³΅κ°μ νμνλ λ°©μ.
λ°λΌμ λͺ¨λ μμκ° μμ μ ν΄μ κ°κ³Ό μΌμΉνλ μΈλ±μ€μ μ μ₯λλ€λ 보μ₯μ μλ€.
μΆ©λμ΄ λ°μν κ²½μ°, μλ£λ κ°μ₯ κ°κΉμ΄ λΉ κ³΅κ°μ νμνμ¬ μλ μΈλ±μ€μλ λ€λ₯Έ μΈλ±μ€μ μ μ₯λλ€.
μ€ν μ΄λλ μ±μμ λΉ κ³΅κ°μ μ°Ύλ λ°©λ²μ μ¬λ¬ κ°μ§κ° μμ§λ§ κ°μ₯ κ°λ¨νκ³ λνμ μΈ λ°©λ²μ 'μ ν νμ¬ λ°©μ'.
μλ μΈλ±μ€μ λ€μ μΈλ±μ€λΆν° νμνμ¬ κ°μ₯ κ°κΉμ΄ λΉ κ³΅κ°μ μ°Ύλ λ°©λ²μ΄λ€.
ν΄λΉ λ°©λ²μ Pythonμμ λμ λ리μ ν΄μ κ° μΆ©λμ΄ λ°μνμμ λ ν΄κ²°νλλ‘ κ΅¬νλμ΄ μλ€.
ν μ€ν: λκ°μΌλ‘λ§ μκ³ μμλ ν΄μ ν μ΄λΈ μλ£κ΅¬μ‘°μ μΆ©λ λ¬Έμ μ ν΄κ²° λ°©λ²μ λν κΈ°λ°μ λ€μ§ μ μμ΄ μ μ΅ν νμ΅μ΄μλ€.