2023๋…„ 9์›” 26์ผยท3๋ถ„ ์ฝ๊ธฐ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ MVCC๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ MVCC(Multiversion Concurrency Control) ๊ฐœ๋…, ์ฃผ์š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ๊ตฌํ˜„, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์„ธ์š”.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ MVCC๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹

๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด(MVCC) ์†Œ๊ฐœ

์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋™์‹œ์„ฑ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—์„œ ๋™์‹œ์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ํšจ์œจ์ ์ธ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๋Š” MVCC(Multiversion Concurrency Control)์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ณ„๋„์˜ ๋ ˆ์ฝ”๋“œ ๋ฒ„์ „์„ ์œ ์ง€ํ•˜๋ฏ€๋กœ ๋…์ž๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ ์“ฐ๊ธฐ ์ž‘์—…์œผ๋กœ ์ธํ•ด ์ฐจ๋‹จ๋˜์ง€ ์•Š๊ณ  ์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šค๋ƒ…์ƒท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

MVCC ์›Œํฌํ”Œ๋กœ: ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ

MVCC๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๋™์‹œ์„ฑ ์ œ์–ด ๊ธฐ์ˆ ์„ ๊ตฌํ˜„ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ : ์ƒˆ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฝ์ž…๋˜๋ฉด MVCC๋Š” ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ์— ๊ณ ์œ ํ•œ ํŠธ๋žœ์žญ์…˜ ID๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ID๋Š” ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ ˆ์ฝ”๋“œ ๋ฒ„์ „์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  2. ๋ ˆ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ : ๋ ˆ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ์˜ ๊ฒฝ์šฐ MVCC๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ถฉ๋Œ ์—†์ด ๋™์ผํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ๋ ˆ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ์ƒˆ ๋ฒ„์ „์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์—ฌ๊ธฐ์— ํŠธ๋žœ์žญ์…˜ ID๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ก์˜ ์›๋ณธ ๋ฒ„์ „์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๊ฑฐ๋ž˜๊ฐ€ ํ•ด๋‹น ๋ฒ„์ „์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์˜ ๋ ˆ์ฝ”๋“œ๋Š” ์—…๋ฐ์ดํŠธํ•˜๋Š” ํŠธ๋žœ์žญ์…˜๊ณผ ์ด ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋œ ํ›„ ์‹œ์ž‘๋˜๋Š” ๋ชจ๋“  ํ–ฅํ›„ ํŠธ๋žœ์žญ์…˜์—๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ : ํŠธ๋žœ์žญ์…˜์ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ MVCC๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ œ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ , ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์ „ ๋ ˆ์ฝ”๋“œ ๋ฒ„์ „์„ ์œ ์ง€ํ•˜๋ฉด์„œ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(ํŠธ๋žœ์žญ์…˜์˜ ID๋ฅผ ์‚ญ์ œ ํ‘œ์‹œ๋กœ ํ• ๋‹นํ•˜์—ฌ). ๋ชจ๋“  ํ™œ์„ฑ ํŠธ๋žœ์žญ์…˜์ด ๋” ์ด์ƒ ์‚ญ์ œ๋œ ๋ ˆ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด MVCC ์‹œ์Šคํ…œ์€ ๊ฐ€๋น„์ง€๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

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

MVCC์˜ ์žฅ์ ๊ณผ ๋‹จ์ : ์„ฑ๋Šฅ๊ณผ ์ผ๊ด€์„ฑ์˜ ๊ท ํ˜•

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

MVCC์˜ ์žฅ์ 

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

MVCC์˜ ๋‹จ์ 

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

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

MVCC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ธ๊ธฐ ์žˆ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ

๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์€ ํ–ฅ์ƒ๋œ ๋™์‹œ์„ฑ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด MVCC๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ MVCC๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ผ๋ถ€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค.

ํฌ์ŠคํŠธ๊ทธ๋ ˆSQL

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

MySQL(InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„)

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

์‹ ํƒ

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

Microsoft SQL Server(์Šค๋ƒ…์ƒท ๊ฒฉ๋ฆฌ ์ˆ˜์ค€)

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

AppMaster ์‚ฌ์šฉํ•œ MVCC: ๋™์‹œ์„ฑ ์ œ์–ด ํ™œ์šฉ

๋น ๋ฅธ ์›น ์ธํ„ฐํŽ˜์ด์Šค ์ถœ์‹œ
๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฐ˜์‘์„ฑ์„ ์œ ์ง€ํ•˜๋Š” Vue3 ์›น UI๋ฅผ ๋งŒ๋“œ์„ธ์š”.
์›น ์•ฑ ๋งŒ๋“ค๊ธฐ

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

