[SQL(Structured Query Language)]
SQL์ RDBMS(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ )์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, NoSQL๋ณด๋ค ์ค๋๋๊ณ ๋ง์ด ์ฌ์ฉ๋์ด ์ด. SQL์ ์์๋ก๋ MySQL, PostgreSQL ๋ฑ์ด ์์.
[NoSQL(Not Only Structured Query Language)]
NoSQL์ ์์ ๋งํ SQL๋ณด๋ค ๋ ์ ํ์ ์ธ ๋ชจ๋ธ์ ์ด์ฉํด ๋ฐ์ดํฐ์ ์ ์ฅ ๋ฐ ๊ฒ์ ๋ฉ์ปค๋์ฆ์ ์ ๊ณต. NoSQL์ ์์๋ก๋ mongoDB, redis ๋ฑ์ด ์์!
- ๋ค์ด๊ฐ๊ธฐ์ ์! ์คํค๋ง๋?
-> ์คํค๋ง๋ DB์ ์ด๋ค ๊ตฌ์กฐ๋ก, ์ด๋ค ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ์ ์ฅ ๋์ด์ผ ํ๋์ง ์ ์ํ ๊ฒ์ด๋ค.- ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ์ ์ฝ์กฐ๊ฑด์ ๊ดํด ์ ๋ฐ์ ์ธ ๋ช ์ธ๋ฅผ ๊ธฐ์ ํ ๊ฒ.
- ๊ฐ์ฒด์ ํน์ง์ ๋ํ๋ด๋ ์์ฑ(attribute), ์์ฑ๋ค์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฐ์ฒด(entity), ๊ฐ์ฒด ๊ฐ ์กด์ฌํ๋ ๊ด๊ณ(relationship)์ ๋ํ ์ ์์ ์ด๋ค์ด ์ ์งํด์ผํ ์ ์ฝ์กฐ๊ฑด๋ค์ ๊ธฐ์ ํ ๊ฒ.
- ์ฌ์ฉ์ ๊ด์ ์ ๋ฐ๋ผ ์ธ๋ถ, ๋ด๋ถ, ๊ฐ๋ ์คํค๋ง๋ก ๋๋๋ค.
- ๊ฐ๋ ์คํค๋ง : ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฒด์ ์ธ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ
- ๋ด๋ถ ์คํค๋ง : ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ์ ์ฅ๊ตฌ์กฐ
- ์ธ๋ถ ์คํค๋ง : ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์คํค๋ง (์๋ธ ์คํค๋ง๋ผ๊ณ ๋ ํ๋ค.)
SQL์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ ์คํค๋ง๊ฐ ๋จผ์ ์ ์๋์ด์ผ ํ๋ค.
์ฆ, ์์์ ๊ฐ๋จํ ์ธ๊ธํ, ์ธ๋ถ/๋ด๋ถ/๊ฐ๋
์คํค๋ง๋ฅผ ์ ์ํด์ผ ๋ฐ์ดํฐ์ ์ ์ฅ์ ์์ํ ์ ์๋ค๋ ์๊ธฐ.
NoSQL์์๋ Document์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
JSON ํน์ ๊ฐ์ฒด์ ํํ์ธ key-value๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ์ ์ ์คํค๋ง๋ฅผ ์ ์ํ์ง ์์๋ ๋๋ค๋ ์ ์ด๋ค.
๊ทธ๋์ ์ด๋ค ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ ์ง ํ์ ์ด ์์ง ์๋ ์ํฉ์์๋ NoSQL์ด ์ ์ ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํํ ๋งํ๋ค.
SQL๊ณผ noSQL์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ๊ฐ ๋ค๋ฆ!
[SQL]
SQL์ ์ด์ฉํด ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค๊ณ ์๊ฐํด๋ณด์.
๋ง์ฝ ์ด ๊ณ ๊ฐ ํ
์ด๋ธ์ email ์ฃผ์๋ฅผ ์ถ๊ฐ๋ก ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ๋ ๊น? ๋๋ ์๋ก์ด ๊ณ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋๋ฐ, ๊ทธ ๊ณ ๊ฐ์ ํธ๋ํฐ ๋ฒํธ๋ฅผ ๋ชจ๋ฅธ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ๋ ๊น?
SQL์์๋ ์๊ฒฉํ ์คํค๋ง(๋ฐ์ดํฐ ์ ์ฅ ๊ตฌ์กฐ)๋ฅผ ์์น์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์คํค๋ง์ ๋ง์ง ์๋ ํ์์ ๋ฐ์ดํฐ๋ ์ ์ฅํ ์ ์์. ๋ฐ๋ผ์ ์์ ํ ์ด๋ธ์ ํ ๋ช ์ ๊ณ ๊ฐ๋ง email์ ์ถ๊ฐํ๊ฑฐ๋, ํธ๋ํฐ ๋ฒํธ๋ฅผ ์ ์ง ์๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํจ.
[NoSQL]
๋ฐ๋ฉด, NoSQL์์๋ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์์.
์์ ๊ฐ์ด "John"์ ๋ฌธ์(=document =SQL์ ๋ ์ฝ๋)์ email key๊ฐ์ ์ถ๊ฐํ๋ค๊ณ ํด์, ๋ค๋ฅธ ๋ฌธ์์ ์ํฅ์ ๋ฏธ์น์ง ์์. ๋ฐ๋ผ์ NoSQL์ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ๊ฐ์ ํ์๊ฐ ์์.
[SQL(Relational)]
SQL์ ๋ฐ์ดํฐ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ง์ ํ๊ธฐ ์ฝ๋ค.
Orders ํ
์ด๋ธ์ ๋ณด๋ฉด, Customer ID์ Product ID๋ฅผ ํตํด John์ด ์ฐํ์ 12๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด์ฒ๋ผ SQL์ ๊ฐ ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ ์ง์ ์ ํตํด ํ
์ด๋ธ์ ์ ๊ทผํ ์ ์๊ณ , ๋ฐ๋ผ์ ์ค๋ณต ์์ด ํด๋น ๋ฐ์ดํฐ๋ง์ ๋ค๋ฃฐ ์ ์๋ค.
[NoSQL(Non-Relational)]
๋ฐ๋ฉด NoSQL์์๋ ๋ณดํต ํ๋์ ์ปฌ๋ ์
(SQL์์์ ํ
์ด๋ธ)์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์์ฑํจ. John์ด ์ฐํ์ 12๊ฐ ์์ ๋, Orders ์ปฌ๋ ์
์๋ ์ฃผ๋ฌธ ๋ฒํธ์ ๊ณ ๊ฐ์ ๋ํ ์ ๋ณด, ์ํ์ ๋ํ ์ ๋ณด๊ฐ ๋ชจ๋ ๋ค์ด๊ฐ๊ฒ ๋จ. ์ด๋ SQL๊ณผ ๋ฌ๋ฆฌ id๋ง์ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ๊ณ ๊ฐ ์ด๋ฆ์ด๋ ์ ํ๋ฒํธ ๋ฑ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ํด์ Customers์ Products๋ฅผ ๋ณด์ง ์๊ณ Orders๋ง์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ป์ ์ ์๋๋ก ํ๋ค.
์ด๋ฐ ๋ฐฉ์์ SQL๊ณผ ๋ค๋ฅด๊ฒ ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ๊ฒ ๋๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ ๋๋ง๋ค ์ฃผ์ํด์ผ ํจ. ์๋ฅผ ๋ค์ด Customer์ John์ email์ ์ถ๊ฐํ๋๋ฐ, Orders์๋ ์ด๋ฅผ ์
๋ฐ์ดํธํ์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์...!
ํ์ฅ์ฑ์ ์๋ฏธ๋ ์ฒ๋ฆฌํ ์์ ๋์ด ๋์ด๋ ๋๋ง๋ค, ๋์ด๋๋ ์๊ตฌ์ ๋ง์ถฐ ํฌ๊ธฐ๋ฅผ ํค์ฐ๊ฑฐ๋ ๊ธฐ๋ฅ์ ํ์ฅ์ํฌ ์ ์๋ ์์คํ , ๋คํธ์ํฌ ํน์ ๊ณผ์ ์ ๋ฅ๋ ฅ์ ๋งํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ฅ์ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๊ตฌ๋ณ๋๋๋ฐ, ์์ง์ ๊ณผ ์ํ์ ์ผ๋ก ๊ตฌ๋ณ๋๋ค.
[SQL(vertical scale)]
SQL์ ์ผ๋ฐ์ ์ผ๋ก ์์ง์ ํ์ฅ(vertical scale)๋ง์ ์ง์. ์์ง์ ํ์ฅ์ ํ๋์จ์ด๋ฅผ ์
๊ทธ๋ ์ด๋ํ๊ฑฐ๋ ์ถ๊ฐํ์ฌ ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ์ ๋งํจ.
[NoSQL(horizontal scale)]
๋ฐ๋ฉด์ NoSQL์์๋ ์ํ์ ํ์ฅ(horizontal scale)์ด ๊ฐ๋ฅ. ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ์ฐ์ํฌ ์ ์์.
์ฅ์
ํ์คํ๊ณ ๋ช
ํํ๊ฒ ์ ์๋ ์คํค๋ง,
๊ตฌ์กฐ์ ์์ ์ฑ์ ๋ณด์ฅํ ์ ์๋ค.
๊ด๊ณ๋ฅผ ์ค์ ํ๊ธฐ์, ๋ฐ์ดํฐ๋ ์ค๋ณต์์ด ํ๋ฒ๋ง ์ ์ฅ๋๋ค.
๋จ์
์ ์ฐํ์ง ๋ชปํ๋ค. ์คํค๋ง๋ฅผ ์ฌ์ ์ ์๊ฐ ๋ค์ฌ ์ฒ ์ ํ๊ฒ ์ง์ผ ํ๊ณ ๋์ค์ ์์ ํ๊ธฐ ๋ฒ๊ฑฐ๋กญ๋ค (์๊ฒฉํ ์คํค๋ง).
๊ด๊ณ๋ฅผ ๋งบ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ์, ์ค๋ณต๋์ง๋ ์์ง๋ง, ์กฐ์ธ์ ๋ง์ด ํด์ผํ ๊ฒฝ์ฐ ๋งค์ฐ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํ ์ ์๋ค.
์ํ์ ํ์ฅ์ด ๊ฐ๋ฅํ์ง๋ง ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ฑ์ฅ ํ๊ณ๊ฐ ์ค๋ ์์ ์ด ์จ๋ค.
๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ, ๋ ๋ช
ํํ ์คํค๋ง๊ฐ ์ฌ์ฉ์์ ๋ฐ์ดํฐ์๊ฒ ์ค์ํ ๊ฒฝ์ฐ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ข๋ค. ๊ธ์ต ์ฐ์
๊ณผ ๊ฐ์ ์์คํ
์ ํํ๊ฐ ๊ธ๊ฒฉํ๊ฒ ๋ณํ์ง ์์ผ๋ฉด์ ๊ทธ ์์ ๋ฐ์ดํฐ๊ฐ ๊ณ์ ๋ฐ๋๋ ๋ณด์์ ์ธ ์์คํ
์์ ์ ๋ฆฌํ๋ค.
์ฅ์
์คํค๋ง๊ฐ ์๊ธฐ์, ํจ์ฌ ๋ ์ ์ฐํ๋ค. ์ธ์ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์๋ค (ํ๋ ์ถ๊ฐ).
์ด๋ ํ ํ์์ผ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ธฐ์, ํ์ํ ๋๋ก ์ ์ฅํด ์ฝ์ด์ค๋ ์๋๊ฐ ๋นจ๋ผ์ง๋ค.
์์ง ๋ฐ ์ํ ํ์ฅ ๋ชจ๋ ๊ฐ๋ฅํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์์ํค๋ ๋ชจ๋ ์ฝ๊ธฐ / ์ฐ๊ธฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
๋จ์
์ ์ฐ์ฑ์ ์ํด, ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ ๊ณ์ ๋ฏธ๋ฃฐ ์ ์๋ค.
๋ฐ์ดํฐ๋ฅผ ์ค๋ณต๋๊ฒ ํ์ํ ์ปฌ๋ ์
๋ง๋ค ์ ์ฅํ ์ ์์ด, ํ์ํ ์ปฌ๋ ์
๋ง๋ค ๋๋ฉด์ ์ฌ๋ฌ ๊ฐ์ ๋ ์ฝ๋๋ฅผ ๋ค ์
๋ฐ์ดํธํด์ค์ผ ํ๋ค. ๋๋ฝํ ์, ๋ฐ์ดํฐ๊ฐ ์ต์ ์ด ์๋ ์ ์๋ค.
์์ ์, ๋ชจ๋ ์ปฌ๋ ์
์์ ๋ค ์์ ํด์ค์ผ ํ๋ค.
๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ ์๊ฑฐ๋ ๋ณ๊ฒฝ / ํ์ฅ ๋ ์ ์๋ ๊ฒฝ์ฐ (์ํ์ ์ผ๋ก), ์ฝ๊ธฐ ์ฒ๋ฆฌ๋ ๋ง์ด ํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉด ์ ๋ฆฌํ๋ค. ์คํํธ์
์ด ์งง์ ์๊ฐ์์ ๊ตฌ์กฐ๋ฑ์ ๊ณ์ ๋ฐ์ ์ํค๋ฉฐ ๋ณํ๋ฅผ ์ค์ผ ํ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค. ์ฝ๊ธฐ๋ฅผ ๋ง์ด ํ๊ณ ๋ง์ ์์ ์ ๋ณด๋ฅผ ์ ์ฅํด์ผํ๋...์ฑํ
์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉด ์ ๋ฆฌํ ๊ฒ ๊ฐ๋ค! ์ฝ์ด์ค๊ธฐ๋ง ํ๋ฉด ๋๋๊น!
์ฐธ๊ณ ์ด๋ฏธ์ง!
์ถ์ฒ: https://mjmjmj98.tistory.com/43