λ°±μλμ ν΅μ¬ μμ, λ°μ΄ν°λ² μ΄μ€
μ΄λ² ν¬μ€νΈμμλ λ°μ΄ν°λ² μ΄μ€μ λν΄ λ€λ€λ³΄λ €κ³ νλ€. μ¬μ€, λ°μ΄ν°λ² μ΄μ€λ λΉκ°λ°μλ€λ λλΆλΆ μ΄ν΄νκ³ λ§μ΄ μ¬μ©νκΈ° λλ¬Έμ κ°λ
μ체λ μ΅μνμ§λ§ μ¬κΈ°μλ λ¨μν μ μ₯μλ‘μμ λ°μ΄ν°λ² μ΄μ€ 보λ€λ λ°±μλλ₯Ό ꡬμ±νλ μμλ‘μ λ°μ΄ν°λ² μ΄μ€κ° μ λ°λμ νμνκ³ ν΅μ¬μ μΈμ§λ₯Ό μμ보μ.
λ°±μλμ λ°μ΄ν°λ² μ΄μ€μ κ΄κ³
λ°±μλ μ΄ν리μΌμ΄μ
μ ν¬κ² μΈ κ°μ§ μΌμ νλ€.
- λ°μ΄ν°λ₯Ό λ°μμ
- κ°κ³΅νκ³
- λ€μ μ μ₯νκ±°λ μ λ¬νλ€.
μΉ μλΉμ€λ₯Ό λ§λ λ€λ 건 κ²°κ΅ λ°μ΄ν°λ₯Ό λ€λ£¨λ μΌλ‘, μ΄μ ν¬μ€νΈμμ μ€λͺ
ν κ°λ
λ€μ λͺ¨λ λ°μ΄ν°μ μ°κ΄μ΄ μμλ€. νλ‘ν μ½μ μ μΈ κ°μ§ μ€ λ°μ΄ν°λ₯Ό μ΄λ»κ² 보λ΄κ³ λ°μ κ²μΈκ°μ λν κ·μΉμ μ 립ν κ²μ΄κ³ , μΉμλ²λ WASλ λ°μ΄ν°μ μ λ¬κ³Ό κ°κ³΅μ λ΄λΉνλ νλ‘κ·Έλ¨λ€μ΄μλ€.
κ·Έλ¦¬κ³ μ μΈ κ°μ§ μ€ λ§μ§λ§μΌλ‘ λ¨μ μΌμ΄ λ°μ΄ν°λ₯Ό μ 보κ΄νλ κ²μ΄λ€.
μ¬κΈ°μ μ€μν ν¬μΈνΈλ λ°μ΄ν°λ₯Ό βμβ 보κ΄ν΄μΌ νλ€λ κ²μ΄λ€. λ¨μν μ μ₯μμ μν λ§ νμνλ€λ©΄ κ΅³μ΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νμ§ μκ³ νμΌ μμ€ν
μ μ¬μ©νλ€κ±°λ μ€νλ λμνΈμ μ μ₯μ ν΄λ λ κ²μ΄λ€. κ·Έλ¬λ λ°±μλμμ λ°μ΄ν°λ₯Ό λ€λ£° λλ λ¨μν CRUD(Create, Read, Update, Delete)λ§ μλλ€κ³ λμ΄ μλλ€. μμ²μ λ°λΌ μ νν λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² λ°ννλ κ²μ΄ μ€μνκΈ° λλ¬Έμ λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ΄ μ¬μ©λλ κ²μ΄λ©° DBλ₯Ό μ΄λ»κ² νμ©νλμ§κ° κ³§ μμ€ν
μ μμ μ±κ³Ό μ§κ²°λλ€.
μ¦, λ°μ΄ν°λ² μ΄μ€λ λ¨μ μ μ₯μλ₯Ό λμ΄ μμ€ν
μ μ λ’°μ±μ λ λ°μΉλ ν΅μ¬ μΈνλΌμ κ°κΉλ€.
μμ μ μΈ DB μ΄μμ μν μμ
λ¬΄κ²°μ± (Integrity)
무결μ±μ λ°μ΄ν°μ κ²°ν¨μ΄ μλλ‘ μ νμ±, μΌκ΄μ±, μμ μ±, μ ν¨μ±μ μ μ§νλ κ²μ λ§νλ€.
- μ νμ±(Accuracy):Β λ°μ΄ν°κ° νμ€ μΈκ³μ μ€μ κ°κ³Ό μΌμΉνκ³ μ€λ³΅μ΄λ λλ½μ΄ μλ κ²
- μΌκ΄μ±(Consistency):Β λ°μ΄ν°κ° μ΄λ€ μ°μ°μ μννλλΌλ κ·Έ κ²°κ³Όκ° λͺ¨μ μμ΄ μΌκ΄λ μνλ₯Ό μ μ§νλ κ²
- μμ μ±(Completeness):Β λ°μ΄ν°μ λλ½μ΄ μμ΄ μλλ λͺ©μ μ λ¬μ±νκΈ°μ μΆ©λΆν μνλ₯Ό κ°λ κ²
- μ ν¨μ±(Validity):Β λ°μ΄ν°κ° νΉμ κ·μΉμ΄λ μ μ½ μ‘°κ±΄μ λ°λΌ μ¬λ°λ₯Έ νμκ³Ό λ²μλ₯Ό κ°μ§λ κ²
RDBμμ μ»¬λΌ νμ
κ³Ό μμ±μ μ§μ νκ³ primary key, foreign keyλ₯Ό μ¬μ©νλ κ², μ κ·νλ₯Ό νκ±°λ λ°μ΄ν° μ‘°μμ μν μΌλ ¨μ λμμ νΈλμμ
(transaction)μ΄λΌλ λ¨μλ‘ λ¬Άλ κ² λ±μ΄ λͺ¨λ 무결μ±μ μ§ν€κΈ° μν λ°©λ²λ€μ΄λ€.
λμμ± (Concurrency)
μΉ μλΉμ€μμ λ°μ΄ν°μ λν μ κ·Όμ μ¬λ¬ μ¬μ©μμ μν΄ λμμ μΌμ΄λ μ μλ€. μλ₯Ό λ€μ΄, μ¬κ³ κ° νλ λ¨μ μνμ ν μ¬μ©μκ° μ£Όλ¬Ένλ λμ λ€λ₯Έ μ¬μ©μλ κ°μ μνμ μ£Όλ¬Έν μ μκ³ μ΄ λ DBλ λκ° λ¨Όμ μ£Όλ¬Έμ νλκ°λ₯Ό νλ¨ν΄μΌ νλ€.
μ΄λ λ― λμμ μΌμ΄λλ λ°μ΄ν°μ μ‘°ν, μμ μ μμ νκ² λ€λ£° μ μλλ‘ λμμ± μ μ΄(concurrency control)κ° νμνλ€. λμμ± μ μ΄λ₯Ό μν΄μλ μλμ κ°μ λ°©λ²λ€μ΄ μ¬μ©λλ€.
- λ½ (Lock) β λ°μ΄ν° μ κ·Όμ λ§μ λ€λ₯Έ νΈλμμ μ μν μμ μ λ°©μ§νλ€.
- 격리 μμ€ (Isolation Level) β λμμ μΌμ΄λλ νΈλμμ λ€μ μ΄λ μμ€κΉμ§ 격리μν¬ κ²μΈκ°λ₯Ό κ²°μ νλ€.
νμ₯μ± (Scalability)
μλΉμ€κ° 컀μ§λ©΄μ νΈλν½μ΄ μ¦κ°νκ³ λ°μ΄ν°κ° λμ΄λλλΌλ DBλ₯Ό μμ μ μΌλ‘ μ΄μν μ μμ΄μΌ νλ€.
- μμ§ νμ₯ (Vertical Scaling, Scale-up) β λ°μ΄ν°λ² μ΄μ€ μλ² μ€νμ λμ΄λ κ²μΌλ‘ κ°λ¨νμ§λ§ νκ³κ° μ‘΄μ¬νλ€.
- μν νμ₯ (Horizontal Scaling, Scale-out) β λ°μ΄ν°λ² μ΄μ€ μλ²λ₯Ό μ¬λ¬λλ‘ λΆμ°νλ€. λ¨, μ¬λ¬λμ DBμ λ°μ΄ν°λ₯Ό μ΄λ»κ² μ μ₯ν κ²μΈμ§ μ λ΅μ΄ νμνλ€.
- Master-Replica: μ½κΈ°μ© DB, μ°κΈ°μ© DBλ₯Ό λΆλ¦¬ν΄μ λΆνλ₯Ό λΆμ°νλ€.
- Sharding: λ°μ΄ν°λ₯Ό μ¬λ¬λμ DBμ κ°κ° λΆν νλ€.
μ±λ₯ (Performance)
μ²λ¦¬ μλλ₯Ό λ¨μν λΉ λ₯΄κ² νλ κ²μ΄ μλλΌ λ€μν μμ
μ νλλΌλ μΌμ ν μ±λ₯μ μ μ§ν μ μλλ‘ νλ κ²μ΄ ν΅μ¬μ΄λ€.
- μΈλ±μ±(Indexing): μμΈ κ°μ μλ£κ΅¬μ‘°λ₯Ό λ§λ€μ΄ λ°μ΄ν° κ²μ μλλ₯Ό λμ΄λ κ²
- μΊμ±(Caching): μμ£Ό μ‘°νλλ λ°μ΄ν°λ₯Ό μΊμμ μ μ₯νμ¬ DB λΆνλ₯Ό μ€μ΄κ³ μ‘°ν μλλ₯Ό λμ΄λ κ²
- 쿼리 μ΅μ ν(Query Optimization): 쿼리 ꡬ쑰λ₯Ό κ°μ νμ¬ μ²λ¦¬ μλλ₯Ό λμ΄κ³ 리μμ€ μ¬μ©μ μ€μ΄λ κ²
μ₯μ λλΉ
λμ€ν¬ κ³ μ₯, λ€νΈμν¬ λΆλ¦¬, μλͺ»λ λ§μ΄κ·Έλ μ΄μ
λ± μΈμ λ μ₯μ κ° λ°μν μ μλ κ²μ κ³ λ €νμ¬ λ°μ΄ν°μ μμ€μ λλΉνλ€.
- λ°±μ (Backup): μ£ΌκΈ°μ μΌλ‘ dump λλ snapshot μ μ₯
- 볡μ (Replication): MasterβReplica κ΅¬μ‘°λ‘ μ₯μ μ μλ μ ν
- λͺ¨λν°λ§(Monitoring): CPU, 쿼리 μκ°, slow query log μΆμ
- 볡ꡬ μ λ΅(Recovery Strategy): μλ 볡ꡬ μ μ°¨ λ§λ ¨, RPO(볡ꡬ μ§μ λͺ©ν), RTO(볡ꡬ μκ° λͺ©ν) μ μ
Β