ACID

  • ์›์ž์„ฑ(Atomic): ํŠธ๋ž™์žญ์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ตฌ์„ฑํ•˜๋Š” ์—ฐ์‚ฐ ์ „์ฒด๊ฐ€ ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์ทจ์†Œ๋˜์–ด์•ผ ํ•˜๋Š” ์„ฑ์งˆ(ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ ์ „์ฒด๊ฐ€ ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ(All or Nothing)๋˜์–ด์•ผ ํ•˜๋Š” ์„ฑ์งˆ)
  • ์ผ๊ด€์„ฑ(Consistency): ์‹œ์Šคํ…œ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ ์ • ์š”์†Œ๋Š” ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ „๊ณผ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์™„๋ฃŒ ํ›„์˜ ์ƒํƒœ๊ฐ€ ๊ฐ™์•„์•ผ ํ•˜๋Š” ์„ฑ์งˆ(๋„๋ฉ”์ธ์˜ ์œ ํšจ๋ฒ”์œ„, ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ๋“ฑ์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐฐํ•˜์ง€ ์•Š๋Š” ์ •์ƒ์ ์ธ ์ƒํƒœ. e.g. ์ž”์•ก์ด 0๋ณด๋‹ค ์ปค์•ผ ์†ก๊ธˆ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, ์ž”์•ก์ด ์—†๋Š”๋ฐ ์†ก๊ธˆ์ด ๊ฐ€๋Šฅํ•˜๋ฉด ์•ˆ ๋ผ~)
  • ๊ฒฉ๋ฆฌ์„ฑ(Isolation): ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ํŠธ๋ž™์žญ์…˜๋“ค์ด ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์„ฑ์งˆ. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠธ๋žœ์žญ์…˜ 1, 2, 3, 4๊ฐ€ ๊ฑฐ์˜ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋”๋ผ๋„ 1 -> 2 -> 3 -> 4์™€ ๊ฐ™์ด ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋˜๊ฒŒ ํ•˜๋ผ.
  • ์˜์†์„ฑ(Durability): ์„ฑ๊ณต์ด ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋Š” ์˜์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด์•ผ ํ•จ. commit์ด ๋œ ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜๊ตฌ์ ์œผ๋กœ ๋ณด์กด๋˜์–ด์•ผ ํ•œ๋‹ค. ์™„๋ฃŒ ํ›„์— ์ปดํ“จํ„ฐ๊ฐ€ ๊บผ์ ธ๋„ ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ ์ €์žฅ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ณด์กด๋œ๋‹ค.

Transaction Control Language

  • Rollback: ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์˜ค๋ฅ˜ ์ด์ „์˜ ํŠน์ • ์‹œ์ (savepoint, checkpoint) ์ƒํƒœ๋กœ ๋˜๋Œ๋ ค์ฃผ๋Š” ์ œ์–ด์–ด
  • Commit: ํŠธ๋žœ์žญ์…˜ ๋ฉ”๋ชจ๋ฆฌ์— ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ œ์–ด์–ด
  • Checkpoint: Rollback์„ ์œ„ํ•œ ์‹œ์ ์„ ์ง€์ •ํ•˜๋Š” ์ œ์–ด์–ด

