๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ „ ์ž…๋ฌธ - 14. ํŠธ๋žœ์žญ์…˜์˜ ๋ณธ์งˆ

1. ํŠธ๋žœ์žญ์…˜

ํŠธ๋žœ์žญ์…˜์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋ฐฉ๋ฒ•์ด๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์ด๋ก ์€ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ๊ณผ๋Š” ๋‹ค๋ฅธ ์ด๋ก ์ด๋‹ค. ํŠธ๋žœ์žญ์…˜๊ณผ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์—์„œ ์ •๊ทœํ™” ์ด๋ก ์€ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์ด์ง€๋งŒ, ์ฐฉ์•ˆ์ ์ด ๋‹ค๋ฅด๋‹ค

์‹ค์ œ ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์—์„œ๋Š” ์–‘์ชฝ ๋ชจ๋‘ ํ•„์š”ํ•˜๋ฉฐ ์ƒํ˜ธ ๋ณด์™„์ ์ธ ๊ด€๊ณ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠธ๋žœ์žญ์…˜๊ณผ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ ๋‘ ๊ฐ€์ง€๋ฅผ ๋™์‹œ์— ๊ตฌํ˜„ํ•ด์•ผ ๋น„๋กœ์†Œ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์˜ ๊ธฐ๋Šฅ

ํŠธ๋žœ์žญ์…˜์ด ์š”๊ตฌ๋˜๋Š” ๋ฐฐ๊ฒฝ์—๋Š” DB ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋™์‹œ์— ์—‘์„ธ์Šค๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์ด๋‚˜ DB ์„œ๋ฒ„ ๋˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด ๊ฐฑ์‹ ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„์ค‘์— ์ค‘๋‹จ๋˜๋Š” ์‚ฌํƒœ์—์„œ ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํ•˜๋Š” ์š”๊ตฌ๊ฐ€ ์žˆ๋‹ค.

๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์˜ˆ์‹œ๋Š” ์€ํ–‰์˜ ๊ณ„์ขŒ๋ฅผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜ˆ๋‹ค.

๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ์€ํ–‰

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2 ๊ณ„์ขŒ์ž”์•ก
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000 1,000,000
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000
(์ž…๊ธˆ) +300,000
์ž”์•ก ๊ธฐ๋ก: 1,300,000 (์ปค๋ฐ‹) 1,300,000
(์ธ์ถœ) -200,000
์ž”์•ก ๊ธฐ๋ก: 800,000 (์ปค๋ฐ‹) 800,000

๋™์‹œ ์‹คํ–‰ ์ œ์–ด

๋‘ ๊ฐœ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋ฉฐ ํŠธ๋žœ์žญ์…˜1์ด ์ž”์•ก์„ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ž”์•ก์„ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋€ ์ž”์•ก์ด ์—†์–ด์ง„๋‹ค. ์‹ค ์ž”์•ก์€ 1,100,000์› ์ด์–ด์•ผ ํ•˜์ง€๋งŒ 800,000์›๋งŒ ๋‚จ๋Š”๋‹ค.

๋™์‹œ์— ์—‘์„ธ์Šค๋ฅผ ํ•จ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์„ ๋ง‰๋Š” ๋™์‹œ ์‹คํ–‰ ์ œํ•œ์ด ํŠธ๋žœ์žญ์…˜์˜ ์ฒซ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์ด๋‹ค.

ํฌ๋ž˜์‹œ ๋ณต๊ตฌ

์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์‚ฌํƒœ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ• ๊นŒ?

๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ž”์•ก์„ ๊ธฐ๋กํ•˜๊ธฐ ์ „์— ์‹œ์Šคํ…œ์ด ํฌ๋ž˜์‹œ ๋˜๋‚˜๋ฉด ์ด๋ฒˆ์—๋Š” ๋ˆ์„ ์ฐพ์•˜์œผ๋ฏ€๋กœ ๊ณ„์ขŒ์˜ ์ž”์•ก์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

๋˜ํ•œ, ํŠธ๋žœ์žญ์…˜์ด ์—†๋‹ค๋ฉด ์‹œ์Šคํ…œ์ด ํฌ๋ž˜์‹œ๋˜๊ธฐ ์ง์ „์— ์–ด๋””๊นŒ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋””๊นŒ์ง€ ์‹คํ–‰๋๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ณต๊ตฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉด ์•ˆ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋‹ค๋ฉด ๋น„์ •์ƒ์ ์œผ๋กœ ์ค‘๋‹จ๋œ ์ฒ˜๋ฆฌ๋Š” ๋กค๋ฐฑ๋˜๋ฉฐ ์‹œ์Šคํ…œ์ด๋‚˜ DB ์„œ๋ฒ„๊ฐ€ ํฌ๋ž˜์‹œ๋ผ๋„ ์žฌ๊ธฐ๋™ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ•„์š”ํ•œ ๋ณต๊ตฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์€ ๋ณธ์งˆ์ ์œผ๋กœ ๋™์‹œ ์‹คํ–‰ ์ œ์–ด์™€ ํฌ๋ž˜์‹œ ๋ณต๊ตฌ ๋‘ ๊ฐ€์ง€๋‹ค.

ํŠธ๋žœ์žญ์…˜์˜ ํ‚ค: ์Šค์ผ€์ค„

์ฒ˜๋ฆฌ์˜ ๋ณ‘๋ ฌํ™”๋Š” ํ•„์ˆ˜๋ถˆ๊ฐ€๊ฒฐ

๋ถ€์ •ํ•ฉ์„ ์ผ์œผํ‚ค์ง€ ์•Š๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ํ•ด๊ฒฐ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋™์‹œ ์‹คํ–‰ํ•˜๋Š” ๋ฐœ์ƒํ•˜๋Š” ๋ถ€์ •ํ•ฉ์€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ๋ณ‘๋ ฌํ™” ํ•˜์ง€ ์•Š๋Š” ๊ตฌ์กฐ๋Š” ์ฒ˜๋ฆฌ ํšจ์œจ์ด ๋‚ฎ์•„์ ธ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ํ˜„์‹ค์ ์ธ ๋Œ€์ฑ…์ด๋ผ ํ•  ์ˆ˜ ์—†๋‹ค.

์‹ค์ œ DB์—์„œ๋Š” ์ˆ˜๋ฐฑ, ๋•Œ์— ๋”ฐ๋ผ์„œ๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ๋„ ๋“œ๋ฌธ ์ผ์ด ์•„๋‹ˆ๋‹ค.

๋™์‹œ ์‹คํ–‰ ์ œํ•œ์˜ ํ‚ค: ์Šค์ผ€์ค„

ํŠธ๋žœ์žญ์…˜์€ ์ผ๋ จ์˜ ์ž‘์—…์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์˜ ์กฐ์ž‘์œผ๋กœ ๋ถ„ํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

โ†’ ์ฒ˜๋ฆฌ์˜ ๋‹จ์œ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ฝ๊ธฐ๋‚˜ ์“ฐ๊ธฐ์™€ ๊ฐ™์€ ์กฐ์ž‘์ด๋‹ค.

ํŠธ๋žœ์žญ์…˜์„ ๋ณ‘๋ ฌ๋กœ ๋™์‹œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์˜ ์กฐ์ž‘์„ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒ˜๋ฆฌ ๋‚ด์šฉ์— ๋”ฐ๋ผ์„œ๋Š” ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์ด ์žˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์‚ฌ์ด์—์„œ ์„œ๋กœ์˜ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ์Šค์ผ€์ค„๋งํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด ํŠธ๋žœ์žญ์…˜์€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค

๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ์˜ ์ •์˜

ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ ์ง€๋˜๋Š” ์ƒํƒœ๋ž€ ๊ฐœ๋ณ„ ํŠธ๋žœ์žญ์…˜์„ ํ•œ ๊ฐœ์”ฉ ์ฐจ๋ก€๋กœ ์‹คํ–‰ํ•  ๋•Œ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

ํ•œ ๊ฐœ์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ์‹คํ–‰ํ•˜๋Š” ์Šค์ผ€์ค„์„ ์ง๋ ฌํ™”๋œ ์Šค์ผ€์ค„์ด๋ผ ํ•œ๋‹ค. ๊ฐœ๋ณ„ ํŠธ๋žœ์žญ์…˜์„ ์ง๋ ฌ๋กœ ์‹คํ–‰ํ•  ๋•Œ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ์Šค์ผ€์ค„์ด๋ผ๋ฉด ์ฒ˜๋ฆฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•ด๋„ ์˜ํ–ฅ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•œ ํ›„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ ์ง€๋๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ†’ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ์Šค์ผ€์ค„์€ ์ง๋ ฌํ™”๋œ ์Šค์ผ€์ค„๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ์Šค์ผ€์ค„์„ ๋งํ•œ๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ์˜ ์„ฑ๋Šฅ

์Šค์ผ€์ค„๋Ÿฌ์˜ ์„ฑ๋Šฅ์—์„œ ์ค‘์š”ํ•œ ์ ์€ ๋‘๊ฐ€์ง€๋‹ค.

  1. ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํŠธ๋žœ์žญ์…˜์„ ๋ณ‘๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋‹ค. ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์ด ๋งŽ์œผ๋ฉด ๋งŽ์„์ˆ˜๋ก ๊ทธ ์Šค์ผ€์ค„๋Ÿฌ์˜ ์„ฑ๋Šฅ์€ ์ข‹๋‹ค.
  2. ์ตœ์ ์˜ ์Šค์ผ€์ค„์„ ์ฐพ๋Š”๋ฐ ํ•„์š”ํ•œ ๋น„์šฉ์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ์žˆ์„ ๋•Œ ๊ทธ ์ค‘์—์„œ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐํ•ฉ ์ค‘ ์ตœ์ ์˜ ์กฐํ•ฉ์„ ์ฐพ๊ฒŒ ๋˜๋ฉด ์ด๋Š” ์กฐํ•ฉ์˜ ์ตœ์ ํ™”์˜ ๋ฌธ์ œ๊ฐ€ ๋˜๋ฏ€๋กœ ๊ณ„์‚ฐ์— ๋“œ๋Š” ๋น„์šฉ์ด ๋ง‰๋Œ€ํ•˜๋‹ค.

RDB์—์„œ๋Š” ์ž ๊ธˆ ์Šค์ผ€์ค„๋Ÿฌ๋ผ๋Š” ๋กœ์ง์„ ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉํ•œ๋‹ค. ์ž ๊ธˆ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ตฌํ˜„์ด ๋น„๊ต์  ์‰ฌ์šด ํŽธ์ด๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ถฉ๋ถ„ํ•œ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์กŒ๋‹ค.

2. ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง•

ACID๋ž€?

A(Atomicity: ์›์ž์„ฑ)

ํŠธ๋žœ์žญ์…˜์— ํฌํ•จ๋œ ๋ชจ๋“  ์ž‘์—…์ด ์„ฑ๊ณต(Commit) ๋˜๋Š” ์‹คํŒจ(Abort)ํ•˜๋Š” ์„ฑ์งˆ์„ ์›์ž์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์‹คํŒจํ•œ ๊ฒฝ์šฐ๋ฅผ SQL์—์„œ๋Š” ๋กค๋ฐฑ(ROLLBACK)์ด๋ผ๊ณ  ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜ ์ด๋ก ์—์„  Abort๋ผ๊ณ  ํ•œ๋‹ค.

์›์ž์„ฑ์€ ๋‹ค๋ฅธ ๋ง๋กœ ํŠธ๋žœ์žญ์…˜์ด ์–ด์ค‘๊ฐ„ํ•œ ์ƒํƒœ๊ฐ€ ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ์„ฑ์งˆ์ด๋‹ค.

โ†’ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์€ ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•œ ํ›„์— ๋‘ ๊ฐœ์˜ ์ƒํƒœ๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค.

์ด๋กœ ์ธํ•ด ์—๋Ÿฌ์ฒ˜๋ฆฌ๊ฐ€ ๋งค์šฐ ๋‹จ์ˆœํ•ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. Abort ๋˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜์Œ์œผ๋กœ ๋‹ค์‹œ ํ•˜๋ฉด ๋œ๋‹ค.

์ด์ฒ˜๋Ÿผ ํŽธ๋ฆฌํ•œ ์›์ž์„ฑ์ด์ง€๋งŒ ํŠธ๋žœ์žญ์…˜์ด Abort ๋  ๊ฐ€๋Šฅ์„ฑ์ด 0์ด ๋  ์ˆ˜๋Š” ์—†๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ์‹คํŒจํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๋ณด์žฅ๋˜๋Š” ๊ฒƒ์€ ์‹คํ–‰ ํ›„์˜ ์ƒํƒœ๊ฐ€ ์„ฑ๊ณต์ธ์ง€ ์‹คํŒจ์ธ์ง€ ๋‘ ๊ฐ€์ง€๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ๋ฟ์ด๋‹ค.

Abort ํ•  ๊ฐ€๋Šฅ์„ฑ์ด 0์ด ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์€ Abort๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ์˜ ์˜ค๋ฅ˜์ฒ˜๋ฆฌ๋งŒ์€ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•  ๊ฒƒ์€ ํŠธ๋žœ์žญ์…˜์˜ ๋ฆฌํŠธ๋ผ์ด(์žฌ์‹คํ–‰)๋‹ค.

ํŠธ๋žœ์žญ์…˜์€ ๋ฐ˜๋“œ์‹œ ์„ฑ๊ณตํ•œ๋‹ค๊ณ  ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹คํŒจํ•˜๋ฉด ์ทจ์†Œ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์— ์ง€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

์›์ž์„ฑ์€ ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

Abort ํ•  ๊ฒƒ์„ ์˜ˆ์ƒํ•˜์ง€ ์•Š์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ, ์ฆ‰ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ(๋ฆฌํŠธ๋ผ์ด)๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์€ ๊ทผ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์˜ ์‚ฌ์šฉ๋ฒ• ์ž์ฒด๊ฐ€ ํ‹€๋ ธ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

C(Consistensy: ์ผ๊ด€์„ฑ)

์ผ๊ด€์„ฑ์ด๋ž€ ํŠธ๋žœ์žญ์…˜์„ ์‹ค์‹œํ•œ ์ „ํ›„์—๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ์†์ƒ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์„ฑ์งˆ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด RDB์—์„œ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ „์˜ DB์˜ ์ƒํƒœ๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ๋Š” ๊ฒƒ(๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์ด ์—†์Œ)์ด๋ฉฐ,

ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ํ›„์— ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์€ ์žˆ์ง€๋งŒ, ์ผ๊ด€์„ฑ์ด ์œ ์ง€๋˜๊ณ  ์žˆ๋‹ค. โ†’ ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๋ฉด DB๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ผ๊ด€์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ๋กœ ์ „ํ™˜ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์–ด๋–ค ์ƒํƒœ๊ฐ€ ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ DB๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ์—ญํ• ์ด๋ฉฐ ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ๋ฐ–์— ํ•  ์ˆ˜ ์—†๋‹ค. โ†’ ํŠธ๋žœ์žญ์…˜์˜ ๊ธฐ๋Šฅ๋งŒ์œผ๋กœ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.

