Post

πŸ’™ λ°μ΄ν„°λ² μ΄μŠ€ - νŠΈλžœμž­μ…˜μ΄λž€ 무엇이고 μ›μžμ„±, 일관성, 고립성, μ§€μ†μ„±μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

πŸ’™ λ°μ΄ν„°λ² μ΄μŠ€ - νŠΈλžœμž­μ…˜μ΄λž€ 무엇이고 μ›μžμ„±, 일관성, 고립성, μ§€μ†μ„±μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

νŠΈλžœμž­μ…˜

νŠΈλžœμž­μ…˜μ΄λž€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€κ²½ μ‹œν‚€κΈ° μœ„ν•΄ μˆ˜ν–‰ν•˜λŠ” μž‘μ—… λ‹¨μœ„μ΄λ‹€.

λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€κ²½ μ‹œν‚¨λ‹€λŠ” 것은 SELECT, INSERT, UPDATE, DELETE 와 같은 쿼리λ₯Ό λ‚ λ € 연산을 μˆ˜ν–‰ν•˜λŠ” 것이닀.

νŠΈλžœμž­μ…˜μ„ ν•œκ΅­μ–΄λ‘œ λ²ˆμ—­ν•˜λ©΄ β€œκ±°λž˜β€

즉, λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ νŠΈλžœμž­μ…˜μ€ ν•˜λ‚˜μ˜ 거래λ₯Ό μ•ˆμ „ν•˜κ²Œ μ²˜λ¦¬ν•˜λ„λ‘ 보μž₯ν•΄μ£ΌλŠ” 것이라고 ν•  수 μžˆλ‹€.

νŠΈλžœμž­μ…˜μ˜ 논리적 μž‘μ—…μ—μ„œλŠ” λͺ¨λ“  μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λ˜κ±°λ‚˜ ν˜Ήμ€ 아무것도 μˆ˜ν–‰λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.

νŠΈλžœμž­μ…˜μ€ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 일관성을 μœ μ§€ν•˜κ³  λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•˜λŠ”λ° μ€‘μš”ν•œ 역할을 ν•œλ‹€.

μ˜ˆμ‹œ

πŸ“Œ νŠΈλžœμž­μ…˜μ΄ μ—†λ‹€λ©΄

λ‘μœ μ™€ κΈ€λŒ€κ°€ 각각 κ³„μ’Œμ— 5,000 원씩 μžˆλ‹€κ³  κ°€μ •ν•  λ•Œ λ‘μœ κ°€ κΈ€λŒ€μ—κ²Œ 빌린 λˆμ„ 갚기 μœ„ν•΄ 2,000원을 보낸닀.

1

ν•˜μ§€λ§Œ 였λ₯˜λ‘œ 인해 λ‘μœ λŠ” 2,000원을 λ³΄λƒˆμ§€λ§Œ κΈ€λŒ€λŠ” λ°›μ§€ λͺ»ν–ˆλ‹€.

1

ν•΄λ‹Ή 였λ₯˜λŠ” μ‹¬κ°ν•œ λ¬Έμ œμ΄λ‹€.

νŠΈλžœμž­μ…˜ κΈ°λŠ₯

λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ œκ³΅ν•˜λŠ” νŠΈλžœμž­μ…˜ κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ commitκ³Ό rollback으둜 정상적이 μž‘μ—…μ΄ κ°€λŠ₯ν•˜κ²Œ ν•  수 μžˆλ‹€.

