8μ₯ NoSQL κΈ°μ΄
μμ μμλ³Έ λ°μ΄ν°λ² μ΄μ€λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ΄λ€. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ ν μ΄λΈκ³Ό μΈλ ν€ λ±μ μ¬μ©νκ³ λ€μν μ’ λ₯μ μ§μ ꡬ문μΌλ‘ μνλ μ 보λ₯Ό λ€κ°μ μΌλ‘ λΉ λ₯΄κ² μΆμΆν μ μλ€. λ λ°μ΄ν° μΌκ΄μ±μ μ€μνκ² μκ°νλ€.
λ°μ΄ν°λ² μ΄μ€ μ€ λ λ€λ₯Έ νλμΈ NoSQLλ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ μ ν΅μ μΌλ‘ μ€μνλ λͺ κ°μ§λ₯Ό ν¬κΈ°νλ λμ λ€λ₯Έ μΈ‘λ©΄μ μ₯μ μ κ°μ§λ€.
1. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ NoSQL
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ μ€λ μμ¬λ₯Ό μ§λκ³ μμ§λ§, νΉμ μν©μμ λͺ κ°μ§ λΆμ‘±ν μ μ΄ μλ€. μλ₯Ό λ€μ΄ λ‘κ·Έ λ°μ΄ν°λ₯Ό ν ν μ΄λΈμ κΈ°λ‘ν λ λΆνΈν μ μλ€. λ‘κ·Έ λ°μ΄ν°κ° λμ λμ΄ ν μ΄λΈμ μ½ 1μ΅ κ°μ λ μ½λκ° μμμ λ μ μ§ λ³΄μλ₯Ό μν΄ νλ νλλ₯Ό λ μΆκ°ν΄μΌ νλ μν©μ΄ μ€λ©΄, κΈ°μ‘΄ 1μ΅ κ°μ λ μ½λμλ μ΄ νλκ° λ°λμ μΆκ°λμ΄μΌ νλ€. κ·Έλ¦¬κ³ κΈ°μ‘΄ ν μ΄λΈμ νλ ꡬ쑰λ₯Ό λ°κΎΈλ©΄ λ°κΏμλ‘ ν μ΄λΈ ꡬ쑰λ 볡μ‘ν΄μ§ κ²μ΄λ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ λ μ½λ 1κ°λ λ Όλ¦¬μ μΌλ‘ λ³Ό λ 리μ€νΈλ λ°°μ΄ κ΅¬μ‘°μ λ°μ΄ν°μ΄λ€. μ΄ λ μ½λκ° λ¦¬μ€νΈλ λ°°μ΄μ΄ μλ νΈλ¦¬λ ꡬ쑰체 ννλ₯Ό κ°μΆ μ μλ€λ©΄ μ΄λ¨κΉ? λ€μ λ±μ₯ν NoSQLμ μ΄λ¬ν ννλ₯Ό κ°μ§λ€.
2. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ νμ₯μ±
μ΄λ²μλ λ€λ₯Έ μν©λ μκ°ν΄ 보μ. κ²μ μλΉμ€μ μ΄μ©μκ° λ§μ λ κ²μ μλ² ν λλ‘λ μ΄ μ΄λ§μ΄λ§ν μ¬μ©λμ κ°λΉν μ μλ€. κ·Έλμ μ΄λ₯Ό ν΄κ²°νκ³ μ κ²μ μλ²λ₯Ό νλμ¨μ΄ μ¬λ¬ λλ‘ κ΅¬μ±νκ³ λ°μ΄ν°λ² μ΄μ€λ μ¬λ¬ λμ λλμ΄ μ μ₯νλ€.
λ°μ΄ν°λ² μ΄μ€λ₯Ό λΆμ°νλ λ°©λ² μ€ νλμΈ μμ§ λΆμ°μ μ¬λ¬ ν μ΄λΈμ κ°κ° μ¬λ¬ λ°μ΄ν°λ² μ΄μ€ μ»΄ν¨ν°μ λλλ κ²μ΄λ€. κ·Έλ¬λ μμ§ λΆμ°μ νκ³κ° μλ€. ν μ΄λΈμ΄ μκ° λ°μ΄ν°λ² μ΄μ€ μ»΄ν¨ν° μλ³΄λ€ μλ€λ©΄ λλλ κ²μ΄ λΆκ°λ₯ν΄μ§λ€. μ΄λλ μν λΆμ°νλ κ²μ΄ μ’λ€. μν λΆμ°μ κ° μ»΄ν¨ν°μ λ μ½λλ₯Ό λΆλ°°νλ κ²μΌλ‘ κ° μ»΄ν¨ν°κ° ν° ν μ΄λΈ 1κ°λ₯Ό μ‘°κ°μ‘°κ° κ°μ§ μ μ΄λ€. μ΄ μ‘°κ°μ μ€λλΌκ³ νλ€.
μμ κ°μ μνμμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ‘μΈμ€ νλ €λ©΄ μ΄λ»κ² ν΄μΌ ν κΉ? λ¨Όμ μ΄λ μ€λμ μλμ§ νμ ν ν ν΄λΉ μ€λμ λ°μ΄ν°λ² μ΄μ€ μ§μλ₯Ό μ€ννλ©΄ λλ€.
- ν΄μ ν¨μ μ¬μ©: ν΄μ ν¨μλ‘ μ»μ μ μ κ°μ μ€λ λλ²λ‘ μ¬μ©νλ€.
- λ‘μΌμ΄ν° DB μ¬μ©: λ³λμ ν μ΄λΈμ μ‘μΈμ€ νμ¬ μ΄λ μ€λμ μλμ§ νμ νλ€.
μ 체 κ³Όμ μ λ€μκ³Ό κ°λ€. κ²μ μλ²κ° λ°μ΄ν°λ² μ΄μ€μ μ§μλ₯Ό λμ§λ©΄, λ°μ΄ν°λ² μ΄μ€ μ§μλ₯Ό μννλ μ½λλ€μ΄ν°κ° μ§μμ κ΄λ ¨λ λ μ½λμ μμΉλ₯Ό λ‘μΌμ΄ν° DBμ 묻λλ€. κ·Έλ κ² ν΄λΉ μ€λ μμΉλ₯Ό νμ νλ©΄, ν΄λΉ μ€λμμ λ μ½λ μ‘μΈμ€λ₯Ό μ²λ¦¬νμ¬ κ²°κ³Όλ₯Ό λ°λλ€.
μ΄λ¬ν μν λΆμ°μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ μ¬μ©νλ€λ©΄, μ²λ¦¬ μλ μΈ‘λ©΄μμ λ¬Έμ μ μ΄ μκΈΈ μ μλ€. κΈ°λ³Έμ μΌλ‘ λ°μ΄ν° μΌκ΄μ±μ μ€μνκ² μ¬κΈ°κΈ° λλ¬Έμ λ°μ΄ν°μ λ³νκ° μλ€λ©΄ μ€λμ λ‘μΌμ΄ν° DB λͺ¨λ μμ μ΄ νμνκΈ° λλ¬Έμ΄λ€.
3. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ κ³ κ°μ©μ±
μ΄λ²μλ μ²λ¦¬λμ΄ μλ μ₯μ 극볡(fail over)μ κ΄ν΄ μμ보μ. μ₯μ 극볡μ κ³ κ°μ©μ±μ μν΄ νμ©λλ λ€μν κΈ°λ² μ€ νλμ΄λ€. κ³ κ°μ©μ±μ΄λ νλμ¨μ΄ κ³ μ₯ λλ λ€λ₯Έ μ΄μ λ‘ μλ² κΈ°κΈ°κ° μ μ μλμ νμ§ μμ λλ μ¬μ©μ μ μ₯μμλ μλΉμ€κ° μ§μλλ μνλ₯Ό μ μ§νλ κ²μ λ§νλ€.
μ₯μ 극볡μ μν΄μ ν μ μλ κ²μ λ μ½λ μμ λ°±μ μ΄λ€. DB 1μ μλ λ μ½λλ₯Ό DB 2μ νμ λ°±μ , μ¦ λ―Έλ¬λ§ 볡μ λ₯Ό μννλλ°, νμμλ DB 1(active, master)μ μ‘μΈμ€ νλ€κ° μ£½μΌλ©΄, DB 2(passive, slave)κ° λμ μ‘μΈμ€λ₯Ό λ°μ μ²λ¦¬νλ κ²μ΄λ€. μ΄λ κ°μ λ°μ΄ν°κ° DB 1, DB 2μ λͺ¨λ μκ² νλ κ²μ μ΄μ€ν νΉμ λ€μ€νλΌκ³ νλ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμλ λ°μ΄ν° μΌκ΄μ±μ μ€μνκΈ° λλ¬Έμ λ°μ΄ν°λ₯Ό λ³κ²½ν λ μ‘ν°λΈμ ν¨μλΈ λͺ¨λ λ³κ²½ν νμμΌ μ²λ¦¬ μλ£λ₯Ό μ μΈνλ€. μ΄λ μΌκ΄μ±μ μ μ§λμ§λ§ μ²λ¦¬ μ±λ₯μ νλ½λλ€.
μ λ°©λ²μ μ²λ¦¬ μλλ λΉ λ₯΄μ§λ§ μΌκ΄μ±μ΄ κΉ¨μ§λ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ ACIDλ₯Ό μΆκ΅¬νλ κ²μ΄ μμΉμ΄λ€. νμ§λ§ μ΄ μ€μμ C(μΌκ΄μ±)μ I(κ³ λ¦½μ±)λ₯Ό μ΄λ μ λ ν¬κΈ°νλ©΄ μ€μΌμΌ μμκ³Ό κ³ κ°μ©μ±μ ν보ν μ μλ€. μ΄λ¬ν μ₯μ μ κ°μ§ λ°μ΄ν°λ² μ΄μ€λ₯Ό NoSQLμ΄λΌ λΆλ₯Έλ€.
- ACID λμ BASE(Basically Available)λ₯Ό μ§ν₯νλ€. κΈ°λ³Έμ μΌλ‘ κ°μ©μ±μ΄λ μλ―Έλ‘ λ°μ΄ν° μνκ° μ μ°ν κ²μ λ§νλ€.
- μΌκ΄μ±μ μΌλΆ ν¬μνλλΌλ λμ νμ₯μ±κ³Ό κ³ κ°μ©μ±μ μ€ννλ€.
- ν ν μ΄λΈ ꡬ쑰μ μ μ°ν μ μ₯ λ°©μμ μ΄μ©νμ¬ λ ν¨μ¨μ μΈ νλ‘κ·Έλλ°μ μΆκ΅¬νλ€.
5. MongoDB μμ
NoSQL λ°μ΄ν°λ² μ΄μ€ μ€ νλλ‘ RDBMS(κ΄κ³ν λ°μ΄ν°λ² μ΄μ€)μ μ§ν© κ΄κ³μ λΉμ·νμ§λ§ λͺ κ°μ§ μ°¨μ΄κ° μλ€.
- ν μ΄λΈ λμ 컬λ μ μ΄ μλ€.
- λ μ½λ λμ λνλ¨ΌνΈκ° μμΌλ©° λ°μ΄ν° νΈλ¦¬λ₯Ό μ μ₯νλ€.
- JSONμ μ κ·Ή νμ©νλ€.