I(Isolation: ๊ฒฉ๋ฆฌ์„ฑ)

๊ฒฉ๋ฆฌ์„ฑ์ด๋ž€ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ์„ฑ์งˆ์ด๋‹ค.

๊ฒฉ๋ฆฌ์„ฑ์„ ํ•ด์น˜๋Š” ์Šค์ผ€์ค„์€ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์‚ฌ์ „์— ์ œ๊ฑฐํ•˜์ง€๋งŒ, ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ–ˆ์„ ๋•Œ ๋กค๋ฐฑ ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฒฉ๋ฆฌ์„ฑ์€ ํŠธ๋žœ์žญ์…˜์˜ ๋™์‹œ ์‹คํ–‰ ์ œ์–ด์— ๊ด€ํ•œ ์„ฑ์งˆ์„ ๊ฐ€์žฅ ์ž˜ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

D(Durability: ์˜์†์„ฑ)

์˜์†์„ฑ์ด๋ž€ ์ผ๋‹จ ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์ด ์†์ƒ๋˜์ง€ ์•Š๋Š” ์„ฑ์งˆ์ด๋‹ค.

ํ™•์ •๋œ ํŠธ๋žœ์žญ์…˜์„ ์ทจ์†Œํ•  ์ˆ˜ ์—†๊ฒŒ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ณ , ์‹œ์Šคํ…œ์ด ํฌ๋ž˜์‹œ ๋์„ ๋•Œ๋„ ์žฌ๊ธฐ๋™ํ•œ ๋‹ค์Œ์— ๋ณต๊ตฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํฌ๋ž˜์‹œ ์ „์˜ ์ƒํƒœ๋กœ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ค‘์š”ํ•˜๋‹ค.

ํฌ๋ž˜์‹œ ๋ณต๊ตฌ ํ›„์—๋Š” ํฌ๋ž˜์‹œ ์ „์— ์ปค๋ฐ‹ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ๊ฒŒ ๋œ๋‹ค. ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ ์‹œ์ ์—๋Š” DB์˜ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋ผ ์žˆ์œผ๋ฏ€๋กœ ํฌ๋ž˜์‹œ ๋ณต๊ตฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ผ๊ด€์„ฑ์— ๋Œ€ํ•ด์„œ ๊ฑฑ์ •ํ•  ํ•„์š” ์—†๋‹ค.

๋‹ค์–‘ํ•œ ๋น„์ •์ƒ ์ƒํƒœ

ACID๋Š” ํŠธ๋žœ์žญ์…˜์ด ๊ฐ€์ ธ์•ผ ํ•  ์„ฑ์งˆ์ด๋‹ค. ์ด๋ฒˆ์—๋Š” ํŠธ๋žœ์žญ์…˜์—์„œ ์žˆ์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ƒํƒœ์— ๊ด€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.

๊ฐฑ์‹  ๋ถ„์‹ค

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2 ๊ณ„์ขŒ์ž”์•ก
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000 1,000,000
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000
(์ž…๊ธˆ) +300,000
์ž”์•ก ๊ธฐ๋ก: 1,300,000 (์ปค๋ฐ‹) 1,300,000
(์ธ์ถœ) -200,000
์ž”์•ก ๊ธฐ๋ก: 800,000 (์ปค๋ฐ‹) 800,000

๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜2๊ฐ€ ํŠธ๋žœ์žญ์…˜1์ด ๊ฐฑ์‹ ํ•˜๊ธฐ ์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค๋ฉด ํŠธ๋žœ์žญ์…˜1๋กœ ๋ฐœ์ƒํ•œ ๊ฐฑ์‹ ์€ ์œ ์‹ค๋  ๊ฒƒ์ด๋‹ค. โ†’ ๊ฐฑ์‹  ๋ถ„์‹ค

์œ„ ๊ทธ๋ฆผ์€ ์ „ํ˜•์ ์ธ ๊ฐฑ์‹  ๋ถ„์‹ค์˜ ์˜ˆ๋‹ค.

๋ชจ์ˆœ์  ํŒ๋…

์–ด๋–ค ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ๋ฉด ํŠธ๋žœ์žญ์…˜์ด ์ฝ์€ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. โ†’ ๋ชจ์ˆœ์  ํŒ๋…(Inconsistent read)

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2 X ๊ณ„์ขŒ์ž”์•ก Y ๊ณ„์ขŒ์ž”์•ก
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000 1,000,000 1,000,000
(์ธ์ถœ) -100,000
์ž”์•ก ๊ธฐ๋ก: 900,000 900,000
(์‹œ์ž‘) ์ž”์•ก X ์ฝ์Œ: 900,000 // ์ž”์•ก Y ์ฝ์Œ: 1,000,000 1,300,000
์ž”์•ก ํ•ฉ๊ณ„ ๊ณ„์‚ฐ: 1,900,000 (์ปค๋ฐ‹)
์ž”์•ก Y ์ฝ์Œ: 1,000,000
(์ž…๊ธˆ) +100,000
์ž”์•ก Y ๊ธฐ๋ก: 1,100,000(์ปค๋ฐ‹) 1,100,000

ํŠธ๋žœ์žญ์…˜1์— ์˜ํ•ด ๊ณ„์ขŒ X์™€ ๊ณ„์ขŒ Y์˜ ์ž”์•ก์€ ๊ฐ๊ฐ ๊ฐ์•ก, ์ฆ์•กํ•˜์ง€๋งŒ, ํ•ฉ๊ณ„๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ฝ์€ ๊ธˆ์•ก์€ ์›๋ž˜ ์žˆ์–ด์•ผ ํ•  ๋ˆ๋ณด๋‹ค 10๋งŒ์›์ด ์ ๋‹ค.

๋”ํ‹ฐ ๋ฆฌ๋“œ(Dirty Read)

๋”ํ‹ฐ ๋ฆฌ๋“œ๋Š” ์•„์ง ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ๋น„์ •์ƒ ์ƒํƒœ๋‹ค.

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2 ๊ณ„์ขŒ์ž”์•ก
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000 1,000,000
(์ž…๊ธˆ) +300,000
์ž”์•ก ๊ธฐ๋ก: 1,300,000 (์ปค๋ฐ‹) 1,300,000
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,300,000
ROLLBACK
(์ธ์ถœ) -200,000
์ž”์•ก ๊ธฐ๋ก: 1,100,000 (์ปค๋ฐ‹) 1,100,000

ํŠธ๋žœ์žญ์…˜1์ด ์–ด๋–ค ์ด์œ ๋กœ Abort(ROLLBACK)ํ•  ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ฝ์€ ๋ฐ์ดํ„ฐ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋œ๋‹ค.

ํŠธ๋žœ์žญ์…˜2๋Š” 20๋งŒ์›์„ ์ฐพ๋Š” ์ž‘์—…์ด์ง€๋งŒ ํŠธ๋žœ์žญ์…˜1์— ์˜ํ•ด ๋”ํ‹ฐ ๋ฆฌ๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์žˆ์–ด์„œ ๊ณ„์ขŒ์˜ ์ž”์•ก์ด ์›๋ž˜ ์žˆ์–ด์•ผํ•  ๊ธˆ์•ก๋ณด๋‹ค 30๋งŒ์›์ด ๋Š˜์—ˆ๋‹ค.