λ‘μœ μ™€ κΈ€λŒ€μ˜ μƒν™©μ—μ„œ β€œλ‘μœ κ°€ λˆμ„ μ΄μ²΄ν•˜λŠ” 상황 - 1”은 μ„±κ³΅ν–ˆμ§€λ§Œ β€œκΈ€λŒ€κ°€ λˆμ„ μž…κΈˆ λ°›λŠ” 상황-2”은 μ‹€νŒ¨ν•˜λŠ” κ²½μš°μ™€ 같이 쀑간에 λ¬Έμ œκ°€ λ°œμƒν•  λ•Œ 거래 μ „μ˜ μƒνƒœλ‘œ λŒμ•„κ°ˆ 수 μžˆλ‹€. 이것을 μž‘μ—… 쀑 ν•˜λ‚˜λΌλ„ μ‹€νŒ¨ν•΄μ„œ 거래 μ΄μ „μœΌλ‘œ λ˜λŒλ¦¬λŠ” κ²ƒμœΌλ‘œ λ‘€λ°±(rollback)이라고 ν•œλ‹€. 그리고 λͺ¨λ“  μž‘μ—…μ΄ μ •μƒμ μœΌλ‘œ μ„±κ³΅ν•˜λŠ” 경우 λ°μ΄ν„°λ² μ΄μŠ€μ— 정상 λ°˜μ˜ν•˜λŠ” 것을 컀밋(commit) 이라고 ν•œλ‹€.

νŠΈλžœμž­μ…˜ νŠΉμ§•

νŠΈλžœμž­μ…˜μ€ ACID 속성을 λ”°λ₯Έλ‹€. ACIDλŠ” Atomicity(μ›μžμ„±), Consistency(일관성), Isolation(고립성), Durability(지속성)의 μ•½μžλ‘œ νŠΈλžœμž­μ…˜μ΄ μ•ˆμ „ν•˜κ²Œ μˆ˜ν–‰λ˜κ³  λ°μ΄ν„°μ˜ 무결성이 μœ μ§€λ˜λ„λ‘ ν•œλ‹€.

  • Atomicity(μ›μžμ„±) : νŠΈλžœμž­μ…˜μ€ μ›μžμ μΈ μž‘μ—… λ‹¨μœ„λ‘œ κ°„μ£Όλ˜μ–΄ λͺ¨λ“  μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜κ±°λ‚˜ μ „ν˜€ μˆ˜ν–‰λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€. 즉, 쀑간에 μ–΄λ– ν•œ μž‘μ—…μ΄λΌλ„ μ‹€νŒ¨ν•œλ‹€λ©΄ νŠΈλžœμž­μ…˜ 전체가 λ‘€λ°±(rollback) λ˜μ–΄μ•Ό ν•œλ‹€.

  • Consistency(일관성) : νŠΈλžœμž­μ…˜μ΄ μˆ˜ν–‰λœ 후에 λ°μ΄ν„°λ² μ΄μŠ€λŠ” 미리 μ •μ˜λœ κ·œμΉ™μ— 따라 μΌκ΄€λœ μƒνƒœμ—¬μ•Ό ν•œλ‹€.

  • Isolation(고립성) : μ—¬λŸ¬ νŠΈλžœμž­μ…˜μ΄ λ™μ‹œμ— μˆ˜ν–‰λ˜λ”λΌλ„ 각 νŠΈλžœμž­μ…˜μ€ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ˜ μž‘μ—…μ— 영ν–₯을 λ°›μ§€ μ•Šμ•„μ•Ό ν•œλ‹€. 각각의 νŠΈλžœμž­μ…˜μ€ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•œλ‹€.

  • Durability(지속성) : νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λ©΄ κ·Έ κ²°κ³ΌλŠ” 영ꡬ적으둜 λ°˜μ˜λ˜μ–΄μ•Ό ν•œλ‹€.

즉, λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ†μ‹€λ˜λ”λΌλ„ νŠΈλžœμž­μ…˜μ˜ κ²°κ³ΌλŠ” λ³΄μ‘΄λ˜μ–΄μ•Ό ν•œλ‹€.


μ°Έκ³  πŸ™‡πŸ»β€β™€οΈ

μ°Έκ³ ν•œ λΈ”λ‘œκ·Έ 1

μ°Έκ³ ν•œ λΈ”λ‘œκ·Έ 2

This post is licensed under CC BY 4.0 by the author.