NOTE
์๋ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์นดํ ๊ณ ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ๋ฐ ๊ด๋ฆฌ ๋ฅ๋ ฅ์ ํ๊ฐํฉ๋๋ค. RDBMS์ NoSQL์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ ์กฐํํ ์ง์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๋ฅผ ํ์ธํ๋ ค๋ ์๋์ ๋๋ค. ์ ๊ทํ, ์ธ๋ฑ์ค, ํธ๋์ญ์ ๋ฑ์ ๊ฐ๋ ์ ์๊ณ ์๋์ง๋ ์ค๋ฌด์์ ์ค์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฅ๋ ฅ์ผ๋ก ์ด์ด์ง๋๋ค.
๋ต๋ณ์ ํฌํจํด์ผ ํ ํค์๋
- RDB vs NoSQL: ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐจ์ด
- ์ ๊ทํ(Normalization): ๋ฐ์ดํฐ ์ค๋ณต์ ์ต์ํํ์ฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ต์ ํํ๋ ๊ณผ์
- ์ธ๋ฑ์ค(Index): ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ๊ธฐ ์ํ ๊ตฌ์กฐ
- ํธ๋์ญ์ (Transaction): ์ผ๋ จ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ
- ACID ํน์ฑ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ํน์ฑ (์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ)
- ๊ฐ์ธ/ํ ํ๋ก์ ํธ์ ์ ์ฉํด ๋ณด์๊ฑฐ๋ ์ฌ์ฉํ ์ค ์๋ RDB์ ๋ํด ์ด์ผ๊ธฐํด์ฃผ์ธ์.
- RDB์ NoSQL DB์ ์ฐจ์ด์ ์ ์ค๋ช ํด์ฃผ์ธ์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ์ธ๋ฑ์ค๊ฐ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ค๋ช ํด์ฃผ์ธ์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ(Normalization)์ ์ญ์ ๊ทํ(Denormalization)์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
- ํธ๋์ญ์ (Transaction)์ด ๋ฌด์์ด๋ฉฐ, ACID ํน์ฑ์ ์ค๋ช ํด ์ฃผ์ธ์.
1. RDB
๊ฐ์ธ/ํ ํ๋ก์ ํธ์ ์ ์ฉํด ๋ณด์๊ฑฐ๋ ์ฌ์ฉํ ์ค ์๋ RDB์ ๋ํด ์ด์ผ๊ธฐํด์ฃผ์ธ์.
RDB (Relational Database)
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ ์ด๋ธ ํ์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ
์ฃผ์ ํน์ง
- ํ ์ด๋ธ ๊ธฐ๋ฐ ๊ตฌ์กฐ : ํ(row)๊ณผ ์ด(column)๋ก ๊ตฌ์ฑ๋ ํ ํ์
- ์ ๊ทํ : ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ต์ํํ๊ณ , ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง๋ฅผ ์ํด ํ ์ด๋ธ ๋ถ๋ฆฌ ๋ฐ ๊ด๊ณ ์ค์
- SQL
- ๊ด๊ณ : ํ ์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ์ค์ ํ์ฌ ๋ฐ์ดํฐ ์ฐ๊ฒฐ ๊ฐ๋ฅ
- ACID ํน์ฑ
์ฅ์
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง
- ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ์ค๋ณต ์ต์ํ(์ ๊ทํ)
RDBMS
- RDB๋ฅผ ๊ด๋ฆฌํ๋ ์ํํธ์จ์ด
- MySQL, PostgreSQL
MySQL
- ์๋์ ๋จ์์ฑ์ ์ค์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ฌ์ฉ์ด ๊ฐ๋จํจ
- ๋น ๋ฅด๊ณ ๊ฐ๋จํ ์ฝ๊ธฐ ์ค์ฌ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉ
์ด์ปค๋จธ์ค ํ๋ซํผ ๊ฐ๋ฐ์์ MySQL์ ์ฌ์ฉํ ์ด์
- ํ์ ๋๋ถ๋ถ์ด MySQL์ ์ต์ํ์ฌ ๋น ๋ฅด๊ฒ ์์ํ ์ ์์๊ณ ์กฐํ ๊ธฐ๋ฅ์ด ๋ง์ด ์ฌ์ฉ๋๋ ์ด์ปค๋จธ์ค ํ๋ซํผ ํน์ฑ์ ๋จ์ ์กฐํ ์ฑ๋ฅ์ด ๋น ๋ฅธ MySQL์ ์ ํ
PostgreSQL
- ๋๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ํธ๋์ญ์ ์ ๊ฐ๋ ฅ
- ๋จ์ ์ฝ๊ธฐ ์์ ์์ ์ฑ๋ฅ์ด ๋จ์ด์ง
- ์์ ์ฑ๊ณผ ํ์ฅ์ฑ์ด ์ค์ํ๊ฑฐ๋ ๋ณต์กํ ํธ๋์ญ์ ๊ณผ ๋ฐ์ดํฐ ๋ถ์์ด ํ์ํ ์์คํ ์ ์ ํฉ
๋ฌผ๋ฅ ๊ด๋ฆฌ ์์คํ ์์ PostgreSQL์ ์ฌ์ฉํ ์ด์
- MSA๋ก ๊ฐ๋ฐ์ ์งํํ๋ค ๋ณด๋ ๊ฐ ๋ชจ๋ ๊ฐ ๋ฐ์ดํฐ ํต์ ์ ์์ ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ด ์ค์ํ์ฌ ๋ณต์กํ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ ์ ์๋ PostgreSQL ์ ํ
2. RDB์ NoSQL DB
RDB์ NoSQL DB์ ์ฐจ์ด์ ์ ์ค๋ช ํด์ฃผ์ธ์.
RDB
- ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ์ ํํ๋ก ์ ์ฅ
- ๊ฐ ํ ์ด๋ธ์ ๋ช ํํ ์คํค๋ง๋ฅผ ๊ฐ์ง
- ACID๋ฅผ ์๋ฒฝํ ์ง์ํด ํธ๋์ญ์ ์ด ์ค์ํ๊ณ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ํ์์ธ ๊ฒฝ์ฐ ์ ํฉ
- Scale-up(๋ ๊ฐ๋ ฅํ ์๋ฒ๋ก ์ ๊ทธ๋ ์ด๋)์ ์ ํฉ
- ๋ณต์กํ ์กฐ์ธ๊ณผ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ, ์ ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ํฉ
- ํธ๋์ญ์ ๊ณผ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ์ค์ํ ์์คํ (๊ธ์ต, ์ํ, ERP ๋ฑ)
NoSQL DB
- ๋ฐ์ดํฐ๋ฅผ ๋น์ ํ ๋ฐฉ์์ผ๋ก ์ ์ฅ
- ํค-๊ฐ, ๋ฌธ์, ์ด ๋ฑ ์ฌ๋ฌ ์ ํ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ง์
- ์คํค๋ง๊ฐ ์ ์ฐํ๊ฑฐ๋ ์์ด ๋ฐ์ดํฐ๊ตฌ์กฐ๊ฐ ๋ณ๋๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉ
- ์ผ๊ด์ฑ์ด ์ฆ๊ฐ์ ์ผ๋ก ๋ณด์ฅ๋์ง ์์ผ๋ฉฐ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ์ํด ์ผ๊ด์ฑ ๋์ ๊ฐ์ฉ์ฑ์ ์ฐ์ ์
- Scale-out(๋ ธ๋๋ฅผ ์ถ๊ฐํด ํ์ฅ)์ ์ ํฉ
- ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๊ณ ๊ฐ์ฉ์ฑ์ด ํ์ํ ์์คํ ์ ์ ํฉ
- ๋น์ ํ ๋ฐ์ดํฐ๋ ๋ฐ์ ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ํฉ
- ์กฐ์ธ ๋์ ๋ฐ์ดํฐ ์ค๋ณต์ ํ์ฉํด ์ฑ๋ฅ ๊ฐ์
- ๋๊ท๋ชจ ์ฒ๋ฆฌ์ ์ ์ฐ์ฑ์ด ์ค์ํ ์์คํ (์์ ๋คํธ์ํฌ, ์บ์ฑ ๋ฑ)
RDBMS์ NoSQL์ ์ฅ๋จ์ ์ ๋ฌด์์ธ๊ฐ์?
RDBMS๋ ์ ํํ๋ ์คํค๋ง๋ก ์ผ๊ด์ฑ๊ณผ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ์ ์ง๋๋ฉฐ ์์ ํ ํธ๋์ญ์ ์ ๋ณด์ฅํฉ๋๋ค. ํ์ง๋ง ํ์ฅ์ด ์ด๋ ต๊ณ ์คํค๋ง ๋ณ๊ฒฝ์ด ๋ณต์กํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. NoSQL์ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ง๋ง ํธ๋์ญ์ ๋ณด์ฅ์ด ์ฝํ ๋จ์ ์ด ์์ต๋๋ค.
RDB์ NoSQL DB์ ์ฐจ์ด์ ์ ์ค๋ช ํด์ฃผ์ธ์.
RDB์ NoSQL์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์์ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. RDB๋ ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ ํํ๋ก ์ ์ฅํ๋ฉฐ ๊ฐ ํ ์ด๋ธ์ ์ ํํ๋ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ์คํค๋ง๋ฅผ ์ ์ํ๊ณ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ช ํํ ์ค์ ํฉ๋๋ค. ๋ํ ACID ์์น์ ์๊ฒฉํ๊ฒ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ฉฐ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ์์คํ ์ ์ ํฉํฉ๋๋ค. NoSQL DB๋ ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ ํํ๋ json๋ฑ ๋ค์ํ ํํ๋ก ์ ์ฅํ ์ ์์ต๋๋ค. NoSQL์ ์ ์ฐํ ์คํค๋ง๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. ์ผ๊ด์ฑ๋ณด๋ค ๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ์ค์์ํด ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ์ฐ์ฑ์ด ์ค์ํ ์์คํ ์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
3. ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ธ๋ฑ์ค
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ์ธ๋ฑ์ค๊ฐ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ค๋ช ํด์ฃผ์ธ์.
์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๊ฒ์ ์๋ ํฅ์
- ๋น ๋ฅธ ๊ฒ์ ์ง์์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๊ฑฐ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ ์ฅํ์ฌ ์ ์ฒด ํ ์ด๋ธ์ ์ค์บํ์ง ์๊ณ ๋ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์์
- ์ ๋ ฌ ๋ฐ ๊ทธ๋ฃนํ ์ฑ๋ฅ ํฅ์
- ์ ๋ ฌ์ด๋ ๊ทธ๋ฃนํ ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋๋ก ๋์์ค
- JOIN ์ฑ๋ฅ ํฅ์
- JOIN์ฐ์ฐ์ ์ํํ ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ํ ์ด๋ธ์ ๊ฒฐํฉํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ ๋นจ๋ฆฌ ์ฐพ์ ์ ์์ด ์ฑ๋ฅ์ด ํฅ์๋จ
์ธ๋ฑ์ค๊ฐ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ
- ์ฝ๊ธฐ ์ฑ๋ฅ ํฅ์
- ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ๊ฒ์ํ ๋ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ฉด ํ ์ด๋ธ ์ ์ฒด๋ฅผ ์ค์บํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ฒ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์
- ์ฐ๊ธฐ ์ฑ๋ฅ ์ ํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ๊ฐฑ์ , ์ญ์ ํ ๋ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผํ๊ธฐ ๋๋ฌธ์ ์ฐ๊ธฐ ์ฐ์ฐ์ด ๋๋ ค์ง ์ ์์
- ๋์คํฌ ๊ณต๊ฐ ์ฆ๊ฐ
- ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ถ๊ฐ ๋์คํฌ ๊ณต๊ฐ์ด ํ์ํด์ง. ํนํ ๋ณตํฉ ์ธ๋ฑ์ค๋ ํฐ ํ ์ด๋ธ์์ ์ธ๋ฑ์ค๊ฐ ์ฐจ์งํ๋ ๊ณต๊ฐ์ด ๋ง์์ง ์ ์์.
์ธ๋ฑ์ค๋ ์ฝ๊ธฐ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค์ง๋ง ์ฐ๊ธฐ ์ฑ๋ฅ์๋ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์
์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ, ์ฑ๋ฅ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ๊น์?
๋จ๊ธฐ์ ์ธ ์ฑ๋ฅ ๊ฐ์ ์ด๋ ๋์คํฌ ๊ณต๊ฐ ์ ์ฝ์ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง ์ฝ๊ธฐ ์ฑ๋ฅ ์ ํ๋ ์ฐ๊ธฐ ์ฑ๋ฅ์ ์ผ์์ ์ธ ์ ํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ ์ฝ์ , ์ญ์ , ๊ฐฑ์ ์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฐ์ดํธ ํ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ฐ๊ธฐ ์ฑ๋ฅ์ด ํฅ์๋๋ฉฐ ์ธ๋ฑ์ค๊ฐ ์ฐจ์งํ๋ ๋์คํฌ๊ณต๊ฐ์ ํ๋ณดํ ์ ์์ต๋๋ค. ํ์ง๋ง ํด๋น ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์ฟผ๋ฆฌ์ ์กฐํ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค. ๋ํ ์ธ๋ฑ์ค๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํ๊ฑฐ๋ ์์ฃผ ์ฌ์ฉํ์ง ์๋ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ฌ ๋ถํ์ํ ๋์คํฌ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์ง๋ง, ์ธ๋ฑ์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ ํ ์ด๋ธ ์ ๊ธ์ด ์ผ์ด๋ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๊ณ ์ธ๋ฑ์ค ๋ณ๊ฒฝ ํ ํด๋น ์ธ๋ฑ์ค๋ฅผ ๋ค์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ ๋ ฌํ๋ ๋ฐ ์๊ฐ์ด ์์๋ฉ๋๋ค.
4. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ(Normalization)์ ์ญ์ ๊ทํ(Denormalization)
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ(Normalization)์ ์ญ์ ๊ทํ(Denormalization)์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ
- ์ค๋ณต์ ์ต์ํํ๊ณ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํ ์ด๋ธ๋ก ๋๋๋ ๊ณผ์
- ์ ์ง๋ณด์์ ์ฉ์ดํ์ง๋ง ํ ์ด๋ธ ๋ถ๋ฆฌ๋ก ์ธํด JOIN ์ฐ์ฐ์ด ๋ง์์ง๊ณ ์กฐํ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์์
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์ ๊ทํ
- ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ค์ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋๋ก ๊ฒฐํฉํ๋ ๊ณผ์
- ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ํ ํ ์ด๋ธ์ ๋ชจ์์ ์ฟผ๋ฆฌ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ฆ
- ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํ ์ด๋ธ์์ ํ๋์ ํ ์ด๋ธ๋ก ํฉ์น๊ฑฐ๋, ์ค๋ณต๋ฐ์ดํฐ๋ฅผ ์ผ๋ถ๋ก ์ ์ฅํ์ฌ ์กฐ์ธ ์ฐ์ฐ์ ์ค์ด๋๋ก ์ค๊ณ
- ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ํฅ์๋์ง๋ง ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํด ์ ์ฅ ๊ณต๊ฐ์ด ์ฆ๊ฐํ๊ณ ํ ๊ณณ์์ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด์ฑ์๊ฒ ๊ฐฑ์ ํด์ผ ํจ
์ ๊ทํ์ ์ญ์ ๊ทํ์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ค๋ณต์ ์ต์ํํ๊ณ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์ค๋ณต์ ๋ฐฉ์งํ๊ณ , ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ์ญ์ ๊ทํ๋ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ ๊ทํ๋ก ๋ถ๋ฆฌ๋ ํ ์ด๋ธ์ ๋ค์ ํฉ์น๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ผ ์ ์ฅํ๋ ๋ฐฉ์์ ๋๋ค. ์กฐ์ธ ์ฐ์ฐ์ ์ค์ผ ์ ์์ด ์ฝ๊ธฐ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.
์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ํ ์ ์๋ ์ฑ๋ฅ ๋ฌธ์ ๋ ๋ฌด์์ธ๊ฐ์?
์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์กฐ์ธ ์ฐ์ฐ์ด ๋ง์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ก ์ธํด ์กฐํ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์ ๊ทํ ์งํ ํ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ป๊ฒ ๋์ํ์๊ฒ ์ต๋๊น?
๋ง์ฝ ์ ๊ทํ ์งํ ํ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ญ์ ๊ทํ๋ฅผํตํด ์ฝ๊ธฐ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ฑฐ๋ ์์ฃผ ์กฐํ๋๋ ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ์ฌ ์กฐํ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ๋ํ ๋ถํ์ํ ์กฐ์ธ์ด๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ ์บ์ฑ์ ์ด์ฉํด ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์กฐํ๋ฅผ ์ต์ํ ํ ์ ์์ต๋๋ค.
์ ๊ทํ๋ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์ฝ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
์ฌ๋ฌ ๊ฐ์ ์ฝ์ ์์ ์ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ด ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ฝ์ ํ๋ ๋ฐฐ์น ์์ ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ ๊ทํ ์์ค์ ์กฐ์ ํ์ฌ ์ผ๋ถ ํ ์ด๋ธ์ ํฉ์ณ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ํผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ ๋ฌด์์ด ์๋์?
์ ๊ทํ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํ์ฌ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ํ ํ ์ด๋ธ ์ปฌ๋ผ์ Unique ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ๊ฑฐ๋ primary Key๋ฅผ ์ค์ ํ์ฌ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ญ์ ๊ทํ๋ฅผ ๊ณ ๋ คํ ๋, ์ด๋ค ์ ์ ๊ฐ์ฅ ์ค์ํ๊ฒ ๊ณ ๋ คํ๋์?
๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ์ฑ๋ฅ์ ๊ท ํ์ ๊ณ ๋ คํด์ผํฉ๋๋ค. ์ญ์ ๊ทํ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์ํฌ ์ ์์ง๋ง ๊ทธ๋ก ์ธํ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ฉฐ, ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ์ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ๊ณ ์ฝ๊ธฐ ์ฑ๋ฅ์ด ๊ฐ์ ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
5. ํธ๋์ญ์ , ACID
ํธ๋์ญ์ (Transaction)์ด ๋ฌด์์ด๋ฉฐ, ACID ํน์ฑ์ ์ค๋ช ํด ์ฃผ์ธ์.
ํธ๋์ญ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ผ๋ จ์ ์์ ๋ค์ด ํ๋์ ๋จ์๋ก ์ฒ๋ฆฌ๋๋๋ก ๋ณด์ฅํ๋ ์์ ์ ์งํฉ
- ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ์ญํ
์์์ฑ
- ํธ๋์ญ์ ๋ด์ ๋ชจ๋ ์์ ์ด ์์ ํ ์ํ๋๊ฑฐ๋ ์ ํ ์ํ๋์ง ์์์ผ ํจ
- ํธ๋์ญ์ ๋ด ์ผ๋ถ ์์ ์ด ์คํจํ๋ฉด ๊ทธ ์ด์ ๊น์ง์ ์์ ๋ ๋ชจ๋ ์ทจ์๋์ด์ผ ํ๋ฉฐ ๋ฐ์ดํฐ๋ ํธ๋์ญ์ ์์ ์ ์ํ๋ก ๋กค๋ฐฑ๋์ด์ผ ํจ
์ผ๊ด์ฑ
- ํธ๋์ญ์ ์ด ์๋ฃ ํ์ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํด์ผํ๋ค๋ ํน์ฑ
- ํธ๋์ญ์ ์คํ ์ ํ๋ก ๊ท์น๊ณผ ์ ์ฝ์กฐ๊ฑด์ด ๋ชจ๋ ์ง์ผ์ ธ์ผ ํจ
๊ฒฉ๋ฆฌ์ฑ
- ๋์์ ์คํ๋๋ ํธ๋์ญ์ ๋ค์ด ์๋ก ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ๋ณด์ฅํ๋ ํน์ฑ
- ํธ๋์ญ์ ๊ฐ์ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ์ผ๊ด์ฑ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํจ
์ง์์ฑ
- ํธ๋์ญ์ ์ฑ๊ณต ํ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋์ด์ผ ํ๋ค๋ ํน์ง
- ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ ์์ค๋์ง ์๊ณ ์ง์์ ์ผ๋ก ์ ์ฅ
ํธ๋์ญ์ ์ด ์คํจํ์ ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ๋์?
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ACID์ ์์์ฑ์ ๋ณด์ฅํ๋ฉฐ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํฉ๋๋ค. ํธ๋์ญ์ ์คํจ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด์ ์ํ๋ก ๋์๊ฐ๊ธฐ ์ํด ๋กค๋ฐฑ์ ์ํํฉ๋๋ค. ๋กค๋ฐฑ์ ํธ๋์ญ์ ์ด ์ํํ ๋ชจ๋ ๋ณ๊ฒฝ ์์ ์ ์ทจ์ํ๊ณ ํธ๋์ญ์ ์ด ์์๋๊ธฐ ์ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํฉ๋๋ค.
ํธ๋์ญ์ ์ด ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
ํธ๋์ญ์ ์ ์ผ๊ด์ฑ์ ACID์ ์ผ๊ด์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํค๋ณธํค, ์ธ๋ํค ๋ฑ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํฉ๋๋ค. ๋ง์ฝ ์ค๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋กค๋ฐฑํ์ฌ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํธ๋์ญ์ ์ด ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๊ฐ ๋๋์?
์์คํ ์ฅ์ ๋ฑ์ผ๋ก ํธ๋์ญ์ ์ด ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์์คํ ์ด ๋ณต๊ตฌ๋ ๋ ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ์ด์ฉํด ์๋ฃ๋์ง ์์ ํธ๋์ญ์ ์ ์๋ณํ๊ณ ์ด๋ฅผ ๋กค๋ฐฑํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฅ์ ๋ฐ์ ์ ์ผ๋ก ๋๋๋ฆฝ๋๋ค.
Feedback
- ์ข์๋ ์ : ACID ํน์ฑ, RDB์ NoSQL DB์ ์ฐจ์ด์ ์ ๋ํด ์ ๋งํ๋ค.
- ๊ฐ์ ํ ์
- ์ ์ฒด์ ์ผ๋ก ๋ต๋ณ์ด ๋จ์ํ๋ค โ ๋ค์ํ ๋ต๋ณ์ด ๋์ค์ง ์๊ณ ๋จ๋ตํ์ผ๋ก ๋งํ๋ค. ์) ์ธ๋ฑ์ค์ ์ฑ๋ฅ์ด ๋ฏธ์น๋ ์ํฅ์ ๋จ์ ์ ๋ํด์๋ง ๋งํ๋ค.
- ํธ๋์ญ์ ์ ๊ฐ๋ ์ ์๋ชป ๋งํ๋ค. ๊ฐ๋ ์ด ์ ์๊ฐ ์ ํํ์ง ์์ ๋๊ฐ ์๋ค.