๋…ผ ๋ฆฌํ”ผํ„ฐ๋ธ” ๋ฆฌ๋“œ(Non Repeatable Read)

๋…ผ ๋ฆฌํ”ผํ„ฐ๋ธ” ๋ฆฌ๋“œ๋ž€ ํ•œ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ์„ ๋•Œ ๊ทธ ํŠธ๋žœ์žญ์…˜์ด ์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋ฐ๋„ ๊ฐ’์„ ๋ฐ”๊พธ์–ด ๋ฒ„๋ฆฌ๋Š” ํ˜„์ƒ์ด๋‹ค

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2 ๊ณ„์ขŒ์ž”์•ก
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000 1,000,000
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000
(์ธ์ถœ) -200,000
์ž”์•ก ๊ธฐ๋ก: 800,000 (์ปค๋ฐ‹)
์ž”์•ก์„ ์ฝ์Œ: 800,000(์ปค๋ฐ‹)

ํŠธ๋žœ์žญ์…˜1์€ ์ง‘๊ณ„์ฒ˜๋ฆฌ๋‹ค. ํŠธ๋žœ์žญ์…˜1์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ ์‚ฌ์ด์— ํŠธ๋žœ์žญ์…˜1์„ ์ด๋ฏธ ์ฐธ์กฐํ•œ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์žญ์…˜2์— ์˜ํ•ด ๋ฐ”๋€๋‹ค. โ†’ ๋‘ ๋ฒˆ์งธ๋กœ ๊ฐ™์€ ๊ณ„์ขŒ์˜ ์ž”์•ก์„ ์ฝ์„ ๋•Œ๋Š” ์ž”์•ก์ด ์ค„๊ฒŒ ๋œ๋‹ค.

๋…ผ ๋ฆฌํ”ผํ„ฐ๋ธ” ๋ฆฌ๋“œ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ์„ ๋•Œ ์ด์ „๊ณผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๋ฌธ์ œ๋‹ค.

โ†’ ์‹œ๊ฐ„ ์ถ•์— ๋”ฐ๋ผ์„œ ์ •ํ•ฉ์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋‹ค.

ํŒฌํ…€ ๋ฆฌ๋“œ(Phantom Read)

ํŒฌํ…€ ๋ฆฌ๋“œ๋ž€ SQL๊ณผ ๊ฐ™์€ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ ์ฃผ๋กœ ์ผ์–ด๋‚˜๋Š” ๋ฌธ์ œ๋‹ค. ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ ๊ฐ’์— ์ด์ƒ์„ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ณผ๊ฑฐ์— ์—†์—ˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2 ๊ณ„์ขŒ์ž”์•ก
(์ค€๋น„)
CREATE TABLE t (id INT UNSIGNED NOT NULL, PRIMARY KEY(ID));
INSERT INTO t VALUES(1) COMMIT
(์‹œ์ž‘) SELECT * FROM t; (๊ฒฐ๊ณผ) 1
(์‹œ์ž‘) INSERT INTO t VALUES(2); COMMIT
SELECT * FROM t; โ†’ (๊ฒฐ๊ณผ) 1, 2 COMMIT

ํŠธ๋žœ์žญ์…˜1์€ ์›๋ž˜ 1ํ–‰๋งŒ ์ฝ์–ด์•ผ ํ•˜๋‚˜ ํŠธ๋žœ์žญ์…˜2์— ์˜ํ•ด ์ƒˆ๋กœ์šด ํ–‰์ด ์‚ฝ์ž…๋œ ๋‹ค์Œ์—๋Š” ๊ทธ ํ–‰๋„ ์ฝ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค.

์Šค์ผ€์ค„๊ณผ ์ž ๊ธˆ

๋น„์ •์ƒ ์ƒํƒœ๋Š” ๋ชจ๋‘ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋‹ค. ๊ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์Šค์ผ€์ค„์ด๋ผ๋Š” ๊ด€์ ์—์„œ ๋ณด๋ฉด ์•ž์—์„œ ์–ธ๊ธ‰ํ•œ ๋น„์ •์ƒ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์Šค์ผ€์ค„์€ ์›๋ž˜ ์‹คํ–‰ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋Ÿฐ ์Šค์ผ€์ค„์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํŠธ๋žœ์žญ์…˜์˜ ์Šค์ผ€์ค„์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

RDB์—์„œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•ด ๋‹จ๋… ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ž ๊ธˆ์„ ์ด์šฉํ•œ ์Šค์ผ€์ค„์„ ๋ฝํ‚น์Šค์ผ€์ค„์ด๋ผ๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ํ–‰(=๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ)์ด ํ•„์š”ํ•œ์ง€๋Š” ์‹ค์ œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์Šค์ผ€์ค„์ด ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†๋‹ค.

โ†’ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰์— ๋”ฐ๋ผ ํŠธ๋žœ์žญ์…˜ ๋‚ด์— ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๋ฌด๋„ˆ์ง€์ง€ ์•Š๋„๋ก ์ž‘์—… ๋Œ€์ƒ์ด ๋˜๋Š” ํ–‰์— ๋Œ€ํ•ด ๊ทธ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๊ธฐ ์ „์— ์ž ๊ธˆ์„ ๊ฑฐ๋Š” ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค.

์ž ๊ธˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ํ•ด์น˜๋Š” ๊ฐ์ข… ๋น„์ •์ƒ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์Šค์ผ€์ค„์ด ๋˜๋„๋ก ๊ฒฝํ•ฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ์—‘์„ธ์Šค๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ฐจ๋‹จํ•˜๊ฒŒ ๋œ๋‹ค.

๊ต์ฐฉ ์ƒํƒœ(Dead Lock)

ํŠธ๋žœ์žญ์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ ์ˆœ์„œ๋Œ€๋กœ ์ž ๊ทธ๋Š” ์•„ํ‚คํ…์ฒ˜๋Š” ๊ต์ฐฉ ์ƒํƒœ๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. RDB๋Š” ํ–‰ ์ˆ˜์ฃผ๋Š์ด ์ž ๊ธˆ ํ˜น์€ ํŽ˜์ด์ง€ ์ˆ˜์ค€์˜ ์ž ๊ธˆ์œผ๋กœ ๊ตฌํ˜„๋ผ ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ํ˜„์ƒ์ด ์ผ์–ด๋‚œ๋‹ค.

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2
๊ณ„์ขŒ X ์ž ๊ธˆ
๊ณ„์ขŒ X ์ฝ์Œ: 1,000,000
(์ธ์ถœ) -100,000
์ž”์•ก ๊ธฐ๋ก: 900,000
๊ณ„์ขŒ Y๋ฅผ ์ž ๊ธˆ
๊ณ„์ขŒ Y ์ฝ์Œ: 1,000,000
(์ธ์ถœ) -100,000
์ž”์•ก ๊ธฐ๋ก: 900,000
๊ณ„์ขŒ Y ์ž ๊ธˆ
์ฐจ๋‹จ
๊ณ„์ขŒ X ์ž ๊ธˆ
์ฐจ๋‹จ

์œ„ ํ‘œ์ฒ˜๋Ÿผ ์–‘์ชฝ์˜ ํŠธ๋žœ์žญ์…˜์ด ์„œ๋กœ ์ฐจ๋‹จํ•˜๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ์–ด๋Š ์ชฝ๋„ ํŠธ๋žœ์žญ์…˜๋„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๋ง‰๋‹ค๋ฅธ ๊ธธ์ด ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. โ†’ ๊ต์ฐฉ ์ƒํƒœ

๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ๋งŒ์•ฝ์— ์ž ๊ธˆ์„ ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์ด ์ผ์–ด๋‚œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ์ด๋Ÿฐ ์Šค์ผ€์ค„์€ ํ—ˆ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ต์ฐฉ ์ƒํƒœ์— ๋น ์ง„ ํŠธ๋žœ์žญ์…˜์€ ๋กค๋ฐฑํ•ด์•ผ ํ•œ๋‹ค.

๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์†Œํ•˜๋Š”๊ฐ€๋Š” ๊ตฌํ˜„ํ•˜๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ต์ฐฉ์ƒํƒœ๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–‘์ชฝ ๋ชจ๋‘ ๋กค๋ฐฑํ•˜๊ฑฐ๋‚˜, ํ•œ์ชฝ๋งŒ ๋กค๋ฐฑํ•˜๊ฑฐ๋‚˜ ํ•˜๋‚˜๋งŒ ๋กค๋ฐฑํ•œ๋‹ค๋ฉด ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๋กค๋ฐฑํ•˜๋Š” ์ชฝ์„ ์ •ํ•  ๊ฒƒ์ธ๊ฐ€ ๋“ฑ์ด๋‹ค.

๊ต์ฐฉ ์ƒํƒœ์˜ ๊ฐ์ง€ ๊ธฐ๋Šฅ์ด ์—†๋‹ค๋ฉด ์ž ๊ธˆ์ด ํƒ€์ž„์•„์›ƒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

๊ต์ฐฉ ์ƒํƒœ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฝํ‚น์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์žˆ๋Š” RDB์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ํŠธ๋žœ์žญ์…˜์€ Abort ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ DB ์‘์šฉํ”„๋กœ๊ทธ๋žจ์€ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€

SERIALIZABLE

๊ฐ€์žฅ ๊ฒฉ๋ฆฌ์„ฑ(๋…๋ฆฝ์„ฑ) ๋†’๊ณ  ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ง๋ ฌํ™”๋œ ์Šค์ผ€์ค„๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•œ๋‹ค. ์ด๋Ÿฐ ๋ณด์žฅ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ SERIALIZABLE ๋ฟ์ด๋‹ค. ๋‹ค๋ฅธ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ ์•ž์—์„œ ์—ด๊ฑฐํ•œ ์ด์ƒ ํ˜„์ƒ์„ ์™„์ „ํžˆ ๋ง‰์„ ์ˆ˜ ์—†๋‹ค.

SERIALIZABLE์€ ๋†’์€ ์‹ ๋ขฐ์„ฑ์˜ ๋Œ€๊ฐ€๋กœ ์„ฑ๋Šฅ์ด ๋น„๊ต์  ๋‚ฎ์€ ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์„ฑ๋Šฅ์ด๋ž€ ํŠธ๋žœ์žญ์…˜์˜ ๋ณ‘๋ ฌ ์ •๋„๋‹ค. SERIALIZABLE์€ ์ž ๊ธˆ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ต์ฐฉ์ƒํƒœ(๋ฐ๋“œ๋ฝ)์˜ ํ™•๋ฅ ๋„ ์˜ฌ๋ผ๊ฐ€๊ณ  ์ž ๊ธˆ ๊ฒฝํ•ฉ์— ๋”ฐ๋ผ ์ฐจ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค.

SERIALIZABLE ์ด์™ธ์—๋Š” ๊ฐ์ข… ์ด์ƒ ํ˜„์ƒ์ด ์ผ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๋Œ€์‹ ์— ๋ณ‘๋ ฌ์„ฑ ํ–ฅ์ƒ์ด๋ผ๋Š” ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

READ-UNCOMMITED

๋”ํ‹ฐ ๋ฆฌ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ ๋”ํ‹ฐ ๋ฆฌ๋“œ๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๋กค๋ฐฑ์ด ๋ฌด๋ฐฉ๋น„ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

READ-COMMITED, REPEATABLE-READ

๋ฒˆ๊ฑฐ๋กœ์›€๊ณผ ๋ฆฌ์Šคํฌ๋ฅผ ๊ฐ์ˆ˜ํ•˜๋”๋ผ๊ณ  ์„ฑ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

READ-COMMITED: ์ปค๋ฐ‹๋œ ์•„์ดํ…œ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“œ, ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜์—์„œ๋Š” ์ตœ๊ทผ์˜ ์Šค๋ƒ…์ƒท์„ ์ฝ๋Š”๋‹ค.

REPEATABLE-READ: ์ฒซ ๋ฒˆ์งธ ์ฝ๊ธฐ์— ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑ. ์ดํ›„ ๋™์ผ ํŠธ๋žœ์žญ์…˜์—์„œ๋Š” ์Šค๋ƒ…์ƒท๋ถ€ํ„ฐ ๊ฐ’์„ ์ฝ๋Š”๋‹ค.

MVCC

ํŠธ๋žœ์žญ์…˜์˜ ๋ณ‘๋ ฌ๋„๊ฐ€ ๋†’์•„์ง€๋ฉด ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ๋˜๊ณ , ์•„์ง ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ํ–‰์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. โ†’ ์–ด๋–ค ์‹œ์ ์—์„œ ์ฐธ์กฐ์˜ ์ผ๊ด€์„ฑ์ด ์žˆ๋‹ค๋ฉด ์ข‹๋‹ค.

๋‹จ์ˆœํ•œ ์ž ๊ธˆ์ด๋ผ๋Š” ๊ตฌ์กฐ์— ์˜์กดํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ์ž ๊ธˆ์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

๋งŒ์•ฝ ์ž ๊ธˆ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ์ฐจ๋‹จ๋  ์ง€๋„ ๋ชจ๋ฅธ๋‹ค. ์ด์™€ ๊ฐ™์€ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋ณ‘๋ ฌ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ ๊ณ ์•ˆ๋œ ๊ตฌ์กฐ๊ฐ€ MVCC(MultiVersion Concurrency Control)์ด๋‹ค.

MVCC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ๊ณผ๊ฑฐ์˜ ์ด์ „ ๋ฒ„์ „์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

โ†’ ๋ชจ์ˆœ์  ํŒ๋…์„ ๋ง‰์œผ๋ฉด์„œ ๋ณ‘๋ ฌ๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

MVCC์˜ ์˜ˆ์‹œ

ํŠธ๋žœ์žญ์…˜1 ํŠธ๋žœ์žญ์…˜2 X ๊ณ„์ขŒ์ž”์•ก(์ตœ์‹ ) X ์ž”์•ก (์ด์ „) Y ๊ณ„์ขŒ์ž”์•ก
(์‹œ์ž‘) ์ž”์•ก์„ ์ฝ์Œ: 1,000,000 1,000,000 1,000,000
(์ธ์ถœ) -100,000
์ž”์•ก ๊ธฐ๋ก: 900,000 900,000 1,000,000
(์‹œ์ž‘) ์ž”์•ก(์ด์ „) ์ฝ์Œ: 1,000,000
์ž”์•ก Y ์ฝ์Œ: 1,000,000
ํ•ฉ๊ณ„: 2,000,000(์ปค๋ฐ‹)
์ž”์•ก Y ์ฝ์Œ: 1,000,000
์ด์ฒด ๊ธˆ์•ก ํ•ฉ๊ณ„: 100,000 + 1,000,000
์ž”์•ก Y ๊ธฐ๋ก: 1,100,000(์ปค๋ฐ‹) 1,100,000

MVCC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ์ˆœ์  ํŒ๋…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์ด ๋œ๋‹ค.

