NoSQL์ด๋?
์ผ๋ช "SQL๋ง์ ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค"
ํ ํ์์ด ์๋๋ฉฐ, ๊ด๊ณํ ํ ์ด๋ธ๊ณผ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
NoSQL์ Not Only SQL์ ์ฝ์๋ก ๊ธฐ์กด RDBMs ํํ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ค๋ฅธ ํํ์ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์ ์ ์๋ฏธํ๋ฉฐ, ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ ์ฅ์์ ์๋ก์ด ํํ๋ก, ์ํ์ ํ์ฅ์ฑ์ ๊ฐ๊ณ ์๋ค. ๋ฌธ์, ๊ทธ๋ํ, ํค ๊ฐ, ์ธ ๋ฉ๋ชจ๋ฆฌ, ๊ฒ์์ ํฌํจํด ๋ค์ํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค. RDBMS๊ฐ ํด๋ผ์ด์ธํธ/์๋ฒ ํ๊ฒฝ์ ๋ง๋ ๋ฐ์ดํฐ ์ ์ฅ๊ธฐ์ ์ด๋ผ๋ฉด, NoSQL์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋ง๋ ์ ์ฅ ๊ธฐ์ ์ด๋ค.
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ด์
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํ์ฌ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋น๋กฏํด ๊ณ ์ฑ๋ฅ์ ๋งค์ฐ ๊ธฐ๋ฅ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์๋ก ํ๋ ๋ชจ๋ฐ์ผ, ์น์ด๋ ๊ฒ์ด๋ฐ๊ณผ ๊ฐ์ ๋ค์ํ ํ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๋ค.
- ์ ์ฐ์ฑ: NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฐํ ์คํค๋ง๋ฅผ ์ ๊ณตํ์ฌ, ๋ณด๋ค ๋น ๋ฅด๊ณ ๋ฐ๋ณต์ ์ธ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค. ์ด ๊ฐ์ ์ ์ฐํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ์ ํ ๋ฐ ๋ฐ์ดํฐ์ ์ด์์ ์ผ๋ก ๋ง๋ค์ด์ค๋ค.
- ํ์ฅ์ฑ: NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ๊ฐ์ ๊ฐ๋ ฅํ ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ ๋์ ๋ถ์ฐํ ํ๋์จ์ด ํด๋ฌ์คํฐ๋ฅผ ์ด์ฉํด ํ์ฅํ๋๋ก ์ค๊ณ๋์๋ค. ์ผ๋ถ ํด๋ผ์ฐ๋ ์ ๊ณต์๋ค์ ์์ ๊ด๋ฆฌํ ์๋น์ค๋ก์ ์ด๋ฐ ์ด์ ์์ ์ ๋ณด์ด์ง ์๊ฒ ์ฒ๋ฆฌํ๋ค.
- ๊ณ ์ฑ๋ฅ: NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํน์ ๋ฐ์ดํฐ ๋ชจ๋ธ(๋ฌธ์, ํค ๊ฐ, ๊ทธ๋ํ ๋ฑ) ๋ฐ ์์ธ์ค ํจํด์ ๋ํด ์ต์ ํ๋์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํด ์ ์ฌํ ๊ธฐ๋ฅ์ ์ถฉ์กฑํ๋ ค ํ ๋๋ณด๋ค ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ป๊ฒ ํด์ค๋ค.
- ๊ณ ๊ธฐ๋ฅ์ฑ: NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ง์ถ์ด ํน๋ณํ ๊ตฌ์ถ๋ ๋ฐ์ด๋ ๊ธฐ๋ฅ์ API์ ๋ฐ์ดํฐ ์ ํ์ ์ ๊ณตํ๋ค.
SQL ์ฅ์
๋ช ํํ๊ฒ ์ ์๋ ์คํค๋ง, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ๊ด๊ณ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ด ํ๋ฒ๋ง ์ ์ฅ
SQL ๋จ์
๋ ์ ์ฐํจ. ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ์ฌ์ ์ ๊ณํํ๊ณ ์๋ ค์ผ ํจ. (๋์ค์ ์์ ํ๊ธฐ ํ๋ฌ)๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์ด์ ์กฐ์ธ๋ฌธ์ด ๋ง์ ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง ์ ์์๋์ฒด๋ก ์์ง์ ํ์ฅ๋ง ๊ฐ๋ฅํจ
NoSQL ์ฅ์
์คํค๋ง๊ฐ ์์ด์ ์ ์ฐํจ. ์ธ์ ๋ ์ง ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ ํ๊ณ ์๋ก์ด ํ๋ ์ถ๊ฐ ๊ฐ๋ฅ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์๋ก ํ๋ ํ์์ผ๋ก ์ ์ฅ๋จ. ๋ฐ์ดํฐ ์ฝ์ด์ค๋ ์๋ ๋นจ๋ผ์ง์์ง ๋ฐ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์์ํค๋ ๋ชจ๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ
NoSQL ๋จ์
์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ ๋ฏธ๋ฃจ๊ฒ ๋ ์ ์์๋ฐ์ดํฐ ์ค๋ณต์ ๊ณ์ ์ ๋ฐ์ดํธ ํด์ผ ํจ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ปฌ๋ ์ ์ ์ค๋ณต๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ ๋ชจ๋ ์ปฌ๋ ์ ์์ ์ํํด์ผ ํจ (SQL์์๋ ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ํ๋ฒ๋ง ์ํ์ด ๊ฐ๋ฅ)
NoSQL์ ํน์ง
- NoSQL์ RDBMS์๋ ๋ฌ๋ฆฌ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์๋๋ค.
- ๊ฐ์ฅ ํฐ ํน์ง ์ค ํ๋๋ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ธ RDBMS๊ฐ ๋ฐ์ดํฐ์ ๊ด๊ณ๋ฅผ Foreign Key ๋ฑ์ผ๋ก ์ ์ํ๊ณ ์ด๋ฅผ ์ด์ฉํด Join ๋ฑ์ ๊ด๊ณํ ์ฐ์ฐ์ ํ๋ค๊ณ ํ๋ฉด, NoSQL์ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์๋๋ค. ๋ฐ์ดํฐ ํ ์ด๋ธ์ ๊ทธ๋ฅ ํ๋์ ํ ์ด๋ธ์ด๋ฉฐ ๊ฐ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์๊ณ ์ผ๋ฐ์ ์ผ๋ก ํ ์ด๋ธ ๊ฐ์ Join๋ ๋ถ๊ฐ๋ฅํ๋ค.
- RDBMS์ ๋นํด ํจ์ฌ ๋ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
- RDBMS์ ๋ณต์ก๋์ ์ฉ๋์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋ฑ์ฅํ ๋งํผ ํํ๋ฐ์ดํธ๊ธ์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
- ๋ถ์ฐํ ๊ตฌ์กฐ์ด๋ค.
- NoSQL์ ๊ธฐ์กด RDBMS์๋ ๋ค๋ฅด๊ฒ ํ๋์ ๊ณ ์ฑ๋ฅ ๋จธ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ์ผ๋ฐ์ ์ธ ์๋ฒ ์์ญ ๋๋ฅผ ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. ์ฆ ๋ถ์ฐํ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋์ ์๋ฒ์ ๋ถ์ฐํด ์ ์ฅํ๊ณ ๋ถ์ฐ ์์ ๋ฐ์ดํฐ๋ฅผ ์ํธ ๋ณต์ ํด ํน์ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋์๋ ๋ฐ์ดํฐ ์ ์ค์ด๋ ์๋น์ค ์ค์ง๊ฐ ์๋ ๊ตฌ์กฐ์ ํํ๋ฅผ ๊ฐ์ง๋ค.
- ๊ณ ์ ๋์ง ์์ ํ
์ด๋ธ ์คํค๋ง๋ฅผ ๊ฐ๋๋ค.
- RDBMS์๋ ๋ค๋ฅด๊ฒ ํ ์ด๋ธ์ ์คํค๋ง๊ฐ ์ ๋์ ์ด๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ผ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ด๋ฆ๊ณผ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ๋ ๊ฒ์ด ํ์ฉ๋๋ค.
- ์คํค๋ง๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ๊ดํ ์ ๋ฐ์ ์ธ ๋ช ์ธ๋ฅผ ๊ธฐ์ ํ ๋ฉํ๋ฐ์ดํฐ์ ์งํฉ์ด๋ค.
CAP ์ด๋ก
1. ์ผ๊ด์ฑ(Consistency)
์ผ๊ด์ฑ์ ๋์์ฑ ๋๋ ๋์ผ์ฑ์ด๋ผ๊ณ ๋ ํ๋ฉฐ ๋ค์ค ํด๋ผ์ด์ธํธ์์ ๊ฐ์ ์๊ฐ์ ์กฐํํ๋ ๋ฐ์ดํฐ๋ ํญ์ ๋์ผํ ๋ฐ์ดํฐ์์ ๋ณด์ฆํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๊ฒ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ง์ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ด์ง๋ง ์ผ๊ด์ฑ์ ์ง์ํ์ง ์๋ NoSQL ์ ์ฌ์ฉํ๋ค๋ฉด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ๋์จํ๊ฒ ์ฒ๋ฆฌ๋์ด ๋์ผํ ๋ฐ์ดํฐ๊ฐ ๋ํ๋์ง ์์ ์ ์๋ค. ๋์จํ๊ฒ ์ฒ๋ฆฌ๋๋ค๋ ๊ฒ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ ธ๋์ ์ ํํ๋ ๊ฒ์ ๋งํ๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ต์ข ์ ์ผ๋ก ์ผ๊ด์ฑ์ด ์ ์ง๋๋ค๊ณ ํ์ฌ ์ต์ข ์ผ๊ด์ฑ ๋๋ ๊ถ๊ทน์ ์ผ๊ด์ฑ์ ์ง์ํ๋ค๊ณ ํ๋ค.
๊ฐ NoSQL ๋ค์ ๋ถ์ฐ ๋ ธ๋ ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํด์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ์ฒซ๋ฒ์งธ๋ก ๋ฐ์ดํฐ์ ์ ์ฅ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ์๋ตํ๊ธฐ ์ ์ ๋ชจ๋ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋๊ธฐ์ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ๋งํผ ๋๋ฆฐ ์๋ต์๊ฐ์ ๋ณด์ด์ง๋ง ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๋ค. ๋๋ฒ์งธ๋ก ๋ฉ๋ชจ๋ฆฌ๋ ์์ ํ์ผ์ ๊ธฐ๋กํ๊ณ ํด๋ผ์ด์ธํธ์ ๋จผ์ ์๋ตํ ๋ค์, ํน์ ์ด๋ฒคํธ ๋๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ ธ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๋ ๋น๋๊ธฐ์ ๋ฐฉ๋ฒ์ด ์๋ค. ๋น ๋ฅธ ์๋ต์๊ฐ์ ๋ณด์ธ๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ฐ๊ธฐ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ์์ค๋ ์ ์๋ค.
2. ๊ฐ์ฉ์ฑ(Availability)
๊ฐ์ฉ์ฑ์ด๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ฒญ์ ๋ํ์ฌ ํญ์ ์๋ต์ด ๊ฐ๋ฅํด์ผ ํจ์ ๋ณด์ฆํ๋ ๊ฒ์ด๋ฉฐ ๋ด๊ณ ์ฅ์ฑ์ด๋ผ๊ณ ๋ ํ๋ค. ๋ด๊ณ ์ฅ์ฑ์ ๊ฐ์ง NoSQL ์ ํด๋ฌ์คํฐ ๋ด์์ ๋ช ๊ฐ์ ๋ ธ๋๊ฐ ๋ง๊ฐ์ง๋๋ผ๋ ์ ์์ ์ธ ์๋น์ค๊ฐ ๊ฐ๋ฅํ๋ค.
๋ช๋ช NoSQL ์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ณต์ (Replication)์ ์ฌ์ฉํ๋ค. ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ค ๋ ธ๋์ ์ค๋ณต ์ ์ฅํ์ฌ ๊ทธ ์ค ๋ช ๋์ ๋ ธ๋๊ฐ ๊ณ ์ฅ๋๋ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ฐ์ดํฐ ์ค๋ณต ์ ์ฅ ๋ฐฉ๋ฒ์๋ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์ ์ฅ์๋ฅผ ํ๋ ๋ ์์ฑํ๋ Master-Slave ๋ณต์ ๋ฐฉ๋ฒ๊ณผ ๋ฐ์ดํฐ ๋จ์๋ก ์ค๋ณต ์ ์ฅํ๋ Peer-to-Peer ๋ณต์ ๋ฐฉ๋ฒ์ด ์๋ค.
3. ๋คํธ์ํฌ ๋ถํ ํ์ฉ์ฑ(Partition tolerance)
๋ถํ ํ์ฉ์ฑ์ด๋ ์ง์ญ์ ์ผ๋ก ๋ถํ ๋ ๋คํธ์ํฌ ํ๊ฒฝ์์ ๋์ํ๋ ์์คํ ์์ ๋ ์ง์ญ ๊ฐ์ ๋คํธ์ํฌ๊ฐ ๋จ์ ๋๊ฑฐ๋ ๋คํธ์ํฌ ๋ฐ์ดํฐ์ ์ ์ค์ด ์ผ์ด๋๋๋ผ๋ ๊ฐ ์ง์ญ ๋ด์ ์์คํ ์ ์ ์์ ์ผ๋ก ๋์ํด์ผ ํจ์ ์๋ฏธํ๋ค.
NoSQL์ ์ข ๋ฅ
- Key-Value DB
- Key์ Value์ ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์ ํ์ผ๋ก์จ Amazon์ Dynamo Paper์์ ์ ๋๋์๋ค. Riak, Vodemort, Tokyo ๋ฑ์ ์ ํ์ด ์๋ ค์ ธ ์๋ค.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ NoSQL ์ด๋ฉฐ ํค ํ๋๋ก ๋ฐ์ดํฐ ํ๋๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ ์ ์๋ ๋จ์ผ ํค-๊ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. ๋จ์ํ ์ ์ฅ๊ตฌ์กฐ๋ก ์ธํ์ฌ ๋ณต์กํ ์กฐํ ์ฐ์ฐ์ ์ง์ํ์ง ์๋๋ค. ๋ํ ๊ณ ์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ์ ์ต์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ฌ์ฉ์์ ํ๋กํ ์ ๋ณด, ์น ์๋ฒ ํด๋ฌ์คํฐ๋ฅผ ์ํ ์ธ์ ์ ๋ณด, ์ฅ๋ฐ๊ตฌ๋ ์ ๋ณด, URL ๋จ์ถ ์ ๋ณด ์ ์ฅ ๋ฑ์ ์ฌ์ฉํ๋ค. ํ๋์ ์๋น์ค ์์ฒญ์ ๋ค์์ ๋ฐ์ดํฐ ์กฐํ ๋ฐ ์์ ์ฐ์ฐ์ด ๋ฐ์ํ๋ฉด ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ์ฌ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ณด์ฅํ ์ ์๋ค.
ex) Redis
- Wide Column DB
- Big Table DB๋ผ๊ณ ๋ ํ๋ฉฐ, Google์ BigTable Paper์์ ์ ๋๋์๋ค. Column Family ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ ์๊ณ , HBase, Cassandra, Hypertable์ด ์ด์ ํด๋น๋๋ค.
ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ์ปฌ๋ผ ์ด๋ฆ๊ณผ ์ปฌ๋ผ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ๋ค. ๋ชจ๋ ์ปฌ๋ผ์ ํญ์ ํ์ ์คํฌํ ๊ฐ๊ณผ ํจ๊ป ์ ์ฅ๋๋ค.
๊ตฌ๊ธ์ ๋น ํ ์ด๋ธ์ด ๋ํ์ ์ธ ์๋ก ์ฐจํ ์ปฌ๋ผํ NoSQL ์ ๋น ํ ์ด๋ธ์ ์ํฅ์ ๋ฐ์๋ค. ์ด๋ฌํ ์ด์ ๋ก Row key, Column Key, Column Family ๊ฐ์ ๋น ํ ์ด๋ธ ๊ฐ๋ ์ด ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ค. ์ ์ฅ์ ๊ธฐ๋ณธ ๋จ์๋ ์ปฌ๋ผ์ผ๋ก ์ปฌ๋ผ์ ์ปฌ๋ผ ์ด๋ฆ๊ณผ ์ปฌ๋ผ ๊ฐ, ํ์์คํฌํ๋ก ๊ตฌ์ฑ๋๋ค. ์ด๋ฌํ ์ปฌ๋ผ๋ค์ ์งํฉ์ด ๋ก์ฐ(Row)์ด๋ฉฐ, ๋ก์ฐํค(Row key)๋ ๊ฐ ๋ก์ฐ๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ๋ ๊ฐ์ด๋ค. ์ด๋ฌํ ๋ก์ฐ๋ค์ ์งํฉ์ ํค ์คํ์ด์ค(Key Space)๊ฐ ๋๋ค.
๋๋ถ๋ถ์ ์ปฌ๋ผ ๋ชจ๋ธ NoSQL ์ ์ฐ๊ธฐ์ ์ฝ๊ธฐ ์ค์ ์ฐ๊ธฐ์ ๋ ํนํ๋์ด ์๋ค. ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ปค๋ฐ๋ก๊ทธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ํ ์๋ตํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์๋ต์๋๋ฅผ ์ ๊ณตํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฝ๊ธฐ ์ฐ์ฐ ๋๋น ์ฐ๊ธฐ ์ฐ์ฐ์ด ๋ง์ ์๋น์ค๋ ๋น ๋ฅธ ์๊ฐ ์์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ณ ์กฐํํ๋ ์๋น์ค๋ฅผ ๊ตฌํํ ๋ ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค. ์ฑํ ๋ด์ฉ ์ ์ฅ, ์ค์๊ฐ ๋ถ์์ ์ํ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ฑ์ ์๋น์ค ๊ตฌํ์ ์ ํฉํ๋ค.
- KDoument DB
- Lotus Notes์์ ์ ๋๋์์ผ๋ฉฐ, JSON, XML๊ณผ ๊ฐ์ Collection ๋ฐ์ดํฐ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ฑํํ๊ณ ์๋ค. Mongo DB, Cough DB๊ฐ ์ด ์ข ๋ฅ์ ํด๋น๋๋ค.
ํค-๊ฐ ๋ชจ๋ธ์ ๊ฐ๋ ์ ์ผ๋ก ํ์ฅํ ๊ตฌ์กฐ๋ก ํ๋์ ํค์ ํ๋์ ๊ตฌ์กฐํ๋ ๋ฌธ์๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ๋ค. ๋ ผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ๊ณผ ์กฐํ ๋ฐฉ๋ฒ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฌํ๋ค. ํค๋ ๋ฌธ์์ ๋ํ ID ๋ก ํํ๋๋ค. ๋ํ ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์ปฌ๋ ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ ๋ฌธ์ ์ ์ฅ๊ณผ ๋์์ ๋ฌธ์ ID ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค. ๋ฌธ์ ID ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ O(1) ์๊ฐ ์์ ๋ฌธ์๋ฅผ ์กฐํํ ์ ์๋ค.
๋๋ถ๋ถ์ ๋ฌธ์ ๋ชจ๋ธ NoSQL ์ B ํธ๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ 2 ์ฐจ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค. B ํธ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ์ปค์ง์๋ก ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ์ญ์ ํ ๋ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ์ ๋น์จ์ด 7:3 ์ ๋์ผ ๋ ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค. ์ค์ ์ง์ค์ ๋ก๊ทธ ์ ์ฅ, ํ์๋ผ์ธ ์ ์ฅ, ํต๊ณ ์ ๋ณด ์ ์ฅ ๋ฑ์ ์ฌ์ฉ๋๋ค. ex) MongoDB
- Graph DB
- Euler & Graph Theory์์ ์ ๋ํ DB์ด๋ฉฐ, Nodes, Relationship, Key-Value ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฑ์ฉํ๊ณ ์๋ค. Neo4J ๋ฑ์ ์ ํ์ด ์๋ค.
References.
'๐ฅ > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] SQL Injection (0) | 2021.10.13 |
---|---|
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ํธ๋์ญ์ Transaction ์ด๋ (0) | 2021.08.25 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์ ๊ทํ์ ๋ํด์ (0) | 2021.08.18 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] Index๋ ๋ฌด์์ธ๊ฐ (0) | 2021.08.11 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ์ฑ๋ฅ (0) | 2021.08.04 |