DBMS๋ RDB์ NoSQL๋ง ์๋์?
DBMS๋ RDB์ NoSQL๋ง ์๋์? ๊ด๋ จ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์ดํ RDB)๋ ์ค๋ ์๊ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ์ค์ฌ์ ์๋ฆฌ ์ก๊ณ ์์์ต๋๋ค. ํนํ ๊ฐ๋ ฅํ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ACID ํธ๋์ญ์ ์ ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ค์ผ๋ก ์ผ๊ธฐ์ ์ ํฉํ์ฃ . ๊ทธ๋ฌ๋ ์ธํฐ๋ท๊ณผ ๋ชจ๋ฐ์ผ์ ๊ธ๊ฒฉํ ์ฑ์ฅ์ผ๋ก ๋๊ท๋ชจ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ ์ํฉ์ด ๋์ด๋ฌ์ต๋๋ค. ๊ทธ์ ํจ๊ป RDB์ ํ๊ณ๊ฐ ๋๋ฌ๋๊ธฐ ์์ํ์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธ์ํ ํ์ฅ, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ์์ฑ, ๊ทธ๋ฆฌ๊ณ ๋น์ ํ ๋ฐ์ดํฐ์ ๊ด๋ฆฌ ์๊ตฌ๊ฐ ์ปค์ง๋ฉฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ์์ ๋ถ๋ช ํ ํ๊ณ๋ฅผ ๋ณด์์ฃ .
์ด์ ๋์ํ์ฌ ๋ฑ์ฅํ ๊ฒ์ด ๋ฐ๋ก NoSQL์ ๋๋ค. ๋ค๋ง NoSQL์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฌถ์ฌ ์๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ทธ์ RDB์ ๋์์ด ์๋๋๋ค. ๊ฐ๊ธฐ ๋ค๋ฅธ ํน์ฑ๊ณผ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ์ง ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด๋ผ๊ณ ๋ด์ผ ํ์ฃ . ์ด๋ค ์์คํ ์ ๋น ๋ฐ์ดํฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ ์ ํฉํ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ NoSQL์ด๋ผ๋ ๋จ์ํ ๋ถ๋ฅ๋ฅผ ๋์ด, ์ธ๋ถํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (์ดํ DBMS)์ ์ธ๊ณ๋ฅผ ํ๊ตฌํด ๋ณด๊ณ ์ ํฉ๋๋ค. ๋, ์ดํ ๋ก ๋ค์ํ DBMS๋ฅผ ์ ์ ํ ์ฌ์ฉํ๊ธฐ ์ํด ๊ณ ๋ คํ ๋ด์ฉ ์ญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฑ์ฅํ๋ ์คํํธ์ A์ 5๊ฐ์ง DBMS
์ฌ๊ธฐ DBMS ์ ์ฉ์ด ํ์ํ ์คํํธ์ A๊ฐ ์์ต๋๋ค. ์ด ์คํํธ์ ์ ์์ ๋คํธ์ํฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ณ ์๋๋ฐ์, ๊ธฐ์ ์ด ์ฑ์ฅํ๋ฉฐ ๋ฐ์ดํฐ์ ์๊ณผ ๋ณต์ก๋๊ฐ ์ ์ ์ปค์ง๊ณ ์์ต๋๋ค. ์คํํธ์ A์ ์ฑ์ฅ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ๋ค์ํ DBMS์ ํน์ง๊ณผ ์ด๋ฅผ ์ธ์ ์ด๋ป๊ฒ ํ์ฉํ ์ง ๋ณด๊ฒ ์ต๋๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ์ , ์คํดํ ๋ถ๋ค์ด ํน์ ์์๊น ๋งํ์๋ฉด ์คํํธ์ A์ ์ฌ๋ก๋ ๊ฐ์์ ๋๋ค. ์ฌ๊ธฐ ๋์จ DBMS์ ๋์ ์์๋ ํด๋น ๊ธฐ์ ์ ์ฐ์์ฑ์ด๋ ๋์ด๋์ ๋ฌด๊ดํฉ๋๋ค.
์ด๊ธฐ ๊ฐ๋ฐ ๋จ๊ณ: ํค-๊ฐ DB(Key-Value DB)
A ์คํํธ์ ์ ์ด๊ธฐ ์ ํ์ ๋ณต์กํ์ง ์์ ์ฌ์ฉ์ ํ๋กํ๊ณผ ์น๊ตฌ ๊ด๊ณ๋ฅผ ์ ์ฅํ๋ ๊ฐ๋จํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๋จ๊ณ์์ A ์คํํธ์ ์ ๊ฐ๋ฐ์๋ค์ **ํค-๊ฐ DB(Key-Value DB)**๋ฅผ ์ ํํฉ๋๋ค. Redis, Aerospike์ ๊ฐ์ DBMS๊ฐ ๋ํ์ ์ด์ฃ . ์ด DB๋ ๋งค์ฐ ๋จ์ํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ๊ทผ์ ํ์๋ก ํ๋ ์ํฉ์์ ๋๋ผ์ด ์ฑ๋ฅ์ ๋ฐํํ ์ ์์ต๋๋ค.
ํนํ ํค-๊ฐ DB๋ ๋น ๋ฅธ ์๋์ ๊ฐ๋จํ ๊ตฌ์กฐ ๋๋ถ์ ์ฌ์ฉ์ ์ธ์ ๋ฐ์ดํฐ๋ ์บ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. ๊ทธ๋์ ๊ฐ๋ฐ์๋ค์ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๊ทธ์ธํ ๋๋ง๋ค ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ถ๋ฌ์ค๊ณ , ์ต๊ทผ์ ์กฐํํ ํ๋กํ์ ์บ์ฑํ๋๋ก Redis๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ด๋ฌํ ๋จ์ํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋น ๋ฅธ ํ๋กํ ํ์ดํ๊ณผ ์ด๊ธฐ ์๋น์ค ์ถ์๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ต๋๋ค.
์ ์ฐํ ์ฑ์ฅ: ๋ํ๋จผํธ DB(Document DB)
์ ํ์ ์์ฅ์ ํธ์์ ์ป์ผ๋ฉฐ ์ฑ์ฅํด ๋๊ฐ๋๋ค. ์ฌ์ฉ์ ํ๋กํ์ ๋ ๋ณต์กํด์ก๊ณ , ์ฌ์ฉ์ ์์ฑ ์ฝํ ์ธ ์ ๋ค์ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ์๋ ์๊ฒผ์ต๋๋ค. ์ด์ A ์คํํธ์ ์ ๊ฐ๋ฐ์๋ค์ ์ ์ฐํ ์คํค๋ง๋ฅผ ์ ๊ณตํ๋ MongoDB, ์ฆ **๋ํ๋จผํธ DB(Document DB)**๋ก ์์คํ ์ ์ ํํฉ๋๋ค.
๋ํ๋จผํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ JSON๊ณผ ์ ์ฌํ ๊ตฌ์กฐ์ ๋ฌธ์๋ฅผ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ๋ ๋ฐ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ ๋๋ถ์ ๋น ๋ฅธ ๊ฐ๋ฐ ์๋์ ์คํค๋ง ๋ณ๊ฒฝ์ ์์ ๋ก์์ ๊ฐ์ ธ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ํ๋กํ์ ์๋ก์ด ํ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ํ๋๊ฐ ๋ฐ๋์ด๋, ๋ํ๋จผํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ฌํ ๋ณํ๋ฅผ ์ฝ๊ฒ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ํ, ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒ ์คํํ ์ ์๋ค๋ ์ฅ์ ๋ ๊ฐ์ง๋๋ค. ๊ทธ ๋์ ์ฌ์ฉ์์ ํ๋ ๋ด์ญ ์กฐํ, ๊ฒ์๋ฌผ ๊ฒ์ ๊ธฐ๋ฅ ๋ฑ์ ์์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก A ์คํํธ์ ์ ๋น ๋ฅด๊ฒ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ๋ณํํ๋ ์๊ตฌ์ฌํญ์ ๋์ํ ์ ์์์ต๋๋ค. ์ ํ์ ๋น ๋ฅธ ์คํ๊ณผ ์ฑ์ฅ์ ์ ํฉํ์ฃ .
๋ฐ์ดํฐ๊ฐ ๋ณต์กํด์ง ๋: ๊ทธ๋ํ DB(Graph DB)
์ ํ์ ์ฐ๋ ์ฌ์ฉ์๊ฐ ๋์ด๋๋ฉฐ ์น๊ตฌ ๊ด๊ณ์ ๊ฐ์ ๋ฐ์ดํฐ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ์ต๋๋ค. ์ด์ ๋จ์ํ ๋ฌธ์ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์๋ง์ผ๋ก๋ ๊ด๊ณ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์์ก์ฃ . ๊ทธ๋์ ๋ค์ A ์คํํธ์ ์ ๊ฐ๋ฐ์๋ค์ Neo4j, EdgeDB์ ๊ฐ์ ๊ทธ๋ํ DB๋ฅผ ๋์ ํ๊ธฐ๋ก ๊ฒฐ์ ํฉ๋๋ค.
๊ทธ๋ํ DB๋ ๋ ธ๋์ ์ฃ์ง ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด ๊ด๊ณ๋ฅผ ์ง๊ด์ ์ผ๋ก ์ ์ฅํ๊ณ ํ์ํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ทธ๋์ ํนํ ์์ ๋คํธ์ํฌ์ ๊ฐ์ ๊ด๊ณ ์ค์ฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ๋ฐ์ด๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์น๊ตฌ ์ถ์ฒ ์์คํ ์ด๋ ์ฌ์ฉ์ ๊ฐ์ ์ํธ์์ฉ ํจํด ๋ถ์ ๋ฑ ๋ณต์กํ ๊ด๊ณ๋ฅผ ํ์ํ๊ณ ๋ถ์ํ๋ ์์ ์ ์ ํฉํฉ๋๋ค. ์ด ์์ ์์๋ RDB๋ณด๋ค ์๋ฑํ ๋ฐ์ด๋ ๋ฅ๋ ฅ์ ๋ณด์ฌ ์ฃผ์ฃ .
์ด๋ฒ ๊ทธ๋ํ DB ๋์ ์ผ๋ก A ์คํํธ์ ์ ๋ณต์กํ ์น๊ตฌ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์์ ๋คํธ์ํฌ ๋ถ์์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ ์ ์์์ต๋๋ค. ์ด๋ ๊ณง ์ฌ์ฉ์์ ์ฐธ์ฌ๋๋ฅผ ๋์ด๊ณ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ์ต๋๋ค.
๋๊ท๋ชจ ๋ถ์ฐ ์ฒ๋ฆฌ: ๋ถ์ฐ DB(Distributed DB)
A ์คํํธ์ ์ ๋ค์ ๊ณผ์ ๋ ๊ธ๋ก๋ฒ ์ง์ถ์ ๋๋ค. ์ด์ ์๋น์ค๊ฐ ๊ธ๋ก๋ฒ๋ก ๋์๊ฐ๋ฉด์ ์์ฐ์ค๋ ์ง์ฐ ์๊ฐ๊ณผ ๊ฐ์ฉ์ฑ์ด ์ค์ํ ์์๋ก ๋ ์ฌ๋์ต๋๋ค. ๊ทธ๋์ ๊ฐ๋ฐํ์ ์ฌ๋ฌ ์ง์ญ์ ๊ฑธ์ณ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ์ฌ ์ ์ฅํ ์ ์๋ Spanner, CockroachDB์ ๊ฐ์ **๋ถ์ฐ DB(Distributed DB)**๋ฅผ ๋์ ํ๊ธฐ๋ก ํฉ๋๋ค.
๋ถ์ฐ DB๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๊ฑธ์ณ ์ ์ฅํ๊ธฐ์ ์์คํ ์ ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ๋์ ๋๋ค. ๊ทธ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์ ์ธ๊ณ ์ด๋์์ ์ ์ํด๋ ๋น ๋ฅธ ์๋ต ์๊ฐ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์๋ฒ ์ฅ์ ์์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ผ๋ ์๋น์ค์ ์ฐ์์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ํนํ CockroachDB๋ ๊ธ๋ก๋ฒ ํธ๋์ญ์ ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ์ง์ํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ง์ญ์ ๋ถ์ฐ๋์ด ์๋๋ผ๋ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๋ค๋ ๋ป์ ๋๋ค.
์ด์ A ์คํํธ์ ์ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๊ธ๋ก๋ฒ ์์ฅ์์๋ ๊ฒฝ์๋ ฅ์ ์ ์งํ ์ ์์์ฃ .
์๊ณ์ด ๋ฐ์ดํฐ ๋ถ์: ๋ฉํธ๋ฆญ DB(Metric DB)
์ง๊ธ๊น์ง ์ด๋ฃฌ ๊ฒ์ ๋ฉ์ถ์ง ์๊ณ ๋ ๋์ ์ ํ์ ๋ง๋ค๊ธฐ ์ํด, A ์คํํธ์ ์ ์ฌ์ฉ์์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ฉฐ ๋ถ์ํ๊ณ ์ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ์ ํจ๊ป ๊ฐ๋ฐ์๋ค์ InfluxDB, KairosDB์ ๊ฐ์ **๋ฉํธ๋ฆญ DB(Metric DB)**๋ฅผ ํ์ฉํ๊ธฐ ์์ํฉ๋๋ค.
๋ฉํธ๋ฆญ DB๋ ์๊ฐ์ ๋ฐ๋ผ ๋ณํํ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๋ถ์ํ๋ ๋ฐ ํนํ๋์ด ์์ต๋๋ค. ํนํ ๋์ ์ฐ๊ธฐ ์ฑ๋ฅ๊ณผ ์ฟผ๋ฆฌ ํจ์จ์ฑ์ ์ ๊ณตํ์ฌ, ๋๋์ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ค์๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง๊ณผ ๋ถ์์ ๋งค์ฐ ์ ํฉํ์ฃ . ๊ณง ์ฌ์ฉ์ ํ๋ ๋ก๊ทธ๋ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ ๋ค์, ์๋น์ค์ ์ฑ๋ฅ์ ์ต์ ํํ๊ฑฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์์์ต๋๋ค.
DBMS๋ฅผ ์ ํํ ๋๋ ๋ฌด์์ ์๊ฐํด์ผ ํ ๊น?
์ด์ฒ๋ผ DBMS๋ ์ํฉ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ์ ํํ ๋๋ ์ฌ๋ฌ ๊ฐ์ง ์์๋ฅผ ํจ๊ป ๋น๊ตํ๋ฉฐ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์์ ๋ค๋ฃฌ DBMS์ ์ข ๋ฅ๋ณ ํน์ง์ ๊ธฐ๋ฐ์ผ๋ก DBMS๋ฅผ ๊ณ ๋ฅผ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ์์๋ณด๊ฒ ์ต๋๋ค.
DBMS ์ ํ์ ์ํ 6๊ฐ์ง ๊ณ ๋ ค ์ฌํญ
์ ๊ฐ ๋ค๋ฃฐ 6๊ฐ์ง ๋ด์ฉ์ด DBMS๋ฅผ ์ ํํ ๋ ๋ชจ๋ ์ํฉ์ ๊ณ ๋ คํด์ผ ํ ํฌ์ธํธ๋ ์๋ ์ ์์ต๋๋ค. ๊ทธ๋๋ ๋์ ์ ์ ํ ๋ฒ์ฏค์ ํ์ธํ ์ฒดํฌ๋ฆฌ์คํธ๋ก ๋ด์ฃผ์๋ฉด ์ข๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ์ ๊ตฌ์กฐ: ์ ํ ๋ฐ์ดํฐ vs. ๋น์ ํ ๋ฐ์ดํฐ
RDB๋ ์ ํํ๋ ๋ฐ์ดํฐ, ์ฆ ์คํค๋ง๊ฐ ๋ช ํํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ๊ฐ์ ์ ๊ฐ์ง๋๋ค. ๋ฐ๋ฉด, ์ด๋ฏธ์ง, ๋น๋์ค, JSON ๋ฌธ์ ๋ฑ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ๋ํ๋จผํธ DB๋ NoSQL์ด ๋ ์ ์ฐํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๊ฐ ๋ช ํํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋์ง, ์๋๋ฉด ๋ค์ํ ํํ๋ก ๋ค์ด์ค๋์ง์ ๋ฐ๋ผ ์ ํ์ด ๋ฌ๋ผ์ง๋๋ค.
ํ์ฅ์ฑ: ์์ง ํ์ฅ vs. ์ํ ํ์ฅ
RDB๋ ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์ํ๋ ์์ง ํ์ฅ์ ์ ํฉํฉ๋๋ค. NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ถ์ฐ ์์คํ ์ผ๋ก ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ ์ํ ํ์ฅ์ ๊ฐ์ ์ ๊ฐ์ง๋๋ค. ํํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ฅ์ฑ์ ํ์๋ก ํ๋ ๊ฒฝ์ฐ, ๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ถ์ฐ DB๊ฐ ์ ๋ฆฌํ์ฃ .
์ฑ๋ฅ ์๊ตฌ ์ฌํญ: ์ฝ๊ธฐ vs. ์ฐ๊ธฐ
DBMS์ ๋ฐ๋ผ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ์ฑ๋ฅ ์ญ์ ์ฐจ์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, Cassandra์ ๊ฐ์ ์ผ๋ถ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฐ๊ธฐ ์ฑ๋ฅ์ด ์ฐ์ํ ๋ฐ๋ฉด, Redis๋ ์ฝ๊ธฐ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ๊ธฐ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฃผ๋ก ์ฝ๊ธฐ ์ฑ๋ฅ์ ์๊ตฌํ๋์ง, ์๋๋ฉด ์ฐ๊ธฐ ์ฑ๋ฅ์ด ์ค์ํ์ง ์ญ์ DBMS ์ ํ์ ํต์ฌ์ด ๋ ์ ์์ต๋๋ค.
์ผ๊ด์ฑ ๋ฐ ๊ฐ์ฉ์ฑ ์๊ตฌ: CAP ์ด๋ก
๋ชจ๋ DBMS๋ CAP ์ด๋ก ์ ๋ฐ๋ฆ ๋๋ค. ์ผ๊ด์ฑ(Consistency), ๊ฐ์ฉ์ฑ(Availability), ๋คํธ์ํฌ ๋ถํ ํ์ฉ(Partition Tolerance) ์ค ๋ ๊ฐ์ง๋ฅผ ์ ํํ ์๋ฐ์ ์๋ค๋ ๋ป์ด์ฃ . ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ด์ผ ํ๋ค๋ฉด ์ผ๊ด์ฑ์ด ์ค์ํฉ๋๋ค. ๋ฐ๋ฉด ์๋น์ค๊ฐ ์ฐ์์ฑ์ ๊ฐ์ง๋ ๊ฒ์ด ๋ฌด์๋ณด๋ค ์ค์ํ๋ฉด ๊ฐ์ฉ์ฑ์ด ํต์ฌ์ด ๋๊ฒ ์ฃ . ์ด๋ฅผํ ๋ฉด ๊ธ์ต ์์คํ ์์๋ ์ผ๊ด์ฑ์ด ์ค์ํ์ง๋ง, ์์ ๋คํธ์ํฌ์์๋ ๊ฐ์ฉ์ฑ์ด ๋ ์ค์ํ ์ ์์ต๋๋ค. ์ด์ ๋ฐ๋ผ ์ ํฉํ DBMS๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
ํธ๋์ญ์ ๊ด๋ฆฌ: ACID vs BASE
RDB๋ ACID๋ฅผ ๋ณด์ฅํ๋ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ACID๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ ์์ฑ์ ๋ํ๋ด๋ฉฐ, ์์์ฑ(Atomicity), ์ผ๊ด์ฑ(Consistency), ๊ณ ๋ฆฝ์ฑ(Isolation), ์ง์์ฑ(Durability)์ ๋ณด์ฅํ์ฌ ๋ฐ์ดํฐ์ ์ ๋ขฐ์ฑ์ ์ ์งํ๋ค๋ ๋ป์ ๋๋ค. ๋ฐ๋ฉด ์ผ๋ถ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ฐํ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํด BASE ๋ชจ๋ธ์ ๋ฐ๋ฆ ๋๋ค. BASE๋ ๋ถ์ฐ ์์คํ ์์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ธ๋ฐ์, โBasically Available, Soft state, Eventually consistentโ์ ์ฝ์๋ก, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๋ณด๋ค ๊ฐ์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ ์ฐ์ ์ํ๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฐ ํน์ง์ผ๋ก ๋ณต์กํ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ, RDB๊ฐ ๋ ์ ํฉํฉ๋๋ค.
๊ฐ๋ฐ ๋ฐ ์ด์ ๋ณต์ก์ฑ
๊ฐ DBMS๋ ์๋ก ๋ค๋ฅธ ๊ณ ์ ์ค์ , ์ ์ง๋ณด์ ๋ฐ ์ด์์ ๋ณต์ก์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฐ ๋งํผ ์๋ก์ด DBMS๋ฅผ ๋์ ํ ๊ฒฝ์ฐ, ํ์ ๊ธฐ์ ์ญ๋ ์ญ์ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ด ๋ฉ๋๋ค. ๋, DBMS๋ฅผ ํ์ตํ๊ณ ์ ์งํ๋ ๋ฐ ๋ค์ด๊ฐ ๋น์ฉ๊ณผ ์๊ฐ๋ ํจ๊ป ํ๊ฐํด์ผ ํฉ๋๋ค.
์ฌ๋ฌ DBMS๋ฅผ ํ ๋ฒ์ ์ฌ์ฉํด๋ ๊ด์ฐฎ์๊น?
๋ค๋ง ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์ง ํ ๊ฐ์ง ํน์ง๋ง ์ง๋๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ์ ๋ฐ๋ผ ํ ๊ฐ์ง DBMS๋ก ๋ชจ๋ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์ํค๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ฃ . ์ด๋ด ๋๋ ์ฌ๋ฌ DBMS๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ๋ ์ ํ์ง๊ฐ ๋ฉ๋๋ค.
DBMS๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋ ์ฐ๋ ค
๊ทธ๋ฌ๋ ์ด์ฒ๋ผ DBMS์ ์กฐํฉ์ ์ ํํ๊ธฐ์๋ ๋ช ๊ฐ์ง ์ฐ๋ ค๊ฐ ๋ฐ๋ฆ ๋๋ค.
์ด์ ๋ฐ ์ ์ง ๋ณด์ ๋ณต์ก์ฑ
์ฌ๋ฌ DBMS๋ฅผ ๋์ ํ๋ฉด ๊ฐ ์์คํ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ํ๊ณ ์ ์ง๋ณด์ํด์ผ ํฉ๋๋ค. ์ธํ๋ผ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ด ์ฌ๋ผ๊ฐ๊ฒ ์ฃ . ๋ ๊ฐ๊ฐ DBMS์ ๋ํ ๋ชจ๋ํฐ๋ง, ๋ฐฑ์ , ์ฑ๋ฅ ์ต์ ํ ์์ ์ด ์ถ๊ฐ๋ก ํ์ํฉ๋๋ค. DBMS ํน์ฑ์ ๋ง๋ ์ ๋ฌธ์ ์ธ ์ด์์ ํด์ผ ํ๋ ํ์ ๋ถ๋ด ์ญ์ ์ปค์ง ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์
์ฌ๋ฌ DBMS์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ค ๋ณด๋ฉด ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ด ๋๋์ฑ ์ด๋ ค์์ง๋๋ค. ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ๊ฑฐ๋ ๋๊ธฐํํ ๋ ์ง์ฐ์ด ๋ฐ์ํ ์๋ ์์ฃ . ํนํ ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ์ฌ๊ฐํ๊ฒ ์์ฉํ ์ ์์ต๋๋ค.
ํตํฉ์ ์ด๋ ค์
DBMS๋ ๊ณ ์ ํ ์ฟผ๋ฆฌ ์ธ์ด์ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฌ๋ฌ DBMS๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ ํตํฉ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ณต์กํด์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, RDB์์๋ SQL์ ์ฌ์ฉํ๊ณ , ๋ํ๋จผํธ DB์์๋ JSON ๊ธฐ๋ฐ์ ์ฟผ๋ฆฌ ๋ฌธ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ๋ DBMS์์ ์ฟผ๋ฆฌ ๋ฐ ์ฒ๋ฆฌ ๋ก์ง์ ๊ด๋ฆฌํ๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ๋น์ฉ์ด ๋ฐ์ํ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ๋ถํ ๋ฐ ์ค๋ณต
์ฌ๋ฌ DBMS๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋ฐ์ดํฐ๊ฐ ์๋ก ๋ค๋ฅธ ์์คํ ์ ๋ถ์ฐ๋ ์ ์์ต๋๋ค. ์ด๋ฐ ํ์์ ๊ณง ๋ฐ์ดํฐ์ ์ค๋ณต ์ ์ฅ ๋ฌธ์ ๋ก ์ด์ด์ง๊ธฐ๋ ํฉ๋๋ค. ์๋ฌด๋๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๊ณณ์ ๋ถ์ฐ๋๋ฉด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ด๋ ค์ด ๋ฐ๋ค ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ถ๊ฐ ์์ ์ด ํ์ํด์ง๋๋ค.
๊ทธ๋ผ์๋ DBMS์ ์กฐํฉ์ด ์ ๋ฆฌํ ๋
์ด๋ฐ ์ฐ๋ ค ์ฌํญ์๋ ํน์ ์ํฉ์์๋ DBMS๋ฅผ ์กฐํฉํด ์ฐ๋ ๊ฒ์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ์ํฉ์ ๋ช ๊ฐ์ง ์ ๋ฆฌํด ๋ดค์ต๋๋ค.
์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ์ ์ฒ๋ฆฌํ ๋
์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํ ๋ฐ์ดํฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์ด๋๋ ์ฌ๋ฌ DBMS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฅผํ ๋ฉด ์ฌ์ฉ์ ์ ๋ณด์ ๊ฐ์ ์ ํ ๋ฐ์ดํฐ๋ MySQL ๋ฑ RDB์ ์ ์ฅํ๊ณ , ์ฌ์ฉ์ ํ๋ ๋ก๊ทธ๋ ์ด๋ฏธ์ง, ๋์์ ๊ฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ NoSQL์ด๋ ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง(Object Storage)์ ์ ์ฅํ๋ ๋ฐฉ์์ด์ฃ . ์ด๋ ๊ฒ ๊ตฌ์ฑํ๋ฉด ๊ฐ๊ฐ ๋ฐ์ดํฐ ์ ํ์ ๋ง๋ DBMS์ ์ฅ์ ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
์๋ก ๋ค๋ฅธ ์ฑ๋ฅ ์๊ตฌ ์ฌํญ์ด ์์ ๋
์ฑ๋ฅ์ ๋ํ ์๊ตฌ ์ฌํญ์ ์ด๋ค ๊ธฐ๋ฅ์ ์ฐ๋์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ธ์ ๊ณผ ๊ฐ์ ๊ณ ์ ์บ์๊ฐ ํ์ํ ๊ฒฝ์ฐ Redis๋ฅผ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ถ์์ด ํ์ํ ๊ฒฝ์ฐ Hadoop์ด๋ Spark ๊ฐ์ ๋น ๋ฐ์ดํฐ ์๋ฃจ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ์ฌ๋ฌ DBMS๋ฅผ ๊ฒฐํฉํด ๊ฐ๊ฐ์ ์ฑ๋ฅ ์๊ตฌ ์ฌํญ์ ๋ง์ถ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ์ฉํ๋ฉด, ์์คํ ์ ์ฒด์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
ํ์ฅ์ฑ ๋ฐ ๊ฐ์ฉ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋
๊ธ๋ก๋ฒ ๊ท๋ชจ๋ก ํ์ฅ๋๊ฑฐ๋, ๊ณ ๊ฐ์ฉ์ฑ์ด ์ค์ํ ์๊ธฐ๋ ์ฌ๋ฌ DBMS๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ ๋์ ๋๋ค. ๊ธ๋ก๋ฒ ํ์ฅ์ฑ๊ณผ ๋ถ์ฐ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ๊ฒฝ์ฐ์๋ Cassandra๋ CockroachDB์ ๊ฐ์ ๋ถ์ฐ DB๋ฅผ ์ฌ์ฉํ ์ ์์ฃ . ๊ทธ์ ํจ๊ป ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด Redis๋ฅผ ์บ์ ์์คํ ์ผ๋ก ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ง๋ฆฌ์ ๋ถ์ฐ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ๋์์ ๋ง์กฑ์ํค๋ฉด์๋ ํน์ ๊ธฐ๋ฅ์์ ๋น ๋ฅธ ์๋ต์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค.
๋ณต์กํ ๊ด๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋
๊ทธ๋ํ DB๋ ๊ทธ๋ํ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งค์ฐ ์ ๋ฆฌํฉ๋๋ค. ํนํ ์์ ๋คํธ์ํฌ ์๋น์ค์์๋ ์ฌ์ฉ์ ๊ฐ์ ๊ด๊ณ, ์น๊ตฌ ์ถ์ฒ, ๊ด๊ณ ์ค์ฌ์ ํ์์ด ์ค์ํด ๊ทธ๋ํ DB๋ฅผ ์ฐ๋ ๊ฒ์ด ํจ์ฌ ํจ์จ์ ์ ๋๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉ์ ํ๋กํ์ด๋ ๊ฒ์๋ฌผ ๋ฐ์ดํฐ๋ ๋ํ๋จผํธ DB์ ์ ์ฅํ๊ณ , ์ด๋ฅผ ๊ทธ๋ํ DB์ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐฉ์๋ ์์ฃ . ์ด์ฒ๋ผ ์๋ก ๋ค๋ฅธ DBMS๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ
์ด์ฒ๋ผ DBMS๋ RDB์ NoSQL์ด ์ ๋ถ๊ฐ ์๋๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ์๊ตฌ์ ํ๊ฒฝ์ ๋ง๋ ์ธ๋ถํ๋ ์ ํ์ ์์คํ ์ ํฌํจํ๊ณ ์์ฃ .
์ดํ ๋ก ๋ค์ํ DBMS๋ ํน์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋๋ ๊ฐ์์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋๊น์. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ๋๋ ์ฌ๋ฌ ์ต์ ์ ๊ฒํ ํ๊ณ ์ฐ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ ์ต์ ์ ์์คํ ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ง์น ์คํํธ์ A์ฒ๋ผ ์๋น์ค์ ์ฑ์ฅ๊ณผ ๋ณํ์ ๋ฐ๋ผ ์ ํฉํ DBMS๋ฅผ ์ ์ฐํ๊ฒ ๋์ ํด ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ํจ์จ์ฑ์ ๊ทน๋ํํ ์ ์์ฃ .
๊ทธ๋ฐ ๋งํผ DBMS๊ฐ ์ ๊ณตํ๋ ํน์ฑ๊ณผ ์ฅ์ ์ ์ดํดํ๊ณ ํ์ฉํ๋ ๊ฒ์ด ๋ฐ์ดํฐ ์ํคํ ์ฒ ์ค๊ณ์ ํต์ฌ์ ๋๋ค. ๊ธฐ์ ์ ๋น์ฆ๋์ค์ ๊ตฌ์ฑ์์ ๋ง๋ ํฉ๋ฆฌ์ ์ธ ๊ฒฐ์ ์ ์ด ๊ธ์ด ๋์์ด ๋๋ฉด ์ข๊ฒ ์ต๋๋ค.
์์ฆIT์ ๋ชจ๋ ์ฝํ ์ธ ๋ ์ ์๊ถ๋ฒ์ ๋ณดํธ๋ฅผ ๋ฐ๋ ๋ฐ, ๋ฌด๋จ ์ ์ฌ์ ๋ณต์ฌ, ๋ฐฐํฌ ๋ฑ์ ๊ธํฉ๋๋ค.