MVCC์—์„œ ์ด์ „ ๋ฒ„์ „์˜ ๊ฐ’์€ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ๋ผ๋Š” ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค. MVCC๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ SELECT์˜ ๊ตฌ๋ฌธ์— ๋ฒ„์ „์„ ์ €์žฅํ•  ํ•„์š”๋Š” ์—†๋‹ค. ๋ณดํ†ต์ฒ˜๋Ÿผ SELECT๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋œ ์‹œ์ ์— ์ด๋ฏธ ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ž๋™์œผ๋กœ ๋กค๋ฐฑ ์„ธ๊ทธ๋จผํŠธ์—์„œ ์ฐธ์กฐํ•œ๋‹ค.

SERIALIZABLE ์ด์™ธ์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์ฑ„์šฉํ•˜๋Š” ์ด์œ ๋กœ MVCC์˜ ์กด์žฌ๋Š” ๋งค์šฐ ํฌ๋‹ค. ํŠนํžˆ ๊ฐฑ์‹ ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ์ฐธ์กฐ๋งŒ ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์€ MVCC๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉฐ, ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

ํฌ๋ž˜์‹œ ๋ณต๊ตฌ

DB ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฒ„๊ทธ ๋“ฑ์— ์˜ํ•ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜, ์„œ๋ฒ„ ์‹œ์Šคํ…œ์ด ๊ณ ์žฅ๋‚˜์„œ ํฌ๋ž˜์‹œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฆ‰์‹œ ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ํฌ๋ž˜์‹œ๋˜๊ธฐ ์ง์ „์˜ ์ƒํƒœ๋กœ ์‹ ์†ํ•˜๊ฒŒ ๋ณต๊ตฌํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ, ์ปค๋ฐ‹ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌ๋ž˜์‹œ์— ์˜ํ•ด์„œ ์†์ƒ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

โ†’ RDB์—์„œ๋Š” ํฌ๋ž˜์‹œ ๋ณต๊ตฌ๊ฐ€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

DB ์„œ๋ฒ„์˜ ์ปดํฌ๋„ŒํŠธ

ํฌ๋ž˜์‹œ ๋ณต๊ตฌ๋Š” ์Šคํ…Œ์ด๋ธ” ๋กœ๊ทธ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์Šคํ…Œ์ด๋ธ” ๋กœ๊ทธ๋Š” ๋งํ•˜์ž๋ฉด ์ง๋ ฌํ™”๋œ ํŠธ๋žœ์žญ์…˜์˜ ์Šค์ผ€์ค„์ด๋‹ค. ์Šคํ…Œ์ด๋ธ” ๋กœ๊ทธ ๊ธฐ๋ก๋˜๋Š” ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ์žฌ์ƒ(REDO)ํ•ด DB ์บ์‹œ๋ฅผ ์ตœ์‹ ์˜ ์ƒํƒœ๋กœ ๋ณต์›ํ•œ๋‹ค.

๊ทธ๋‹ค์Œ์— ํฌ๋ž˜์‹œํ•œ ์ˆœ๊ฐ„์— ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•œ ๊ฐฑ์‹ ์„ ์ทจ์†Œ(UNDO)ํ•œ๋‹ค.

REDO, UNDO ์–‘์ชฝ ๋ชจ๋‘๋ฅผ ์‹คํ–‰ํ•ด ํฌ๋ž˜์‹œ์˜ ๋ณต๊ตฌ๋ฅผ ์™„๋ฃŒํ•˜๊ฒŒ ๋œ๋‹ค.

  • ์Šคํ…Œ์ด๋ธ” DB: ๋น„ํœ˜๋ฐœ์„ฑ ์Šคํ† ๋ฆฌ์ง€์ƒ์˜ DB. ํŽ˜์ด์ง€ํ™” ๋œ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ฃผ๋กœ ๋””์Šคํฌ์— ์œ„์น˜ํ•œ๋‹ค.
  • DB ์บ์‹œ: ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” DB์˜ ์„œ๋ธŒ์…‹. ๊ฐ์ข… ๊ฐฑ์‹  ์ž‘์—…์€ ๋ชจ๋‘ ์บ์‹œ์—์„œ ์ˆ˜ํ–‰๋œ ๋‹ค์Œ์— ์Šคํ…Œ์ด๋ธ” DB์— ํ”Œ๋Ÿฌ์‹œํ•˜์—ฌ ๋ฐ˜์˜ํ•œ๋‹ค.
  • ์Šคํ…Œ์ด๋ธ” ๋กœ๊ทธ: DB ์บ์‹œ์—์„œ ์ˆ˜ํ–‰๋œ ์ž‘์—…์˜ ๋‚ด์—ญ์„ ๊ธฐ๋กํ•œ ๊ฒƒ. ๋น„ํœ˜๋ฐœ์„ฑ ์Šคํ† ๋ฆฌ์ง€์— ๊ธฐ๋ก๋œ๋‹ค.
  • ๋กœ๊ทธ ๋ฒ„ํผ: ์Šคํ…Œ์ด๋ธ” ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๊ธฐ ์ „์— ์ด์šฉ๋˜๋Š” ๋ฒ„ํผ.

3. ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์œตํ•ฉ

๊ด€๊ณ„ํ˜• ๋ชจ๋ธ๊ณผ ACID์˜ C

ACID์˜ ์„ค๋ช…์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๋Š” DB๋Š” ์–ด๋–ค ์ผ๊ด€์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ผ๊ด€์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ๋กœ ์ „ํ™˜ํ•œ๋‹ค. ๊ทธ DB์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์— ๋‹ฌ๋ ค์žˆ๋‹ค.

DB์˜ ์ผ๊ด€์„ฑ์„ ์ƒ๊ฐํ•˜๋Š”๋ฐ ์žˆ์–ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„๋˜๊ณ  ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ์— ๊ด€ํ•ด ์–ด๋–ค ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ดํ•ด, ์ฆ‰ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๊ด€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์ˆ˜๋‹ค.

์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ง์€ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ด€๊ณ„ํ˜• ๋ชจ๋ธ๊ณผ ์ด์ƒ ํ˜„์ƒ

๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋‹จ์œ„๊ฐ€ ๋ฆด๋ ˆ์ด์…˜์ด๋‹ค. SQL๋กœ ๋Œ€์ฒดํ•˜๋ฉด ํ…Œ์ด๋ธ”์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋‹จ์œ„๊ฐ€ ๋œ๋‹ค. ๋ฆด๋ ˆ์ด์…˜์„ ์ž…๋ ฅํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์ด๋‹ค.

ํŠธ๋žœ์žญ์…˜์˜ ๋ถ€์ •ํ•ฉ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ์ข… ์ด์ƒ ํ˜„์ƒ์€ ๋ฐ์ดํ„ฐ์— ํฌํ•จ๋œ ๊ฐ ํ–‰์˜ ๊ฐ’์ด ๊ฐ‘์ž๊ธฐ ๋ฐ”๋€Œ๊ฑฐ๋‚˜, ํ–‰ ์ž์ฒด๊ฐ€ ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์ด์™€ ๊ฐ™์€ ์ด์ƒ ํ˜„์ƒ์ด ์žˆ๋‹ค๋ฉด ์›๋ž˜ ๋ฆด๋ ˆ์ด์…˜ ์—ฐ์‚ฐ์˜ ์ •ํ™•์„ฑ์ด ๋ณด์žฅํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•œ ์—ฐ์‚ฐ์œผ๋กœ ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๊ฒƒ์€ ์—ฐ์‚ฐ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์ง‘ํ•ฉ์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์œผ๋ฉด ์•ˆ ๋œ๋‹ค.

