์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
๋จ์ด ๋ป ๊ทธ ์์ฒด๋ฅผ ๋ฐ์ง์๋ฉด "Not only SQL"๋ก, SQL๋ง์ ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(DBMS)์ ์ง์นญํ๋ ๋จ์ด์ด๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์๋ฏธ๊ฐ ์๋, ์ฌ๋ฌ ์ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์กฐ์งํ๋ ๋ฐฉ๋ฒ์๋ ๋ฆฌ์คํธ, ํด์ ํ ์ด๋ธ, ํธ๋ฆฌ, ๊ทธ๋ํ ๋ฑ์ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์๊ณ ๊ฐ๊ฐ์ ์ฅ์ ๊ณผ ๋จ์ ์ด ๋ช ํํ๊ธฐ ๋๋ฌธ์ ๋จ์ํ NoSQL์ด๋ผ๊ณ ๋ง ํด์๋ ๋๋ฌด ๋ฌ๊ตฌ๋ฆ ์ก๋ ์๊ธฐ๊ฐ ๋๋ค. NoSQL์ด๋ผ๋ ๋จ์ด๋ RDBMS๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ ์ ์ธ ์ง์๋ฅผ ์ฐจ์งํ๊ณ ์๋ ํ์ฌ ์ํฉ์ ๋ฐ๋ฐํ๋ ์ ์ ์ ๋ด๊ณ ์๋ค.
๋ฐ์ดํฐ๋ฅผ ์กฐ์งํ๋ ๋ฐฉ๋ฒ์๋ ๋ฆฌ์คํธ, ํด์ ํ ์ด๋ธ, ํธ๋ฆฌ, ๊ทธ๋ํ ๋ฑ์ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์๊ณ ๊ฐ๊ฐ์ ์ฅ์ ๊ณผ ๋จ์ ์ด ๋ช ํํ๊ธฐ ๋๋ฌธ์ ๋จ์ํ NoSQL์ด๋ผ๊ณ ๋ง ํด์๋ ๋๋ฌด ๋ฌ๊ตฌ๋ฆ ์ก๋ ์๊ธฐ๊ฐ ๋๋ค. NoSQL์ด๋ผ๋ ๋จ์ด๋ RDBMS๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ ์ ์ธ ์ง์๋ฅผ ์ฐจ์งํ๊ณ ์๋ ํ์ฌ ์ํฉ์ ๋ฐ๋ฐํ๋ ์ ์ ์ ๋ด๊ณ ์๋ค.
2. ์ ์[ํธ์ง]
โNot Only SQLโ : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์๋ SQL ์ธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ค๋ ์๋ค.
NoSQL์ด๋ผ๊ณ ํ๋ ๋ง์ No 'English'๋ผ๊ณ ํ๋ ๋ง๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ธ์์๋ ์์ด ๋ง๊ณ ๋ ์๋ง์ ์ธ์ด๊ฐ ์กด์ฌํ๋ค. MongoDB์์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์ธ์ด์ CouchDB์์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ ์๋ก ์ ํ ๋ค๋ฅด๋ค. ๊ทธ๋ผ์๋ ์ด ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ ๊ฐ์ NoSQL ์นดํ ๊ณ ๋ฆฌ์ ์ํ๋ค. ์ด์จ๊ฑฐ๋ SQL์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ NoSQL์ด No RDBMS๋ฅผ ์๋ฏธํ์ง๋ ์๋๋ค. BerkeleyDB๊ฐ์ ์์ธ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ No RDBMS๊ฐ NoSQL์ธ ๊ฒ๋ ์๋๋ค. SQLํธํ ๋ ์ด์ด๋ฅผ ์ ๊ณตํ๋ KV-store๋ผ๋ ์์ธ๊ฐ ์ญ์ ์กด์ฌํ๋ค. ๋ฌผ๋ก KV-store์ ํน์ง์ range query๋ฅผ where์ ์ ๋ฃ์ ์ ์์ผ๋ฏ๋ก ์์ ํ SQL์ ๋ชป ๋๊ณ SQL์ ๋ถ๋ถ์งํฉ ์ ๋๋ฅผ ์ ๊ณตํ๋ค.
์ฌ์ค ์์ง๊น์ง NoSQL์ ๋ด๋ ค์ง ๊ตฌ์ฒด์ ์ธ ์ ์๋ ์๋ค. ํ์ง๋ง NoSQL์ด๋ผ ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์ ๋์ฒด๋ก ๋ค์๊ณผ ๊ฐ์ ๊ณตํต์ ์ธ ์ฑํฅ์ ๋ณด์ธ๋ค.
NoSQL์ด๋ผ๊ณ ํ๋ ๋ง์ No 'English'๋ผ๊ณ ํ๋ ๋ง๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ธ์์๋ ์์ด ๋ง๊ณ ๋ ์๋ง์ ์ธ์ด๊ฐ ์กด์ฌํ๋ค. MongoDB์์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์ธ์ด์ CouchDB์์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ ์๋ก ์ ํ ๋ค๋ฅด๋ค. ๊ทธ๋ผ์๋ ์ด ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ ๊ฐ์ NoSQL ์นดํ ๊ณ ๋ฆฌ์ ์ํ๋ค. ์ด์จ๊ฑฐ๋ SQL์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ NoSQL์ด No RDBMS๋ฅผ ์๋ฏธํ์ง๋ ์๋๋ค. BerkeleyDB๊ฐ์ ์์ธ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ No RDBMS๊ฐ NoSQL์ธ ๊ฒ๋ ์๋๋ค. SQLํธํ ๋ ์ด์ด๋ฅผ ์ ๊ณตํ๋ KV-store๋ผ๋ ์์ธ๊ฐ ์ญ์ ์กด์ฌํ๋ค. ๋ฌผ๋ก KV-store์ ํน์ง์ range query๋ฅผ where์ ์ ๋ฃ์ ์ ์์ผ๋ฏ๋ก ์์ ํ SQL์ ๋ชป ๋๊ณ SQL์ ๋ถ๋ถ์งํฉ ์ ๋๋ฅผ ์ ๊ณตํ๋ค.
์ฌ์ค ์์ง๊น์ง NoSQL์ ๋ด๋ ค์ง ๊ตฌ์ฒด์ ์ธ ์ ์๋ ์๋ค. ํ์ง๋ง NoSQL์ด๋ผ ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์ ๋์ฒด๋ก ๋ค์๊ณผ ๊ฐ์ ๊ณตํต์ ์ธ ์ฑํฅ์ ๋ณด์ธ๋ค.
- ๋๋ถ๋ถ ํด๋ฌ์คํฐ์์ ์คํํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ ๊ด๊ณํ ๋ชจ๋ธ์ ์ฌ์ฉํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํด๋ฌ์คํฐ์์ ์คํ๋๋๋ก ๋ง์ถฐ์ง ๊ฒ์ ์๋๋ค. ์๋ฅผ ๋ค์ด NoSQL ๋ฐ์ดํฐ ๋ชจ๋ธ ์ค ํ๋์ธ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น์ทํ ๋ถ์ฐ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
- ์คํ ์์ค์ด๋ค. ๋น์คํ ์์ค ํ๋ก์ ํธ๋ ์๊ธด ํ์ง๋ง, ๋๋ถ๋ถ ๊ทธ๋ ๋ค.
- ๋ณดํต 21์ธ๊ธฐ ์ด๋ฐ ์น ํ๊ฒฝ์ ํ์์ ๊ธฐ์ด๋ฅผ ๋๊ณ ์์ด์, ์ด ์๊ธฐ์ ๊ฐ๋ฐ๋ ์์คํ ๋ง์ NoSQL์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ฐ๋ผ์ ๊ทธ ์ด์ ์ ๋ง๋ค์ด์ง ODBMS(Objective Database Management System)์ NoSQL์ ํด๋นํ์ง ์๋๋ค.
- ์คํค๋ง ์์ด ๋์ํ๋ฉฐ, ๊ตฌ์กฐ์ ๋ํ ์ ์๋ฅผ ๋ณ๊ฒฝํ ํ์ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์ฝ๋์ ์์ ๋กญ๊ฒ ํ๋๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
์์ฝํ์๋ฉด, ๋๋ถ๋ถ์ด ์คํ์์ค๊ณ , 21์ธ๊ธฐ ์ด๋ฐ์ ๊ฐ๋ฐ๋์์ผ๋ฉฐ, SQL์ ์ฌ์ฉํ์ง ์๋ Schema-less ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋งํ๋ค.
3. ๋ฑ์ฅ ๋ฐฐ๊ฒฝ[ํธ์ง]
์ง๋ 20๋
๊ฐ, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฌ์ฉ๋์๋ค. ํธ๋์ญ์
์ ํตํ ์์ ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ๊ฐ์ฅ ์ค์ํ ์ด์์๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ์น 2.0 ํ๊ฒฝ๊ณผ ๋น
๋ฐ์ดํฐ๊ฐ ๋ฑ์ฅํ๋ฉด์ RDBMS๋ ๋๊ด์ ๋ถ๋ชํ๊ฒ ๋์๋๋ฐ, ๋ฐ๋ก โ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ๋น์ฉ์ ์ฆ๊ฐโ๋๋ฌธ์ด๋ค. ๋ฐ์ดํฐ์ ํธ๋ํฝ์ ์์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํจ์ ๋ฐ๋ผ ํ ๋์์ ์คํ๋๋๋ก ์ค๊ณ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํ๋์จ์ด์ ์ผ๋ก ํฐ ๋น์ฉ์ด ๋ค๊ฒ ๋์๋ค. ์ฅ๋น์ ์ฑ๋ฅ์ด ์ข์์๋ก, ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ(Scale-up : ์์ง์ ํ์ฅ) ๋น์ฉ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
NoSQL์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ฝ๊ฐ ํฌ๊ธฐํ ๋์ ์ฌ๋ฌ ๋์ ์ปดํจํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ ๊ฒ(Scale-out : ์ํ์ ํ์ฅ)์ ๋ชฉํ๋ก ๋ฑ์ฅํ์๋ค. NoSQL์ ๋ฑ์ฅ์ผ๋ก ์๊ณ ๊ฐ์ผ ์ฅ๋น ์ฌ๋ฌ ๋๋ก ๋๋์ ๋ฐ์ดํฐ์ ์ปดํจํ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
NoSQL์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ฝ๊ฐ ํฌ๊ธฐํ ๋์ ์ฌ๋ฌ ๋์ ์ปดํจํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ ๊ฒ(Scale-out : ์ํ์ ํ์ฅ)์ ๋ชฉํ๋ก ๋ฑ์ฅํ์๋ค. NoSQL์ ๋ฑ์ฅ์ผ๋ก ์๊ณ ๊ฐ์ผ ์ฅ๋น ์ฌ๋ฌ ๋๋ก ๋๋์ ๋ฐ์ดํฐ์ ์ปดํจํ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
4. ํน์ง[ํธ์ง]
4.1. ์ผ๊ด์ฑ๊ณผ ํ์ฅ์ฑ ์ฌ์ด์ Trade-off[ํธ์ง]
์ผ๊ด์ฑ(Consistency)์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋์ ์ธ ์์๊ฐ ์๋์ ์ฃผ์ฅํ๋ ์์ง์์ด ์๊ธฐ๊ธฐ ์์ํ๋ค.[1] ์ด๋ค์ ๋น์ผ๊ด์ฑ์ด ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ์ด์ ๋ก ๊ฐ์ํ ๋งํ ๊ฒ์ด๋ผ๊ณ ์ฃผ์ฅํ๋ค.
- ๋ค์๊ฐ ๋์์ ์ฝ๊ณ ์ฐ๋(Read and write) ์ํฉ์์์ ์ฑ๋ฅ ํฅ์์ ์ํด์.
- ๋ถ์ฐ ํ๊ฒฝ์์ ๋ ธ๋๋ค์ด ์ ์๋ํ๊ณ ์์์๋, ์์คํ ์ ์ผ๋ถ๊ฐ ๊ณ ์ฅ๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์.
4.2. ๋ถ์ฐ ์ ์ฅ[ํธ์ง]
๋ฐ์ดํฐ์ ํธ๋ํฝ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๊ธฐ์กด์ ์ฅ๋น๋ก๋ ์ํํ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์์ก๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฒ๋ฆฌํ๋ ์ฅ๋น์ ์ฑ๋ฅ์ ํค์ฐ๋ ์์ง์ ํ์ฅ(Scale-up)๊ณผ ์ฒ๋ฆฌํ๋ ์ฅ๋น์ ์๋ฅผ ๋๋ฆฌ๋ ์ํ์ ํ์ฅ(Scale-out)์ด ์๋ค. ์์์ ์์ ํ๋ฏ์ด ์์ง์ ํ์ฅ์ ๋น์ฉ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก ์ํ์ ํ์ฅ์ ํตํด ์ฑ๋ฅ์ ์ฌ๋ ค์ผ ํ๋ค. ํ์ง๋ง ๋ฌธ์ ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํด๋ฌ์คํฐ ์์์ ํจ์จ์ ์ผ๋ก ๋์ํ๋๋ก ์ค๊ณ๋์ง ์์๋ค๋ ์ ์ด๋ค.
๋ฌผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํด๋ฌ์คํฐ ์์์ ๋๋ฆฌ์ง ๋ชปํ๋ ๊ฒ์ ์๋๋ค. ํด๋ฌ์คํฐ ์์์ ๋์ํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฃจ์ ๋ ์กด์ฌํ๋ค.[2] ์ด๋ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํด๋ฌ์คํฐ๋ฅผ ์ธ์ํ ์ ์๋ ํ์ผ ์์คํ ์ ์ฌ์ฉํด ๊ณ ๊ฐ์ฉ์ฑ ๋์คํฌ ์๋ธ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ๊ณต์ ๋์คํฌ ๊ฐ๋ ์ ์ฌ์ฉํ๋ค. ํ์ง๋ง ํด๋ฌ์คํฐ์ ๋์คํฌ ์๋ธ์์คํ ์ด ๋จ์ผ ๊ณ ์ฅ์ ์ด ๋์ด, ๋์คํฌ ์๋ธ์์คํ ์ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
์ค๋ฉ(Sharding)์ ์ค๋ ํค(Shard key)๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋์ ํ ์ด๋ธ์ ์ํ ๋ถํ ํ์ฌ ์๋ก ๋ค๋ฅธ ํด๋ฌ์คํฐ์ ๋ถ์ฐ ์ ์ฅํ๊ณ ์ง์ํ ์ ์๋ ๊ธฐ๋ฒ์ด๋ค. ์ด๋ฅผ ํตํด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ถํ๋ฅผ ๋ถ์ฐํ ์ ์์ง๋ง ์ดํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ๋ชจ๋ ์ค๋ฉ์ ์ ์ดํด์ผ ํ๋ค. (์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ ํด๋ฌ์คํฐ์์ ์ฒ๋ฆฌํด์ผ ํ๋์ง ๋ฑ) ๋ํ ์ฌ๋ฌ ์ค๋์ ๊ฑธ์น๋ ์ฟผ๋ฆฌ๋ ์ฐธ์กฐ ์ ํฉ์ฑ, ํธ๋์ญ์ , ์ผ๊ด์ฑ์ ์ ์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ฌผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํด๋ฌ์คํฐ ์์์ ๋๋ฆฌ์ง ๋ชปํ๋ ๊ฒ์ ์๋๋ค. ํด๋ฌ์คํฐ ์์์ ๋์ํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฃจ์ ๋ ์กด์ฌํ๋ค.[2] ์ด๋ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํด๋ฌ์คํฐ๋ฅผ ์ธ์ํ ์ ์๋ ํ์ผ ์์คํ ์ ์ฌ์ฉํด ๊ณ ๊ฐ์ฉ์ฑ ๋์คํฌ ์๋ธ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ๊ณต์ ๋์คํฌ ๊ฐ๋ ์ ์ฌ์ฉํ๋ค. ํ์ง๋ง ํด๋ฌ์คํฐ์ ๋์คํฌ ์๋ธ์์คํ ์ด ๋จ์ผ ๊ณ ์ฅ์ ์ด ๋์ด, ๋์คํฌ ์๋ธ์์คํ ์ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
์ค๋ฉ(Sharding)์ ์ค๋ ํค(Shard key)๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋์ ํ ์ด๋ธ์ ์ํ ๋ถํ ํ์ฌ ์๋ก ๋ค๋ฅธ ํด๋ฌ์คํฐ์ ๋ถ์ฐ ์ ์ฅํ๊ณ ์ง์ํ ์ ์๋ ๊ธฐ๋ฒ์ด๋ค. ์ด๋ฅผ ํตํด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ถํ๋ฅผ ๋ถ์ฐํ ์ ์์ง๋ง ์ดํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ๋ชจ๋ ์ค๋ฉ์ ์ ์ดํด์ผ ํ๋ค. (์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ ํด๋ฌ์คํฐ์์ ์ฒ๋ฆฌํด์ผ ํ๋์ง ๋ฑ) ๋ํ ์ฌ๋ฌ ์ค๋์ ๊ฑธ์น๋ ์ฟผ๋ฆฌ๋ ์ฐธ์กฐ ์ ํฉ์ฑ, ํธ๋์ญ์ , ์ผ๊ด์ฑ์ ์ ์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ถ์ฐ ์ ์ฅ์ ์ง์ํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ, ์งํฉ-์งํฅ(Aggregate-oriented) ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ค์ด ํจ๊ป ๋ถ์ฐ๋๋ฏ๋ก, ๊ด๊ณํ ๋ชจ๋ธ์์์ฒ๋ผ ๋ณต์กํ ์ ์ด๊ฐ ํ์ํ์ง ์๊ฒ ๋๋ค.
4.3. ๋ฐ์ดํฐ ์ผ์น[ํธ์ง]
RDBMS์์ ๊ด๊ณํ ํํ ์์ ๊ฐ์ ๋จ์ํด์ผ ํ๋ฉฐ ์ค์ฒฉ๋ ๋ ์ฝ๋๋ ๋ฆฌ์คํธ ๋ฑ ๋ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ํฌํจํ ์ ์๋ ๋ฐ๋ฉด, ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ์ดํฐ ๊ตฌ์กฐ์์๋ ์ด๋ฐ ์ ์ฝ์ด ์์ด ํจ์ฌ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค. (ex : ๋ฆฌ์คํธ, ๋์
๋๋ฆฌ, ์ค์ฒฉ๋ ๊ฐ์ฒด ๊ตฌ์กฐ) ๊ทธ ๊ฒฐ๊ณผ ๋ณต์กํ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ค๋ฉด ๋จผ์ ๊ด๊ณํ ํํ์ผ๋ก ๋ณํํด์ผ ํ๋ค. ๋ฌผ๋ก ์ด๋ ORM(Objective-Relational Mapping : ๊ฐ์ฒด-๊ด๊ณ ๋งคํ) ํ๋ ์์ํฌ๋ฅผ ํตํด ํด๊ฒฐํ ์ ์์ง๋ง, ์ฌ์ ํ ๊ด๊ณํ ๋ชจ๋ธ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฐ์๋ ๋ฐ์ดํฐ ๋ถ์ผ์น๋ ์กด์ฌํ๋ค. ์ด๋ฅผ Impedance mismatch๋ผ ํ๋ค.
ํ์ง๋ง NoSQL์ ๊ทธ๋ฐ ๊ฒ ์๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ด์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๊ตฌ์กฐ์ด๋ ์ง ์๊ดํ์ง ์๊ณ ํ๋์ Aggregation์ผ๋ก ์ทจ๊ธํ์ฌ ์ ์ฅํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ NoSQL์์๋ ORM ํ๋ ์์ํฌ๊ฐ ํ์ํ์ง ์๋ค.
ํ์ง๋ง NoSQL์ ๊ทธ๋ฐ ๊ฒ ์๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ด์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๊ตฌ์กฐ์ด๋ ์ง ์๊ดํ์ง ์๊ณ ํ๋์ Aggregation์ผ๋ก ์ทจ๊ธํ์ฌ ์ ์ฅํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ NoSQL์์๋ ORM ํ๋ ์์ํฌ๊ฐ ํ์ํ์ง ์๋ค.
4.4. Schema-less[ํธ์ง]
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ณตํต์ ์ธ ํน์ง์ ์คํค๋ง ์์ด ๋์ํ๋ค๋ ์ ์ด๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ ํ์๊ฐ ์์ผ๋ฉฐ, ์๊ฐ์ด ์ง๋๋๋ผ๋ ์ธ์ ๋ ์ง ๋ฐ๊ฟ ์ ์๊ธฐ ๋๋ฌธ์ ๋นํ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฉ์ดํ๋ค. ํ์ง๋ง ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์คํค๋ง๋ฅผ ์ง์ ๊ด๋ฆฌํ์ง ์๋ ๊ฒ์ ์๋ฏธํ ๋ฟ, ๋ฐ์ดํฐ ํ์
์ ๋ฐ๋ฅธ ์๋ฌต์ ์ธ ์คํค๋ง๋ ์ฌ์ ํ ์กด์ฌํ๋ค. ์ด ๋๋ฌธ์ ๋จ์ผ ๊ฐ์ ๋ํ ๋ฐ์ดํฐ ํ์
์์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ํ๋์ ์ด๋ฆ์ โQuantityโ๋ผ๊ณ ํ๊ธฐ๋ก ํ๋ค๊ณ ํ์. ์ด๊ฒ์ ์์ผ๋ก ์ ์ฅํ ๋ ๋ฐ๋์ ํ๋์ ์ด๋ฆ์ โQuantityโ๋ผ๊ณ ์ ์ฅํ๊ฒ ๋ค๋ ์๋ฌต์ ์ธ ์คํค๋ง๊ฐ ๋๋ค. ์๋ฌต์ ์ธ ์คํค๋ง๋ฅผ ๋ฌด์ํ ๊ฒฝ์ฐ Quantity๋ฅผ quantity, qty, QUANTITY ๋ฑ์ผ๋ก ์ ์ฅํ ์ง๋ ๋ชจ๋ฅธ๋ค. ๋ฌ๊ธ์์ด qty, quantity๊ฐ์ ์๋ก์ด ํ๋๊ฐ ์ถ๊ฐ๋๋ ๊ฒ์ด๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ์ด๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ฌต์ ์ธ ์คํค๋ง์ ๋ํด ์ ํ ์์ง ๋ชปํ๋ฉฐ, ์ด๋ฅผ ๊ฐ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์ผ์ด๋ค. ๊ทธ๋ ๊ฒ ๋๋ฌธ์ NoSQL์ ์ฌ์ฉํ ๋์๋ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ผ ํ์๊ฐ ์๋ค.
์๋ฅผ ๋ค์ด ํ๋์ ์ด๋ฆ์ โQuantityโ๋ผ๊ณ ํ๊ธฐ๋ก ํ๋ค๊ณ ํ์. ์ด๊ฒ์ ์์ผ๋ก ์ ์ฅํ ๋ ๋ฐ๋์ ํ๋์ ์ด๋ฆ์ โQuantityโ๋ผ๊ณ ์ ์ฅํ๊ฒ ๋ค๋ ์๋ฌต์ ์ธ ์คํค๋ง๊ฐ ๋๋ค. ์๋ฌต์ ์ธ ์คํค๋ง๋ฅผ ๋ฌด์ํ ๊ฒฝ์ฐ Quantity๋ฅผ quantity, qty, QUANTITY ๋ฑ์ผ๋ก ์ ์ฅํ ์ง๋ ๋ชจ๋ฅธ๋ค. ๋ฌ๊ธ์์ด qty, quantity๊ฐ์ ์๋ก์ด ํ๋๊ฐ ์ถ๊ฐ๋๋ ๊ฒ์ด๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ์ด๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ฌต์ ์ธ ์คํค๋ง์ ๋ํด ์ ํ ์์ง ๋ชปํ๋ฉฐ, ์ด๋ฅผ ๊ฐ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์ผ์ด๋ค. ๊ทธ๋ ๊ฒ ๋๋ฌธ์ NoSQL์ ์ฌ์ฉํ ๋์๋ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ผ ํ์๊ฐ ์๋ค.
5. ์ข ๋ฅ[ํธ์ง]
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํฌ๊ฒ ๋ค ๊ฐ์ง ๋ชจ๋ธ๋ก ๋๋ ์ ์๋ค.
- Key-value
- Document
- Column-family
- Graph
์ด ์ค ๊ทธ๋ํ ๋ชจ๋ธ์ ์ ์ธํ ๋๋จธ์ง ์ธ ๋ชจ๋ธ์ ์งํฉ-์งํฅ(Aggregate-oriented) ๋ชจ๋ธ์ด๋ค.
5.1. ์งํฉ-์งํฅ (Aggregate-oriented) ๋ชจ๋ธ[ํธ์ง]
์งํฉ(Aggregate)์ด๋ ์ฐ์ฐ์ ํ ๋จ์๋ก ์ทจ๊ธ๋๋ ์ฐ๊ด๋ ๊ฐ์ฒด๋ค์ ์งํฉ์ด๋ค. ์งํฉ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์งํฉ ์๋ฃ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ด๊ณํ ๋ชจ๋ธ์ฒ๋ผ ํ๋์ ์ํฐํฐ์ ๋ํ ACID ํธ๋์ญ์
[3]์ ์ง์ํ์ง๋ ์์ง๋ง, ํ๋์ ์งํฉ์ ๋ํ ์ฐ์ฐ์์๋ ํธ๋์ญ์
์ ์ง์ํ๋ค.
์งํฉ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ๋์ ํด๋ฌ์คํฐ๋ก ์ด๋ฃจ์ด์ง ์์คํ ์์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค. ๋ค์ ๋งํด ์ํ์ ํ์ฅ์ด ์ฉ์ดํ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ฌ๋ฆฌ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ค์ด ํจ๊ป ์์ง์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์๋ฃ๊ตฌ์กฐ์ ์งํฉ ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ผ์นํ๋ฏ๋ก, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ๊ฐ์ฒด-๊ด๊ณ ๋งคํ ํ๋ ์์ํฌ๊ฐ ํ์ํ์ง ์๋ค. ๋ฐ์ดํฐ์ ๊ฒ์๋ ์์ฃผ ์ฌ์ด ํธ์ผ๋ก, ํค๋ ID๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์งํฉ ๋ ์ฝ๋๋ฅผ ์ฐพ์๋ผ ์ ์๋ค.
์งํฉ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์กฐ์ธ ์ฐ์ฐ์ด ๋ถ๊ฐ๋ฅํ๋ฐ, ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด MongoDB๋ Cassandra๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋งต ๋ฆฌ๋์ค(MapReduce) ๊ธฐ๋ฅ์ ์ ๊ณตํจ์ผ๋ก์จ ์กฐ์ธ๊ณผ ์ ์ฌํ ์ฐ์ฐ์ ๊ฐ๋ฅํ๋๋ก ์ค๊ณํ๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ถ์๋ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ฌ์ฉ๋ฒ์ด ์ด๋ ต๊ณ Hadoop์ ๋งต ๋ฆฌ๋์ค์ ๋นํ๋ฉด ์๋๋ ๋งค์ฐ ๋๋ฆฌ๋ค.
์งํฉ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ๋์ ํด๋ฌ์คํฐ๋ก ์ด๋ฃจ์ด์ง ์์คํ ์์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค. ๋ค์ ๋งํด ์ํ์ ํ์ฅ์ด ์ฉ์ดํ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ฌ๋ฆฌ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ค์ด ํจ๊ป ์์ง์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์๋ฃ๊ตฌ์กฐ์ ์งํฉ ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ผ์นํ๋ฏ๋ก, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ๊ฐ์ฒด-๊ด๊ณ ๋งคํ ํ๋ ์์ํฌ๊ฐ ํ์ํ์ง ์๋ค. ๋ฐ์ดํฐ์ ๊ฒ์๋ ์์ฃผ ์ฌ์ด ํธ์ผ๋ก, ํค๋ ID๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์งํฉ ๋ ์ฝ๋๋ฅผ ์ฐพ์๋ผ ์ ์๋ค.
์งํฉ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์กฐ์ธ ์ฐ์ฐ์ด ๋ถ๊ฐ๋ฅํ๋ฐ, ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด MongoDB๋ Cassandra๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋งต ๋ฆฌ๋์ค(MapReduce) ๊ธฐ๋ฅ์ ์ ๊ณตํจ์ผ๋ก์จ ์กฐ์ธ๊ณผ ์ ์ฌํ ์ฐ์ฐ์ ๊ฐ๋ฅํ๋๋ก ์ค๊ณํ๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ถ์๋ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ฌ์ฉ๋ฒ์ด ์ด๋ ต๊ณ Hadoop์ ๋งต ๋ฆฌ๋์ค์ ๋นํ๋ฉด ์๋๋ ๋งค์ฐ ๋๋ฆฌ๋ค.
5.1.1. Key-value[ํธ์ง]
ํค ๊ฐ(Key-value) ์ ์ฅ์๋ ๊ฐ์ฅ ๋จ์ํ ํํ์ NoSQL์ผ๋ก, ์ํ์ ํ์ฅ์ด ์ฉ์ดํ๋ค. ๋ํ ์์ฃผ ๊ฐ๋จํ API๋ง์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ฐ๋ ๊ฒ์ด ์ด๋ ต์ง ์๋ค.[4] ํ์ง๋ง ๊ฐ์ ๋ด์ฉ์ ์ฌ์ฉํ ์ฟผ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์๋ค. ์ฌ์ฉ์๋ ํค๋ฅผ ์ฌ์ฉํด ๊ฐ์ ์ฝ์ด๋ค์ธ ๋ค, ์ดํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์์ ์ ์ ํ ์ฒ๋ฆฌํด์ผ ํ๋ค.
ํค-๊ฐ ์ ์ฅ์๋ ๋ฐ์ดํฐ๊ฐ ํค์ ๊ฐ์ ์์ผ๋ก ์ ์ฅ๋๋ค. ํค๋ ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ฉฐ, ๊ฐ์ ์ด๋ ํ ํํ์ ๋ฐ์ดํฐ๋ผ๋ ๋ด์ ์ ์๋ค. ์ฌ์ง์ด๋ ์ด๋ฏธ์ง๋ ๋น๋์ค๋ ๊ฐ๋ฅํ๋ค. ๋ํ ๊ฐ๋จํ API๋ฅผ ์ ๊ณตํ๋ ๋งํผ ์ง์์ ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅธ ํธ์ด๋ค.
Key-value ๋ชจ๋ธ์ ์ฌ์ฉํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ Memcached, Riak, Redis, Amazon Dynamo DB, LevelDB ๋ฑ์ด ์๋ค.
ํค-๊ฐ ์ ์ฅ์๋ ๋ฐ์ดํฐ๊ฐ ํค์ ๊ฐ์ ์์ผ๋ก ์ ์ฅ๋๋ค. ํค๋ ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ฉฐ, ๊ฐ์ ์ด๋ ํ ํํ์ ๋ฐ์ดํฐ๋ผ๋ ๋ด์ ์ ์๋ค. ์ฌ์ง์ด๋ ์ด๋ฏธ์ง๋ ๋น๋์ค๋ ๊ฐ๋ฅํ๋ค. ๋ํ ๊ฐ๋จํ API๋ฅผ ์ ๊ณตํ๋ ๋งํผ ์ง์์ ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅธ ํธ์ด๋ค.
Key-value ๋ชจ๋ธ์ ์ฌ์ฉํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ Memcached, Riak, Redis, Amazon Dynamo DB, LevelDB ๋ฑ์ด ์๋ค.
5.1.2. Document[ํธ์ง]
ํค-๊ฐ ๋ชจ๋ธ์์ ํ์ธต ์งํํ ๋ชจ๋ธ๋ก ์๊ฐํ ์ ์๋ค. ๋ฐ์ดํฐ๋ ํค์ ๋ํ๋จผํธ(Document)์ ํํ๋ก ์ ์ฅ๋๋ค. ํค-๊ฐ ๋ชจ๋ธ๊ณผ ๋ค๋ฅธ ์ ์ด๋ผ๋ฉด Value๊ฐ ๊ณ์ธต์ ์ธ ํํ์ธ ๋ํ๋จผํธ๋ก ์ ์ฅ๋๋ค๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด์งํฅ์์์ ๊ฐ์ฒด์ ์ ์ฌํ๋ฉฐ, ์ด๋ค์ ํ๋์ ๋จ์๋ก ์ทจ๊ธ๋์ด ์ ์ฅ๋๋ค. ๋ค์ ๋งํด ํ๋์ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ๊ฐ์ ํ
์ด๋ธ์ ๋๋ ์ ์ฅํ ํ์๊ฐ ์์ด์ง๋ค๋ ๋ป์ด๋ค. ๋ํ Document ๋ชจ๋ธ์์๋ ๋ํ๋จผํธ ๋ด์ item์ ์ด์ฉํ ์ฟผ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ๋ค๋ง ์ด๋ฅผ ์ํด์๋ Xquery๋ ๋ค๋ฅธ ๋ํ๋จผํธ ์ง์ ์ธ์ด๊ฐ ํ์ํ๋ค.
์ฃผ์ํ ํน์ง์ผ๋ก๋ ๊ฐ์ฒด-๊ด๊ณ ๋งคํ์ด ํ์ํ์ง ์๋ค. ๊ฐ์ฒด๋ฅผ ๋ํ๋จผํธ์ ํํ๋ก ๋ฐ๋ก ์ ์ฅ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ๊ฒ์์ ์ต์ ํ๋์ด ์๋๋ฐ, ์ด๋ ํค-๊ฐ ๋ชจ๋ธ์ ํน์ง๊ณผ ๋์ผํ๋ค. ๋จ์ ์ด๋ผ๋ฉด ์ฌ์ฉ์ด ๋ฒ๊ฑฐ๋กญ๊ณ ์ฟผ๋ฆฌ๊ฐ SQL๊ณผ๋ ๋ค๋ฅด๋ค๋ ์ ์ด๋ค. ๋ํ๋จผํธ ๋ชจ๋ธ์์๋ ์ง์์ ๊ฒฐ๊ณผ๊ฐ JSON์ด๋ xml ํํ๋ก ์ถ๋ ฅ๋๊ธฐ ๋๋ฌธ์ ๊ทธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด RDBMS์์์ ์ง์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅด๋ค. ๋ํ ์ง์ ์ธ์ด๊ฐ SQL๊ณผ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ต์ํด์ง๊ธฐ๊น์ง ๋ค์ ์ด๋ ค์์ด ์์ ์ ์๋ค.
Document ๋ชจ๋ธ์ ์ฌ์ฉํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ MongoDB, CouchDB, MarkLogic ๋ฑ์ด ์๋ค.
์ฃผ์ํ ํน์ง์ผ๋ก๋ ๊ฐ์ฒด-๊ด๊ณ ๋งคํ์ด ํ์ํ์ง ์๋ค. ๊ฐ์ฒด๋ฅผ ๋ํ๋จผํธ์ ํํ๋ก ๋ฐ๋ก ์ ์ฅ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ๊ฒ์์ ์ต์ ํ๋์ด ์๋๋ฐ, ์ด๋ ํค-๊ฐ ๋ชจ๋ธ์ ํน์ง๊ณผ ๋์ผํ๋ค. ๋จ์ ์ด๋ผ๋ฉด ์ฌ์ฉ์ด ๋ฒ๊ฑฐ๋กญ๊ณ ์ฟผ๋ฆฌ๊ฐ SQL๊ณผ๋ ๋ค๋ฅด๋ค๋ ์ ์ด๋ค. ๋ํ๋จผํธ ๋ชจ๋ธ์์๋ ์ง์์ ๊ฒฐ๊ณผ๊ฐ JSON์ด๋ xml ํํ๋ก ์ถ๋ ฅ๋๊ธฐ ๋๋ฌธ์ ๊ทธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด RDBMS์์์ ์ง์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅด๋ค. ๋ํ ์ง์ ์ธ์ด๊ฐ SQL๊ณผ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ต์ํด์ง๊ธฐ๊น์ง ๋ค์ ์ด๋ ค์์ด ์์ ์ ์๋ค.
Document ๋ชจ๋ธ์ ์ฌ์ฉํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ MongoDB, CouchDB, MarkLogic ๋ฑ์ด ์๋ค.
5.1.3. Column-Family[ํธ์ง]
์ปฌ๋ผ-ํจ๋ฐ๋ฆฌ(Column-family) ๋ชจ๋ธ์ ์์ ๋ ๋ชจ๋ธ[5]๊ณผ๋ ๋ค์ ์ฐจ์ด๊ฐ ์์ง๋ง ์งํฉ-์งํฅ ๋ชจ๋ธ๋ก ๊ฐ์ฃผ๋๋ค. ์ด์ ์ ๋ชจ๋ธ๋ค์ด ํค-๊ฐ ์ ์ค ๊ฐ์ ์ด์ฉํด ํ๋๋ฅผ ๊ฒฐ์ ํ๋ค๋ฉด, ํน์ดํ๊ฒ๋ ์ด ๋ชจ๋ธ์ ํค์์ ํ๋๋ฅผ ๊ฒฐ์ ํ๋ค. ํค๋ Row(ํค ๊ฐ)์ Column-family, Column-name์ ๊ฐ์ง๋ค. ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ Column-family ์์ ์ํด ์์ผ๋ฉฐ, ๊ฐ์์ Column-name์ ๊ฐ์ง๋ค. ๊ด๊ณํ ๋ชจ๋ธ๋ก ์ค๋ช
ํ์๋ฉด ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์
์ด๋ค. ์ด๋ ๊ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ํ๋์ ์ปค๋ค๋ ํ
์ด๋ธ๋ก ํํ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ง์๋ Row, Column-family, Column-name์ ํตํด ์ํ๋๋ค.
์ด๋ฌํ ํน์ง ๋์ ์ปฌ๋ผ-ํจ๋ฐ๋ฆฌ ๋ชจ๋ธ์ ํด๋ฌ์คํฐ๋ง์ด ์ฝ๊ฒ ์ด๋ค์ง๋ฉฐ, Time stamp๊ฐ ์กด์ฌํด ๊ฐ์ด ์์ ๋ ํ์คํ ๋ฆฌ๋ฅผ ์ ์ ์๋ค. ๋ํ ๊ฐ๋ค์ ์ผ๋ จ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ํํ์ ๋ฐ์ดํฐ๋ผ๋ ์ ์ฅ๋ ์ ์๋ค.
๋ค๋ง ์์ ๋ ๋ชจ๋ธ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ Blob ๋จ์์ ์ฟผ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ, Row์ Column์ ์ด๊ธฐ ๋์์ธ์ด ์ค์ํ๋ค. Schema-less์ด๊ธด ํ์ง๋ง ์๋ก์ด ํ๋๋ฅผ ๋ง๋๋ ๋ฐ ๋๋ ๋น์ฉ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ฌ์ค์ ๊ฒฐ์ ๋ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ด๋ ต๋ค.
Column-family ๋ชจ๋ธ์ ์ฌ์ฉํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ HBase, Cassandra, Hypertable ๋ฑ์ด ์๋ค.
์ด๋ฌํ ํน์ง ๋์ ์ปฌ๋ผ-ํจ๋ฐ๋ฆฌ ๋ชจ๋ธ์ ํด๋ฌ์คํฐ๋ง์ด ์ฝ๊ฒ ์ด๋ค์ง๋ฉฐ, Time stamp๊ฐ ์กด์ฌํด ๊ฐ์ด ์์ ๋ ํ์คํ ๋ฆฌ๋ฅผ ์ ์ ์๋ค. ๋ํ ๊ฐ๋ค์ ์ผ๋ จ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ํํ์ ๋ฐ์ดํฐ๋ผ๋ ์ ์ฅ๋ ์ ์๋ค.
๋ค๋ง ์์ ๋ ๋ชจ๋ธ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ Blob ๋จ์์ ์ฟผ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ, Row์ Column์ ์ด๊ธฐ ๋์์ธ์ด ์ค์ํ๋ค. Schema-less์ด๊ธด ํ์ง๋ง ์๋ก์ด ํ๋๋ฅผ ๋ง๋๋ ๋ฐ ๋๋ ๋น์ฉ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ฌ์ค์ ๊ฒฐ์ ๋ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ด๋ ต๋ค.
Column-family ๋ชจ๋ธ์ ์ฌ์ฉํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ HBase, Cassandra, Hypertable ๋ฑ์ด ์๋ค.
5.2. ๊ทธ๋ํ (Graph) ๋ชจ๋ธ[ํธ์ง]
๊ทธ๋ํ(Graph) ๋ชจ๋ธ์ ์๋นํ ๋
ํนํ ๋์์ธ์ ๊ฐ์ง ๋ชจ๋ธ๋ก์จ ์งํฉ ์งํฅ ๋ชจ๋ธ๋ณด๋ค๋ ๊ด๊ณํ ๋ชจ๋ธ์ ๊ฐ๊น๋ค. ์ค์ ์ธ๊ณ์ ๋ฐ์ดํ๋ฅผ ๊ด๊ณ์ ํจ๊ป ํํํ๊ธฐ ์ํด ๋์์ธ๋ ๋ชจ๋ธ๋ก์จ, ๋ฐ์ดํฐ๋ ์ฐ์์ ์ธ ๋
ธ๋, ๊ด๊ณ, ํน์ฑ์ ํํ๋ก ์ ์ฅ๋๋ค. ๋ค์ ๋งํด ๊ทธ๋ํ ํํ๋ก ์ ์ฅ๋๋ค๋ ๋ป์ด๋ค. ๋ฐ๋ผ์ ๊ทธ๋ํ ๋ชจ๋ธ์์์ ์ง์๋ ๊ทธ๋ํ ์ํ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ค.
๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ๊ทธ๋ํ ํํ๋ก ํํํ ๊ฒ์ด๋ฏ๋ก ๊ด๊ณํ ๋ชจ๋ธ์ด๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๊ฐ ํ์์ ํค์ผ ๊ฒฝ์ฐ์ ์ ํฉํ๋ค. ํ์ด์ค๋ถ์ด๋ ํธ์ํฐ ๊ฐ์ ์์ ๋คํธ์ํฌ์์(๋ด ์น๊ตฌ์ ์น๊ตฌ๋ฅผ ์ฐพ๋ ์ง์ ๋ฑ) ์ ํฉํ๊ณ , ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ฒํด์ฃผ๋ ์ถ์ฒ ์์ง์ด๋ ํจํด ์ธ์ ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ์ ํฉํ๋ค. ๋ํ ์งํฉ ์งํฅ ๋ชจ๋ธ๊ณผ๋ ๋ค๋ฅด๊ฒ ๊ฐ์ฒด์ ACID ํธ๋์ญ์ ์ ์ง์ํ๋ค.
๋ค๋ง ๊ทธ๋ํ ๋ชจ๋ธ์ ํด๋ฌ์คํฐ๋ง์๋ ์ ํฉํ์ง ์๋ค. ๋ํ ์ง์ ์ธ์ด๋ ํนํ๋์ด ์์ด ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๋ค.
๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ๊ทธ๋ํ ํํ๋ก ํํํ ๊ฒ์ด๋ฏ๋ก ๊ด๊ณํ ๋ชจ๋ธ์ด๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๊ฐ ํ์์ ํค์ผ ๊ฒฝ์ฐ์ ์ ํฉํ๋ค. ํ์ด์ค๋ถ์ด๋ ํธ์ํฐ ๊ฐ์ ์์ ๋คํธ์ํฌ์์(๋ด ์น๊ตฌ์ ์น๊ตฌ๋ฅผ ์ฐพ๋ ์ง์ ๋ฑ) ์ ํฉํ๊ณ , ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ฒํด์ฃผ๋ ์ถ์ฒ ์์ง์ด๋ ํจํด ์ธ์ ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ์ ํฉํ๋ค. ๋ํ ์งํฉ ์งํฅ ๋ชจ๋ธ๊ณผ๋ ๋ค๋ฅด๊ฒ ๊ฐ์ฒด์ ACID ํธ๋์ญ์ ์ ์ง์ํ๋ค.
๋ค๋ง ๊ทธ๋ํ ๋ชจ๋ธ์ ํด๋ฌ์คํฐ๋ง์๋ ์ ํฉํ์ง ์๋ค. ๋ํ ์ง์ ์ธ์ด๋ ํนํ๋์ด ์์ด ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๋ค.
6. ์์[ํธ์ง]
๋๋ถ๋ถ์ ์ฌ๋๋ค์ NoSQL์ด RDBMS๋ฅผ ๋์ฒดํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ๋ ์๊ฐํ์ง ์๋๋ค. ๊ทธ๋ฌ๊ธฐ์๋ RDBMS๊ฐ ๊ฐ์ง ์ฅ์ ์ด ๋๋ฌด๋ ๋ช
ํํ๊ณ , ๋ํ ๋ง์ ์ฌ๋๋ค์ด RDBMS์ ์ฌ์ฉํ๋ ๋ฐ ์ต์ํด์ ธ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ NoSQL์ด ๊ฐ๊ด๋ฐ๊ณ ์๋ ๊น๋ญ์ NoSQL๋ง์ ์ฅ์ ์ด ๋๋ ทํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฅผ ๋ค์ด ๊ตฌ๋งค ๋ด์ญ์ด๋ ๊ฒ์์ ๋ก๊ทธ ๊ฐ์ ๋ฐ์ดํฐ๋ค์ ๋งค ์ด๋ง๋ค ์์ฒญ๋ ์์ด ์์ฑ๋์ง๋ง ํ๋ฒ ์ ์ฅ๋๊ณ ๋ ๋ค์๋ ์์ ๋ ์ผ์ด ๊ฑฐ์ ์๋ค. ์ด๋ฐ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋ ๋ฐ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ACID ํธ๋์ญ์ ์ ์ง์ํ ํ์๋ ์์ ๊ฒ์ด๋ค. ๊ฑฐ๊ธฐ๋ค ์์ฑ๋๋ ๋ฐ์ดํฐ์ ์๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ฅ๋น์ ์ฑ๋ฅ์๋ ์๋นํ ์ํฅ์ ๋ฏธ์น ๊ฒ์ด๋ค. NoSQL์ ์ด๋ฌํ ๋ฐ์ดํฐ๋ค์ ํจ์จ์ ์ผ๋ก ์ ์ฅํ ์ ์๋ค. ์ฌ๋ฌ ๋์ ์ฅ๋น์ ๋น ๋ฅธ ์๋๋ก ์ ์ฅ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ์ดํฐ์ ์์ด ๋์ ๋๋๋ผ๋ ์ผ๋ง๋ ์ง ์ํ์ ํ์ฅ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ค์ ๋ก ํ์ด์ค๋ถ์ด๋ ํธ์ํฐ ๊ฐ์ ์์ ๋คํธ์ํฌ ์๋น์ค์์๋ ๊ฒ์๊ธ๋ค์ ์ ์ฅํ๋ ๋ฐ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.[6] ๋งค ์ด์ ์๋ฐฑ ๊ธฐ๊ฐ~์ ํ ๋ผ ๋ฐ์ดํธ์ฉ ์์ฑ๋๋ ๋ฐ์ดํฐ๋ค์ RDBMS๋ฅผ ์ฌ์ฉํด ์ ์ฅํ๋ค๋ฉด, ๊ธ ์์ฑ ๋ฒํผ์ ๋๋ฅธ ํ ๊ธ์ด ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๊ธฐ๊น์ง ํ์ฐธ์ ๊ธฐ๋ค๋ ค์ผ ๊ธ์ ์ฑ๊ณต์ ์ผ๋ก ๊ฒ์ํ ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง NoSQL์ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ถํ๊ฐ ๋ถ์ฐ๋๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ๊ธ์ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๊ณ ํ์ฐธ์ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๊ฒ ๋๋ค. ๋ํ ๊ฐ์ข ๊ฒ์ ์์ง์๋ ์ฌ์ฉ๋๋ ๊ฒ์ด NoSQL์ธ๋ฐ, ์น ํ์ด์ง ๋ด์ ํ ์คํธ๋ค์ ํํ์ ๋จ์์ ํ ํฐ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ํ ํฐ๊ณผ ํด๋น ํ ํฐ์ด ํฌํจ๋ ํ์ด์ง๋ค์ URL์ ๋งตํํ๋ Inverted Index(์ญ ์ธ๋ฑ์ค) ๊ตฌ์กฐ๋ฅผ NoSQL์ ํตํด ๊ตฌํํ๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ธ RDMBS๋ก ๊ตฌํํ์ ๊ฒฝ์ฐ ๊ฒ์ ์ฐฝ์ ๋จ์ด๋ฅผ ์ ๋ ฅํ์ ๋๋ง๋ค ์๋นํ ์๊ฐ์ด ์์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ๋ณด์ฅ๋์ด์ผ ํ๊ฑฐ๋ ์ฌ๋ฌ๋ฒ์ ์กฐ์ธ ์ฐ์ฐ์ด ํ์ํ ๋ฐ์ดํฐ๋ผ๋ฉด NoSQL์ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋ค RDBMS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ค. NoSQL์ RDBMS๋ฅผ ๋์ฒดํ๊ธฐ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋๋ผ ์ํธ ๋ณด์ํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ, ๋ฐ๋ผ์ ๋ชฉ์ ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
C++, Java, Python ๋ฑ ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ฌ์ฉํด์ ํ๋์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ ๊ฒ์ฒ๋ผ(Polyglot Programming) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์ ๋ค์ํ ์ ์ฅ์(Polyglot Persistance)๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค๋ ์ ์์ NoSQL์ ์์๋ ํฌ๋ค๊ณ ๋ณผ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๊ตฌ๋งค ๋ด์ญ์ด๋ ๊ฒ์์ ๋ก๊ทธ ๊ฐ์ ๋ฐ์ดํฐ๋ค์ ๋งค ์ด๋ง๋ค ์์ฒญ๋ ์์ด ์์ฑ๋์ง๋ง ํ๋ฒ ์ ์ฅ๋๊ณ ๋ ๋ค์๋ ์์ ๋ ์ผ์ด ๊ฑฐ์ ์๋ค. ์ด๋ฐ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋ ๋ฐ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ACID ํธ๋์ญ์ ์ ์ง์ํ ํ์๋ ์์ ๊ฒ์ด๋ค. ๊ฑฐ๊ธฐ๋ค ์์ฑ๋๋ ๋ฐ์ดํฐ์ ์๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ฅ๋น์ ์ฑ๋ฅ์๋ ์๋นํ ์ํฅ์ ๋ฏธ์น ๊ฒ์ด๋ค. NoSQL์ ์ด๋ฌํ ๋ฐ์ดํฐ๋ค์ ํจ์จ์ ์ผ๋ก ์ ์ฅํ ์ ์๋ค. ์ฌ๋ฌ ๋์ ์ฅ๋น์ ๋น ๋ฅธ ์๋๋ก ์ ์ฅ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ์ดํฐ์ ์์ด ๋์ ๋๋๋ผ๋ ์ผ๋ง๋ ์ง ์ํ์ ํ์ฅ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ค์ ๋ก ํ์ด์ค๋ถ์ด๋ ํธ์ํฐ ๊ฐ์ ์์ ๋คํธ์ํฌ ์๋น์ค์์๋ ๊ฒ์๊ธ๋ค์ ์ ์ฅํ๋ ๋ฐ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.[6] ๋งค ์ด์ ์๋ฐฑ ๊ธฐ๊ฐ~์ ํ ๋ผ ๋ฐ์ดํธ์ฉ ์์ฑ๋๋ ๋ฐ์ดํฐ๋ค์ RDBMS๋ฅผ ์ฌ์ฉํด ์ ์ฅํ๋ค๋ฉด, ๊ธ ์์ฑ ๋ฒํผ์ ๋๋ฅธ ํ ๊ธ์ด ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๊ธฐ๊น์ง ํ์ฐธ์ ๊ธฐ๋ค๋ ค์ผ ๊ธ์ ์ฑ๊ณต์ ์ผ๋ก ๊ฒ์ํ ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง NoSQL์ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ถํ๊ฐ ๋ถ์ฐ๋๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ๊ธ์ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๊ณ ํ์ฐธ์ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๊ฒ ๋๋ค. ๋ํ ๊ฐ์ข ๊ฒ์ ์์ง์๋ ์ฌ์ฉ๋๋ ๊ฒ์ด NoSQL์ธ๋ฐ, ์น ํ์ด์ง ๋ด์ ํ ์คํธ๋ค์ ํํ์ ๋จ์์ ํ ํฐ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ํ ํฐ๊ณผ ํด๋น ํ ํฐ์ด ํฌํจ๋ ํ์ด์ง๋ค์ URL์ ๋งตํํ๋ Inverted Index(์ญ ์ธ๋ฑ์ค) ๊ตฌ์กฐ๋ฅผ NoSQL์ ํตํด ๊ตฌํํ๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ธ RDMBS๋ก ๊ตฌํํ์ ๊ฒฝ์ฐ ๊ฒ์ ์ฐฝ์ ๋จ์ด๋ฅผ ์ ๋ ฅํ์ ๋๋ง๋ค ์๋นํ ์๊ฐ์ด ์์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ๋ณด์ฅ๋์ด์ผ ํ๊ฑฐ๋ ์ฌ๋ฌ๋ฒ์ ์กฐ์ธ ์ฐ์ฐ์ด ํ์ํ ๋ฐ์ดํฐ๋ผ๋ฉด NoSQL์ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋ค RDBMS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ค. NoSQL์ RDBMS๋ฅผ ๋์ฒดํ๊ธฐ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋๋ผ ์ํธ ๋ณด์ํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ, ๋ฐ๋ผ์ ๋ชฉ์ ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
C++, Java, Python ๋ฑ ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ฌ์ฉํด์ ํ๋์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ ๊ฒ์ฒ๋ผ(Polyglot Programming) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์ ๋ค์ํ ์ ์ฅ์(Polyglot Persistance)๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค๋ ์ ์์ NoSQL์ ์์๋ ํฌ๋ค๊ณ ๋ณผ ์ ์๋ค.
7. ์ข ๋ฅ[ํธ์ง]
- Redis
- Cassandra
- HBase
- Firebase์ ์ค์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Cloud Firestore
[1] "Consistency is not an absolute priority", QCon London 2007, Werner Vogels
[2] ORACLE RAC(Real Application Cluster), ๋ง์ดํฌ๋ก์ํํธ SQL server ๋ฑ
[3] Atomicity + Consistency + Isolation + Durability Transaction
[4] ์ง์๊ฐ put, get, delete ๋ฟ์ด๋ค.
[5] ํค-๊ฐ ๋ชจ๋ธ, ๋ํ๋จผํธ ๋ชจ๋ธ
[6] Cassandra๋ฅผ ์ฌ์ฉํ๋ค HBase๋ก ๋ฐ๊พธ์๋ค๊ณ ํ๋ค.