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