โ†’ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์„ ์ œ๋Œ€๋กœ ๊ตฌ์ถ•ํ•˜๊ณ  ์ง‘ํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์—ฐ์‚ฐ์„ ์ฟผ๋ฆฌ๋กœ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ์ด์ƒ ํ˜„์ƒ ๋Œ€์ฑ…์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜์— ์ด์ƒ์ด ์žˆ์œผ๋ฉด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

์ •๊ทœํ™”์™€ ์ง๊ต์„ฑ

๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์—์„œ DB์˜ ๋ถ€์ •ํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ˆ˜๋‹จ์ด๋ผ๋ฉด ์ •๊ทœํ™”์™€ ์ง๊ต์„ฑ์ด๋‹ค. ์•„๋ฌด๋ฆฌ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์Šค์ผ€์ค„๋กœ ๊ฐฑ์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ DB์— ์ค‘๋ณต์ด ์žˆ๊ณ , ๋ชจ์ˆœ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์›์ ์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค.

๋จผ์ € ๋ฆด๋ ˆ์ด์…˜์˜ ์ •๊ทœํ™”์™€ ์ง๊ต์„ฑ์„ ๊ตฌํ˜„ํ•˜์ž. ํŠนํžˆ ์ •๊ทœํ™”๋Š” ์ค‘์žฅ๊ธฐ๋กœ ์ฒด๊ณ„ํ™”ํ•ด ์‹ค์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. DB ์„ค๊ณ„๋กœ ์ด์ƒ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ๋ณด์žฅํ•˜๊ณ , ACID์˜ C๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ๋“ค์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์ œ์•ฝ

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ 

๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์€ ์–ด๋””๊นŒ์ง€๋‚˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด๋ฉฐ ๋‹จ์ˆœํ•œ ๋„๊ตฌ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ•ด์„œ ์˜ฌ๋ฐ”๋ฅธ ๋กœ์ง์„ ํ•ญ์ƒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์•„๋ฌด๋ฆฌ ์„ ์–ธ์ ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค๊ณ  ํ•ด๋„ ์ž‘์„ฑํ•œ ๋‚ด์šฉ๊ณผ ์ฒ˜๋ฆฌ๊ฐ€ ์˜๋„ํ•œ ๊ฒƒ ์‚ฌ์ด์— ๊ดด๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์ง€๋Š” ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ์™€ ์ฒ˜๋ฆฌ์˜ ์˜๋„์— ๊ดด๋ฝ ์žˆ๋‹ค๋ฉด ์ด ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋Š” ๋ฐ”๋ฅด์ง€ ์•Š๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

RDB๋ฅผ ์ž˜ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์ฒ˜๋ฆฌ์˜ ์ž‘์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

์ œ์•ฝ์„ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธ

๊ทธ๋ž˜์„œ ๋„์›€์ด ๋˜๋Š” ๊ฒƒ์ด ์ œ์•ฝ(Constraint)๋‹ค. ์ œ์•ฝ์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค์‹์œผ๋กœ ์กด์žฌํ•ด์•ผ ํ•˜๋Š”์ง€ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  DB ์„ค๊ณ„๋ฅผ ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•ด ์ด์ƒ ํ˜„์ƒ์ด ์ƒ๊ธธ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•œ ๋‹ค์Œ์— ์ œ์•ฝ์„ ์‚ฌ์šฉํ•ด ์ด์ƒ ํ˜„์ƒ์„ ๋ง‰๋Š” ๊ฒƒ์ด๋‹ค.

NOT NULL

NULL์ด ํฌํ•จ๋˜์ง€ ์•Š๊ฒŒ ํ‘œํ˜„ํ•˜๋ ค๋ฉด NOT NULL ์ œ์•ฝ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ •๊ทœํ™”๋ฅผ ํ•  ๋•Œ๋Š” NOT NULL์„ ์‚ฌ์šฉํ•˜์ž.

๊ณ ์œ ์„ฑ ์ œ์•ฝ

ํ…Œ์ด๋ธ”์—์„œ ์–ด๋–ค ์ปฌ๋Ÿผ์˜ ์กฐํ•ฉ์— ์ค‘๋ณต์ด ์—†์Œ์„ ๋ณด์žฅํ•˜๋ ค๋ฉด ๊ณ ์œ ์„ฑ ์ œ์•ฝ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ‚ค๋Š” ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์— ์žˆ์–ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฐœ๋…์ด๋‹ค. ํ›„๋ณดํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ์˜ ์กฐํ•ฉ ๋ชจ๋‘์— ๊ธฐ๋ณธํ‚ค ๋˜๋Š” ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค๋ฅผ ์ž‘์„ฑํ•˜์ž.

CREATE TYPE

SQL์—์„œ ์ข์€ ๋ฒ”์œ„์˜ ์ง‘ํ•ฉ์„ ๋„๋ฉ”์ธ์œผ๋กœ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์กฐํ•ฉํ•œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ •์˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด CREATE TYPE์„ ์‚ฌ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. CREATE TYPE์€ ์ œํ’ˆ๋งˆ๋‹ค ์‚ฌ์šฉ๋ฒ•์ด ๋‹ค๋ฅด๋‹ˆ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

CHECK ์ œ์•ฝ

์ปฌ๋Ÿผ์ด ์ทจํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋ฅผ ๋”์šฑ ์„ธ๋ฐ€ํ•˜๊ฒŒ, ๊ทธ๋ฆฌ๊ณ  ํ˜„์‹œ์ ์˜ ํ…Œ์ด๋ธ”์˜ ์ƒํƒœ์— ๋งž๊ฒŒ ์ œ์•ฝ์„ ํ•˜๋ ค๋ฉด CHECK ์ œ์•ฝ์„ ์‚ฌ์š”ํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SQL ํ‘œ์ค€์—์„œ CHECK ์ œ์•ฝ์€ ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋˜์–ด ์žˆ์ง€๋งŒ RDB ์ œํ’ˆ๋งˆ๋‹ค CHECK ์ œ์•ฝ์„ ์ง€์›ํ•˜๋Š” ์ƒํ™ฉ์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

CHECK ์ œ์•ฝ์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๋‹ค. ๋‹จ์ผ ์ปฌ๋Ÿผ์ด ์ทจํ•˜๋Š” ๊ฐ’๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

(MySQL์€ CREATE TYPE, CHECK ์ œ์•ฝ์€ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.)

์™ธ๋ถ€ํ‚ค ์ œ์•ฝ

SQL์— ์žˆ๋Š” ํ…Œ์ด๋ธ” ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ํ™•์ธํ•˜๋Š” ์œ ์ผํ•œ ์ˆ˜๋‹จ์ด ์™ธ๋ถ€ํ‚ค๋‹ค. ์™ธ๋ถ€ํ‚ค ์ œ์•ฝ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž์‹ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ํ‚ค์™€ ๊ฐ™์€ ๊ฐ’์˜ ํ‚ค๊ฐ€ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—๋„ ์žˆ๋‹ค๋Š” ์ œ์•ฝ์„ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ฌด์†์‹ค ๋ถ„ํ•ด๋œ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ์™ธ๋ถ€ํ‚ค ์ œ์•ฝ์„ ๊ฑธ์–ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์™ธ๋ถ€ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ๋กœ์ง์„ ์‘์šฉํ”„๋กœ๊ธ€๋งค์—์„œ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฑฐ์Šจ ์™ธ๋ถ€ํ‚ค๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ๊ฒƒ์ด๋‹ค. ์™ธ๋ถ€ํ‚ค์™€ ๊ฐ™์€์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์›๋ž˜ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ์—‘์„ธ์Šค ํ•ด์•ผ๋งŒ ํ•˜๋ฏ€๋กœ DB ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ๋๋‚˜๋Š” ์ฒ˜๋ฆฌ์™€๋Š” ๋‹ฌ๋ฆฌ SQL์˜ ํ•ด์„์ด๋‚˜ ์ „์†ก ๋“ฑ์„ ์œ„ํ•ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋–„๋ฌธ์ด๋‹ค.

