Database Serializable
μ μ
λ°μ΄ν° λ² μ΄μ€λ λμμ μ€ννλ λ°λ λΆκ΅¬νκ³ κ·Έ κ²°κ³Όκ°
Serial Schedule
μ λΆλΆ μ§ν©μ΄λΌλ©΄ μ¦ νλ²μ νλ²μ© μ€ννλ κ²κ³Ό κ°λ€λ©΄,Serializable
νλ€λΌκ³ λ§νλ€.μ΄λμμ μΈκΈλλκ°?
νΈλμμ μ isolation level (격리 μμ€)
νΈλμμ
νΈλμμ μ΄λ, λ°μ΄ν°λ² μ΄μ€μ μνλ₯Ό λ³νμν€λ νλμ λ Όλ¦¬μ κΈ°λ₯μ μννκΈ° μν μμ μ λ¨μ λλ νκΊΌλ²μ λͺ¨λ μνλμ΄μΌ ν μΌλ ¨μ μ°μ°λ€μ μλ―Έ
μ¦ μ΄λ ν 쿼리λ±μ κ²°κ³Όκ° μ μ©λκ±°λ(Commit) Rollback λ¨μ μλ―Έν¨.
All or Nothing?
νΈλμμ
μ μ±μ§
A C I D
Atomicity μμμ±
All or Nothing
νΈλμμ μ μ΄μ€κ°ν κ²μ΄ μμ, ν΄λΉ νΈλμμ μ μ μ©λκ±°λ νΉμ μ무κ²λ μν₯μ΄ μκ±°λ λμ€ νλλ€!
Consistency μΌκ΄μ±
λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ μλ―Ένλ€.
νΈλμμ μ΄ μ€νλκΈ° μ , μ€νλ νμ λ°μ΄ν°λ² μ΄μ€κ° κ°μ§κ³ μλ κ°μ’ μ μ½μ‘°κ±΄λ€μ μ¬μ ν μ μ§λκ³ μμ΄μΌν¨.
Isolation κ³ λ¦½μ±
μΌλ°μ μΌλ‘ DBλ μ¬μ©μ μ¬λΏμ΄ λμμ μ κ·Όνλ κ²μ΄ κ°λ₯νλ€
μ΄λ¬ν 쿼리λ€μ΄ λμμ μ€νλμ§λ§, κ°κ° νΈλμμ μ λ³Ό λλ κ³ λ¦½λμ΄μ μ€νλλ κ² μ²λΌ 보μ¬μΌνλ€.
Durability μμμ±, μ§μμ±
νΈλμμ μ΄
commit
λκ³ λλ©΄, λ°λμ DBμ μꡬμ μΌλ‘ λ°μλμ΄μΌ ν¨.
InnoDB
λ μ½λ κΈ°λ° μ μ₯ ꡬ쑰λ₯Ό μλ―Έ
MySQLλ λ΄λΆμ μΌλ‘
InnoDB
λ₯Ό μ¬μ©
CAP μ΄λ‘
λΆμ° μμ€ν μ μ§ν±νλ μ΄λ‘
λΆμ° μμ€ν ? μλ²κ° μ¬λ¬λ μκ³ , μ΄λ₯Ό ν΅ν΄ μλΉμ€λ₯Ό μ 곡ν΄μ€.
Consistency : μΌκ΄μ±
μ¬μ©μκ° μμ²μ νλ©΄, μμ²μ μ²λ¦¬ν΄μ€ μλ²λ μ΄λ€ κ²μΌμ§λ λͺ¨λ₯΄μ§λ§, κ·ΈλΌμλ λΆκ΅¬νκ³ νμ λκ°μ κ²°κ³Όλ₯Ό 보μ₯ν΄μ€μΌν¨.
Availability : κ°μ©μ±
μλ²λ νμ λμνκ³ μλ μνμ¬μΌ ν¨.
μ΄λ μ¬μ©μμκ² μλ²κ° μ₯μ μνμ μλ€λ κ²μ μλ €μ£Όλ κ²λ ν¬ν¨ν¨.
Partion Tolerence :
νλμ μλ²κ° λ§κ°μ Έλ, ν΄λΉ λ°μ΄ν°λ μ¬μ ν λ€λ₯Έκ³³μ μ‘΄μ¬ν΄μΌν¨.
CAPλ₯Ό λͺ¨λ λ§μ‘±νλ μλ²λ μ‘΄μ¬νμ§ μλλ€!
NoSQL μ A,Pλ₯Ό λ§μ‘±μν€μ§λ§, Cλ₯Ό ν¬κΈ°νμ.
κ·Έλλ
Eventual Consistency
λ₯Ό 보μ₯ν΄μ€λ€. μ¦ μΌκ΄μ±μ 보μ₯ν΄μ£ΌκΈ΄ νλλ° μΈμ κ·Έλ¬ν λ΄μ©μ΄ λ°μλ μ§λ λͺ¨λ₯Έλ€.μλ₯Ό λ€λ©΄, A κ°
DropBox
μ μ΄λ€ νμΌμ μ λ‘λνλ€κ³ νκ³ Bκ° μ΄λ₯Ό λ€μ΄ λ°μ μμ μ΄λΌκ³ νμA μ»΄ν¨ν°μμ μ λ‘λκ° λλλ, ν΄λΉ 곡μ ν΄λμμ B μ»΄ν¨ν°λ‘ λ°λ‘ λ€μ΄ λ°μ μ μλ€.
νμ§λ§ μ΄λμ λ μκ°μ΄ μ§λλ©΄ λ€μ΄λ°μ μ μμμ
Eventual Consistency
λ₯Ό λ§μ‘±νλ€κ³ μ΄μΌκΈ°ν μ μμ.
μ°Έκ³
https://ryan-han.com/post/java/serialization/
https://www.letmecompile.com/database-transaction-isolation-level/
https://coding-factory.tistory.com/226
Last updated