๋ณ‘ํ–‰ ์ œ์–ด(Concurrency Control)

  • ๋ณ‘ํ–‰ ์ œ์–ด๋Š” ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋žจ ํ™˜๊ฒฝ์—์„œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์„ ๋ณ‘ํ–‰์ˆ˜ํ–‰ํ•  ๋•Œ, ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ํŠธ๋žœ์žญ์…˜๋“ค์ด DB์˜ ์ผ๊ด€์„ฑ์„
  • ๋ณ‘ํ–‰ ์ œ์–ด์˜ ๋ชฉ์ 
    • DB ๊ณต์œ ๋ฅผ ์ตœ๋Œ€ํ™”ํ•œ๋‹ค.
    • ์‹œ์Šคํ…œ ํ™œ์šฉ ์ตœ๋Œ€ํ™”.
    • DB์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€
    • ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์‘๋‹ต์‹œ๊ฐ„์„ ์ตœ์†Œํ™”.
  • ๋ณ‘ํ–‰ ์ˆ˜ํ–‰ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ 
    • ๊ฐฑ์‹  ์†์‹ค(Lost Update): ๋จผ์ € ์‹คํ–‰๋œ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜์ค‘์— ์ˆ˜ํ–‰๋œ ํŠธ๋žœ์žญ์…˜์ด ๋ฎ์–ด์“ฐ๋Š” ๊ฒฝ์šฐ
    • ํ˜„ํ™ฉ ํŒŒ์•…์˜ค๋ฅ˜(Dirty Read): ํŠธ๋žœ์žญ์…˜์˜ ์ค‘๊ฐ„ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฐธ์กฐํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜
    • ๋ชจ์ˆœ์„ฑ(Inconsistency): ๋‘ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋˜์–ด DB์˜ ์ผ๊ด€์„ฑ์ด ๊นจ์ง€๋Š” ๊ฒฝ์šฐ
    • ์—ฐ์‡„ ๋ณต๊ท€(Cascading Rollback): ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ ๊ณต์œ  ์‹œ ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋ฅผ ์ทจ์†Œํ•  ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌํ–ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ทจ์†Œํ•˜์ง€ ๋ชปํ•˜๋Š” ์˜ค๋ฅ˜
  • ๋ณ‘ํ–‰ ์ œ์–ด ๊ธฐ๋ฒ•
    • ๋กœํ‚น(Locking): ๊ฐ™์€ ์ž์›์„ ์•ก์„ธ์Šคํ•˜๋Š” ๋‹ค์ค‘ ํŠธ๋žœ์žญ์…˜ ํ™˜๊ฒฝ์—์„œ DB์˜ ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜์˜ ์ˆœ์ฐจ์  ์ง„ํ–‰์„ ๋ณด์žฅํ•˜๋Š” ์ง๋ ฌํ™” ๊ธฐ๋ฒ•.
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ, ๋ ˆ์ฝ”๋“œ ๋“ฑ์ด Locking ๋‹จ์œ„๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
      • Locking ๋‹จ์œ„(ํ•œ๊บผ๋ฒˆ์— Lockingํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์˜ ํฌ๊ธฐ)๊ฐ€ ์ž‘์•„์ง€๋ฉด DB ๊ณต์œ ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ๊ทธ ๋งŒํผ Locking ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€
    • ๋‚™๊ด€์  ๊ฒ€์ฆ(Optimistic Validation): ํŠธ๋žœ์žญ์…˜์ด ์–ด๋– ํ•œ ๊ฒ€์ฆ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ผ๋‹จ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ ์‹œ, ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ DB์— ๋ฐ˜์˜. ๋ณ‘ํ–‰์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํŠธ๋žœ์žญ์…˜์ด ํŒ๋… ์ „์šฉ(Read Only) ํŠธ๋žœ์žญ์…˜์ผ ๊ฒฝ์šฐ, ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ์ถฉ๋Œ๋ฅ ์ด ๋งค์šฐ ๋‚ฎ์•„์„œ ๋ณ‘ํ–‰์ œ์–ด ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์‹คํ–‰๋˜์–ด๋„ ์ด ์ค‘์˜ ๋งŽ์€ ํŠธ๋žœ์žญ์…˜์€ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์œ ์ง€ํ•œ๋‹ค๋Š” ์ ์„ ์ด์šฉํ•œ ๊ธฐ๋ฒ•์ด๋‹ค.
    • ํƒ€์ž„ ์Šคํƒฌํ”„ ์ˆœ์„œ(Time Stamp Ordering): ํŠธ๋žœ์žญ์…˜๊ณผ ํŠธ๋žœ์žญ์…˜์ด ์ฝ๊ฑฐ๋‚˜ ๊ฐฑ์‹ ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํƒ€์ž„ ์Šคํƒฌํ”„๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋ถ€์—ฌ๋œ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ํŠธ๋žœ์žญ์…˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ•
    • ๋‹ค์ค‘ ๋ฒ„์ „ ๊ธฐ๋ฒ•(Multi Version Cocurrency Control): ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์ค‘ ํƒ€์ž„ ์Šคํƒฌํ”„ ๊ธฐ๋ฒ•์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ํƒ€์ž„ ์Šคํƒฌํ”„ ๊ธฐ๋ฒ•์€ ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋ฐ์ดํ„ฐ๋“ค์ด ์ด์šฉ๋  ๋•Œ์˜ ์‹œ๊ฐ„์„ ์‹œ๊ฐ„ํ‘œ๋กœ ๊ด€๋ฆฌํ•˜์ง€๋งŒ, ๋‹ค์ค‘ ๋ฒ„์ „ ๊ธฐ๋ฒ•์€ ๊ฐฑ์‹ ๋  ๋•Œ๋งˆ๋‹ค ๋ฒ„์ „์„ ๋ถ€์—ฌํ•˜์—ฌ ๊ด€๋ฆฌ.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