๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ MVCC๊ฐ ์๋ํ๋ ๋ฐฉ์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ MVCC(Multiversion Concurrency Control) ๊ฐ๋ , ์ฃผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ตฌํ, ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์ธ์.

๋ค์ค ๋ฒ์ ๋์์ฑ ์ ์ด(MVCC) ์๊ฐ
์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ๋ฐ์ํ๋ ํ๊ฒฝ์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋์์ฑ์ด ์ค์ํฉ๋๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋์์ฑ์ ๊ด๋ฆฌํ๋ ํจ์จ์ ์ธ ๊ธฐ์ ์ค ํ๋๋ MVCC(Multiversion Concurrency Control)์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ณ๋์ ๋ ์ฝ๋ ๋ฒ์ ์ ์ ์งํ๋ฏ๋ก ๋ ์๊ฐ ์งํ ์ค์ธ ์ฐ๊ธฐ ์์ ์ผ๋ก ์ธํด ์ฐจ๋จ๋์ง ์๊ณ ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ ์ท์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
MVCC๋ ๋ช ์์ ์ธ ์ ๊ธ ์์ด ์ฌ๋ฌ ๋ฒ์ ์ ๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ถฉ๋์ ํด๊ฒฐํ๋ฏ๋ก ์ ๊ธ ๊ฒฝํฉ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ์์ ๋๋ ํธ๋์ญ์ ์ด ๋ง๊ณ ๋์์ฑ์ด ๋์ ํ๊ฒฝ์์ ํนํ ์ค์ํฉ๋๋ค. MVCC๋ ๋ค๋ฅธ ๋์ ํธ๋์ญ์ ๋ณด๊ธฐ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ํธ๋์ญ์ ์ด ํธ๋์ญ์ ๋น์ ์ ํจํ ๋ ์ฝ๋ ๋ฒ์ ์๋ง ์ก์ธ์คํ ์ ์๋๋ก ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
MVCC ์ํฌํ๋ก: ๋ ์ฝ๋ ์์ฑ, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์
MVCC๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๋์์ฑ ์ ์ด ๊ธฐ์ ์ ๊ตฌํํ๋ ์์คํ ์์ ๋ ์ฝ๋๋ฅผ ์์ฑ, ์ ๋ฐ์ดํธ, ์ญ์ ํ๋ ๊ณผ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ๋ ์ฝ๋ ์์ฑ : ์ ๋ ์ฝ๋๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ์ ๋๋ฉด MVCC๋ ํด๋น ๋ ์ฝ๋์ ๊ณ ์ ํ ํธ๋์ญ์ ID๋ฅผ ํ ๋นํฉ๋๋ค. ์ด ID๋ ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ๋ ์ฝ๋ ๋ฒ์ ์ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ ์ฝ๋ ์ ๋ฐ์ดํธ : ๋ ์ฝ๋ ์ ๋ฐ์ดํธ์ ๊ฒฝ์ฐ MVCC๋ ์๋ก ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ถฉ๋ ์์ด ๋์ผํ ๋ ์ฝ๋๋ฅผ ์์ ํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ํธ๋์ญ์ ์ด ๋ ์ฝ๋ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ๋ฒ์ ์ ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ฌ๊ธฐ์ ํธ๋์ญ์ ID๋ฅผ ํ ๋นํฉ๋๋ค. ๊ธฐ๋ก์ ์๋ณธ ๋ฒ์ ์ ๊ทธ๋๋ก ์ ์ง๋๋ฏ๋ก ๋ค๋ฅธ ๊ฑฐ๋๊ฐ ํด๋น ๋ฒ์ ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ ๋ฒ์ ์ ๋ ์ฝ๋๋ ์ ๋ฐ์ดํธํ๋ ํธ๋์ญ์ ๊ณผ ์ด ํธ๋์ญ์ ์ด ์๋ฃ๋ ํ ์์๋๋ ๋ชจ๋ ํฅํ ํธ๋์ญ์ ์๋ง ์ ํจํฉ๋๋ค.
- ๋ ์ฝ๋ ์ญ์ : ํธ๋์ญ์ ์ด ๋ ์ฝ๋๋ฅผ ์ญ์ ํ ๋ 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: ๋์์ฑ ์ ์ด ํ์ฉ
AppMaster ์ ์ฝ๋ ์๋ ํ๋ซํผ์ ๊ฐ๋ฐ์๊ฐ ๋์์ฑ ์ ์ด ๋ฐ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด MVCC๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจํ์ฌ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํํ๊ฒ ์๋ํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ์ง์ํฉ๋๋ค. MVCC์ ๊ธฐ๋ฅ์ ์ธ์ํ๊ณ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๊ฒ์ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค.