์™ธ๋ถ€ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋˜ํ•œ ์™ธ๋ถ€ํ‚ค์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋กœ์ง๋„ ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์ด ๋ณด์žฅ๋ผ ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ๋ชจ๋ฅด๋Š” ์œ„ํ—˜์„ ์•ˆ๊ฒŒ ๋œ๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์€ ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋‚˜ ์šด์˜์˜ ์ˆ˜๊ณ ์— ๋น„ํ•˜๋ฉด ํ›จ์”ฌ ์ค‘์š”ํ•˜๋‹ค.

ํŠธ๋ฆฌ๊ฑฐ

์™ธ๋ถ€ํ‚ค๋Š” ๋งค์šฐ ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์ œ์•ฝ์œผ๋กœ์„œ์˜ ํ‘œํ˜„์€ ์ถฉ๋ถ„ํ•˜๊ธฐ์—” ๋ถ€์กฑํ•˜๋‹ค. ํŠนํžˆ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋‹ด๋ณดํ•˜๊ณ ์ž ํ•  ๋•Œ์˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” SQL์—์„œ๋Š” ์™ธ๋ถ€ํ‚ค ์ด์™ธ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋‹ค.

์™ธ๋ถ€ํ‚ค๋Š” ํ…Œ์ด๋ธ” ์‚ฌ์ด์˜ ์ œ์•ฝ์„ ํ‘œํ˜„ํ•˜๋Š” ์ˆ˜๋‹จ ์ค‘ ํ•˜๋‚˜์— ์ง€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

์™ธ๋ถ€ํ‚ค๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ์ œ์•ฝ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ž์‹ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ํ‚ค์™€ ๊ฐ™์€ ๊ฐ’์˜ ํ‚ค๊ฐ€ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.(NOT)
  • ์ž์‹ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ํ‚ค์™€ ๊ฐ™์€ ๊ฐ’์˜ ํ‚ค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ€๋ชจ ํ…Œ์ด๋ธ” ์ค‘์— ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค.(OR)
  • ์ž์‹ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ํ‚ค์™€ ๊ฐ™์€ ๊ฐ’์˜ ํ‚ค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ€๋ชจ ํ…Œ์ด๋ธ” ์ค‘์— N๊ฐœ ์ด์ƒ, ๋˜๋Š” N๊ฐœ ๋ฏธ๋งŒ์ด ์กด์žฌํ•œ๋‹ค. (XOR)

์ด๋Ÿฌํ•œ ์ œ์•ฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์ƒํƒœ์˜ ์ฐจ์ด์— ๋”ฐ๋ผ ์ €์žฅํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ๋‚˜๋ˆŒ ๋•Œ๋‹ค. ํ•ฉ์ง‘ํ•ฉ(UNION) ๋˜์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ๋”ฐ๋กœ ๋‚˜๋ˆ ์•ผ ํ•˜๋Š” ์„ ํƒ์ง€๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ ์ง€ ์•Š๋‹ค. ์ด ๊ฒฝ์šฐ ์™ธ๋ถ€ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด๋งŒ์œผ๋กœ ๊ฒฝ์Ÿํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ ๊ฒƒ์ด ํŠธ๋ฆฌ๊ฑฐ๋‹ค. SQL์—์„œ ํ…Œ์ด๋ธ” ์‚ฌ์ด์˜ ๋ณต์žกํ•œ ์ œ์•ฝ์„ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค. ํŠธ๋ฆฌ๊ฑฐ๋Š” ๋‹ค์–‘ํ•œ ์ œ์•ฝ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ CHECK ์ œ์•ฝ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๋‹ค์–‘ํ•œ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.(์ง‘๊ณ„, ์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœ ๋“ฑ๋“ฑ)

ํŠธ๋ฆฌ๊ฑฐ ์ž์ฒด๋Š” ์ ˆ์ฐจํ˜•์˜ ํ‘œํ˜„์ด์ง€๋งŒ ์ง‘ํ•ฉ๋ก ์—์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ๋‹ค์–‘ํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠธ๋ฆฌ๊ฑฐ๋Š” ํ•œ ํ–‰๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์กฐ์ž‘์ด ์‹คํ–‰๋˜๋Š” ํ–‰ ํŠธ๋ฆฌ๊ฑฐ์™€ SQL ๋ฌธ๋งˆ๋‹ค ์‹คํ–‰๋˜๋Š” ๋ฌธ์žฅ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์žˆ๋‹ค. ๋‘ ๊ฐœ์˜ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ด์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์ฃผ๋กœ ํ•„์š”ํ•œ ์ชฝ์€ ํ–‰ ํŠธ๋ฆฌ๊ฑฐ ์ชฝ์ด๋‹ค. ๋ฌธ์žฅ ํŠธ๋ฆฌ๊ฑฐ๋Š” ํ–‰ ํŠธ๋ฆฌ๊ฑฐ์ฒ˜๋Ÿผ NEW ๋˜๋Š” OLD ํ‚ค์›Œ๋“œ๋กœ ์ปฌ๋Ÿผ์„ ๊ธฐ์กด ๊ฐ’๊ณผ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์—†์–ด์„œ ์ œ์•ฝ์„ ํ‘œํ˜„ํ•˜๊ธฐ์—๋Š” ๊ทธ๋‹ค์ง€ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

ํ–‰ ํŠธ๋ฆฌ๊ฑฐ๋Š” ๊ฐ•๋ ฅํ•˜์ง€๋งŒ ๋‹จ์ ์ด ์žˆ๋‹ค.

ํ•œ๋งˆ๋””๋กœ ํ•œ ํ–‰์”ฉ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ํ–‰์— ๋ฌถ์–ด์„œ ๊ฐ’์„ ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ์ด ๊ฒฝ์šฐ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์•„๋‹Œ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ทธ ํŠธ๋žœ์žญ์…˜ ๋‚ด์— ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ ์ด์ƒ ์ƒํƒœ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด DB๋Š” ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์— ๋”ฐ๋ผ ์ •ํ•ฉ์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ช…์‹œ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ๋กœ๋ฐฑํ•ด์•ผ ํ•œ๋‹ค.

์š”์•ฝ

DB์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. DB์˜ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ, ํŠธ๋žœ์žญ์…˜์— ๊ด€ํ•œ ์ดํ•ด๋„ ํ•„์ˆ˜์ ์ด๋‹ค. ๊ฒฉ๋ฆฌ ์ˆ˜์ค€, ์ž ๊ธˆ, MVCC, ์ œ์•ฝ ๋“ฑ์„ ์ž˜ ํ™œ์šฉํ•ด ํŠธ๋žœ์žญ์…˜์— ์˜ํ•œ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ์ •๋ฆฌ ํ•˜์ž.


Written by@Sunny Son
๊ฐœ๋ฐœ์ž๋Š” ์˜ค๋Š˜๋„ ๋š ๋š 

GitHubFacebook