AppMaster ์˜ ์‹œ๊ฐ์  ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ๋ชจ๋ธ๋ง ๋ฐ ์„ค๊ณ„ํ•˜๊ณ , REST API๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์ƒ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋“  PostgreSQL ํ˜ธํ™˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ PostgreSQL์—์„œ MVCC๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์˜ ํ”Œ๋žซํผ์€ Go(golang)์˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Vue3 ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Android์šฉ Kotlin ๋ฐ Jetpack Compose ์™€ iOS์šฉ SwiftUI ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋™์‹œ์„ฑ ์ œ์–ด์— ๋Œ€ํ•œ MVCC์˜ ์ด์ ์„ ํ™œ์šฉํ•˜๋ฉด์„œ ํšจ์œจ์ ์ด๊ณ  ์ตœ์ ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ž˜ ๋™ํ–ฅ๊ณผ ํ˜์‹ 

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์˜ ์„ธ๊ณ„๋Š” ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ MVCC๋Š” ์ด๋Ÿฌํ•œ ๋ฐœ์ „์˜ ์„ ๋‘์— ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„๋Œ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ˆ ์—์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋™ํ–ฅ๊ณผ ํ˜์‹ ์ด MVCC์™€ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฏธ๋ž˜๋ฅผ ํ˜•์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๊ฒฐ๋ก 

MVCC(๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด)๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์ž ๊ธˆ ๊ฒฝํ•ฉ์„ ์ค„์ด๋ฉฐ ์—ฌ๋Ÿฌ ๋™์‹œ ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. PostgreSQL, MySQL(InnoDB), Oracle ๋ฐ Microsoft SQL Server(์Šค๋ƒ…์ƒท ๊ฒฉ๋ฆฌ ์ˆ˜์ค€)๋ฅผ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ์ž˜ ์•Œ๋ ค์ง„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ํ–ฅ์ƒ๋œ ๋™์‹œ์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด MVCC๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ MVCC์˜ ๊ธฐ๋Šฅ์„ ์ดํ•ดํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. AppMaster ์˜ no-code ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋ฉด MVCC ์ง€์› ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ด‘๋ฒ”์œ„ํ•œ ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด๋„ ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ๊ณผ ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด(MVCC)๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

MVCC(Multiversion Concurrency Control)๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํšจ์œจ์ ์ธ ๋™์‹œ์„ฑ ์ œ์–ด ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๋ ˆ์ฝ”๋“œ ๋ฒ„์ „์„ ์œ ์ง€ํ•˜๋ฏ€๋กœ ์ฝ๊ธฐ ์ž‘์—…์ด ์“ฐ๊ธฐ ์ž‘์—…์— ์˜ํ•ด ์ฐจ๋‹จ๋˜์ง€ ์•Š๊ณ  ์ผ๊ด€๋œ ์Šค๋ƒ…์ƒท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MVCC๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

MVCC๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์— ๊ณ ์œ ํ•œ ID(ํŠธ๋žœ์žญ์…˜ ID)๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜๋ฉด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์‚ญ์ œํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠธ๋žœ์žญ์…˜ ID๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ์˜ ์ƒˆ ๋ฒ„์ „์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋…์ž๋Š” ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ ์ ˆํ•œ ๋ฒ„์ „์„ ์ฝ์–ด ์ผ๊ด€๋œ ์Šค๋ƒ…์ƒท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MVCC์˜ ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

MVCC์˜ ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

MVCC๋Š” ๋งŽ์€ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ ˆ์ฝ”๋“œ ์œ ์ง€๋กœ ์ธํ•œ ์Šคํ† ๋ฆฌ์ง€ ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€, ์˜ค๋ž˜๋œ ๋ฒ„์ „์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ๋ณต์žกํ•œ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ฝ๊ธฐ-์“ฐ๊ธฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ฝ๊ธฐ-์ปค๋ฐ‹ ๋ฐ ์ฝ๊ธฐ-์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ๋™์•ˆ ์ผ๊ด€์„ฑ ๋ณด์žฅ์ด ๊ฐ์†Œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

MVCC๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

PostgreSQL, MySQL(InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ํฌํ•จ), Oracle ๋ฐ Microsoft SQL Server(์Šค๋ƒ…์ƒท ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ํฌํ•จ)๋ฅผ ํฌํ•จํ•˜์—ฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ MVCC(Multiversion Concurrency Control)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

AppMaster๋Š” ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋‚˜์š”?

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

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ MVCC๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹ | AppMaster