AppMaster ์ ์๊ฐ์ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ๋ชจ๋ธ๋ง ๋ฐ ์ค๊ณํ๊ณ , REST API๋ฅผ ์์ฑํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํํ๊ฒ ์๋ํ๋ ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค. AppMaster ์์ฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ PostgreSQL ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง๋ก ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ PostgreSQL์์ MVCC๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
AppMaster ์ ํ๋ซํผ์ Go(golang)์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ , Vue3 ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ , Android์ฉ Kotlin ๋ฐ Jetpack Compose ์ iOS์ฉ SwiftUI ์ฌ์ฉํ๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ ์์ค ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ด ํจ์จ์ ์ผ๋ก ๊ตฌํ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ฑ ์ ์ด์ ๋ํ MVCC์ ์ด์ ์ ํ์ฉํ๋ฉด์ ํจ์จ์ ์ด๊ณ ์ต์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
๋ฏธ๋ ๋ํฅ๊ณผ ํ์
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์ ์ธ๊ณ๋ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ 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(Multiversion Concurrency Control)๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋๋ ๋์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ ํจ์จ์ ์ธ ๋์์ฑ ์ ์ด ๊ธฐ์ ์ ๋๋ค. ๋ณ๋์ ๋ ์ฝ๋ ๋ฒ์ ์ ์ ์งํ๋ฏ๋ก ์ฝ๊ธฐ ์์ ์ด ์ฐ๊ธฐ ์์ ์ ์ํด ์ฐจ๋จ๋์ง ์๊ณ ์ผ๊ด๋ ์ค๋ ์ท์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
MVCC๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ๋ฌ ๋ฒ์ ์ ๋ ์ฝ๋๋ฅผ ์ ์งํ์ฌ ์๋ํฉ๋๋ค. ํธ๋์ญ์ ์ ๊ณ ์ ํ ID(ํธ๋์ญ์ ID)๋ฅผ ํ ๋นํ๊ณ ํธ๋์ญ์ ์ด ์์๋๋ฉด ์์๋ฉ๋๋ค. ํธ๋์ญ์ ์ด ๋ ์ฝ๋๋ฅผ ์์ฑ, ์ ๋ฐ์ดํธ ๋๋ ์ญ์ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํธ๋์ญ์ ID๋ก ํ๊ทธ๊ฐ ์ง์ ๋ ํด๋น ๋ ์ฝ๋์ ์ ๋ฒ์ ์ ์์ฑํฉ๋๋ค. ๋ ์๋ ํธ๋์ญ์ ์์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ์ ํ ๋ฒ์ ์ ์ฝ์ด ์ผ๊ด๋ ์ค๋ ์ท์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
MVCC์ ์ฃผ์ ์ด์ ์ผ๋ก๋ ๋์์ฑ ํฅ์, ์ฑ๋ฅ ์ต์ ํ, ์ ๊ธ ๊ฒฝํฉ ๊ฐ์, ํธ๋์ญ์ ๊ฐ ๊ฒฉ๋ฆฌ ๊ฐ์ ๋ฑ์ด ์์ต๋๋ค. MVCC๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์๊ฐ ์์ฑ์์ ์ํด ์ฐจ๋จ๋์ง ์๊ณ ์ผ๊ด๋ ๋ฐ์ดํฐ ์ค๋ ์ท์ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด๋ ์ ๊ธ ๊ฒฝํฉ์ ์ค์ด๊ณ ๋ ๋ง์ ๋์ ํธ๋์ญ์ ์ ํ์ฉํ์ฌ ๊ถ๊ทน์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
MVCC๋ ๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง ๋ช ๊ฐ์ง ๋จ์ ๋ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ฌ๋ฌ ๋ฒ์ ์ ๋ ์ฝ๋ ์ ์ง๋ก ์ธํ ์คํ ๋ฆฌ์ง ์ค๋ฒํค๋ ์ฆ๊ฐ, ์ค๋๋ ๋ฒ์ ์ ์ ๊ฑฐํ๊ธฐ ์ํ ๋ณต์กํ ๊ฐ๋น์ง ์์ง, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ฝ๊ธฐ-์ฐ๊ธฐ ์ถฉ๋์ด ๋ฐ์ํ๊ฑฐ๋ ์ฝ๊ธฐ-์ปค๋ฐ ๋ฐ ์ฝ๊ธฐ-์ปค๋ฐ๋์ง ์์ ๊ฒฉ๋ฆฌ ์์ค ๋์ ์ผ๊ด์ฑ ๋ณด์ฅ์ด ๊ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
PostgreSQL, MySQL(InnoDB ์คํ ๋ฆฌ์ง ์์ง ํฌํจ), Oracle ๋ฐ Microsoft SQL Server(์ค๋ ์ท ๊ฒฉ๋ฆฌ ์์ค ํฌํจ)๋ฅผ ํฌํจํ์ฌ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ฌ๋ฌ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ MVCC(Multiversion Concurrency Control)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
AppMaster ์ ํ๋ซํผ์ ํตํด ๊ฐ๋ฐ์๋ MVCC๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํฌํจํ์ฌ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํํ๊ฒ ์ํธ ์์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. AppMaster ๋์์ฑ ์ ์ด ๋ฐ ์ฑ๋ฅ์ ์ํ MVCC ๊ธฐ๋ฅ์ ์ต๋ํ ํ์ฉํ๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ์จ์ ์ผ๋ก ์ํธ ์์ฉํ ์ ์๋๋ก ์ต์ ํ๋ฅผ ์ ๊ณตํฉ๋๋ค.


