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

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

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

์ €์žฅ์ ์€ ํŠธ๋žœ์žญ์…˜์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ํŠธ๋žœ์žญ์…˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™•์žฅํ•œ ๊ฒƒ์ด๋ผ๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠธ๋žœ์žญ์…˜๊ณผ ๋™์ผํ•œ ACID(์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ฒฉ๋ฆฌ ๋ฐ ๋‚ด๊ตฌ์„ฑ) ์†์„ฑ์„ ์ง€์›ํ•˜๋ฉฐ ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๊ฐœ๋ณ„ ์ž‘์—…์— ๋Œ€ํ•ด ๋ณด๋‹ค ์„ธ๋ถ€์ ์ธ ์ˆ˜์ค€์˜ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ด์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ no-code ํ”Œ๋žซํผ์ธ AppMaster ๋Š” ๊ฐ•๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ AppMaster ํŠธ๋žœ์žญ์…˜์—์„œ ์ €์žฅ์  ์‚ฌ์šฉ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ๋ณต์žกํ•œ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” AppMaster ์‚ฌ์šฉ์ž์—๊ฒŒ ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐœ๋…์„ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์—์„œ ์ €์žฅ์ ์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ฑฐ๋ž˜๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”.
  INSERT INTO ์ฃผ๋ฌธ (...) VALUES (...);
  SAVEPOINT ์ฃผ๋ฌธ_์ƒ์„ฑ๋จ;
  ์—…๋ฐ์ดํŠธ ์ธ๋ฒคํ† ๋ฆฌ ์„ธํŠธ (...) WHERE (...);
  SAVEPOINT ์žฌ๊ณ _์—…๋ฐ์ดํŠธ;
  ๊ฒฐ์ œ์— ์‚ฝ์ž… (...) ๊ฐ’ (...);
  IF error_occurred THEN
    SAVEPOINT๋กœ ๋กค๋ฐฑ Inventory_updated;
  ๋˜ ๋‹ค๋ฅธ
    ์ €์ง€๋ฅด๋‹ค;
  ์ข…๋ฃŒํ•˜๋ฉด;
๊ฑฐ๋ž˜ ์ข…๋ฃŒ;

์ด ์˜ˆ์—์„œ๋Š” ๋‘ ๊ฐœ์˜ ์ €์žฅ์ ์ด ์ƒ์„ฑ๋˜๋Š”๋ฐ, ํ•˜๋‚˜๋Š” ์ƒˆ ์ฃผ๋ฌธ ๊ธฐ๋ก์„ ์‚ฝ์ž…ํ•œ ํ›„์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์žฌ๊ณ ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ ํ›„์ž…๋‹ˆ๋‹ค. ๊ฒฐ์ œ ์ž‘์—… ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฑฐ๋ž˜๋ฅผ 'inventory_updated' ์ €์žฅ์ ์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์–ด ์‹œ์Šคํ…œ์ด ์ „์ฒด ๊ฑฐ๋ž˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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