SQL๊ณผ NoSQL์ ์ฐจ์ด๋?
SQL์ ์ข ๋ฅ๋ฅผ ๊ณต๋ถํ๋ฉด์ SQL , NoSQL ์ ์์ฃผ ๋ค์ด๋ดค์ ๊ฒ์ด๋ค.
๋ณดํต Spring์ ๊ฐ๋ฐํ ๋๋ SQL์ธ MySQL์, Node.js์์๋ NoSQL์ธ MongoDB ๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ์ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ด์ฒ๋ผ ํ๋ ์์ํฌ์ ๋ฐ๋ผ ๋จ์ํ ์ ํฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ํด์ ธ์ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์๋๋ค.
๊ทธ๋ ๋ค๋ฉด, SQL๊ณผ NoSQL์ ๋ํด ๊ณต๋ถํด๋ณด์!
SQL (๊ด๊ณํ DB)
ํํ, ์ ์ ์ด๋ผ๋ฉด SQL์ ๋ํด ๋จผ์ ๊ณต๋ถํด๋ดค์ ๊ฒ์ด๋ค.
์ด์ฒ๋ผ SQL์ ์ฌ์ฉํ๋ฉด RDBMS์์ ๋ฐ์ดํฐ์ CRUD๋ฅผ ํ ์ ์๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋
1. ๋ฐ์ดํฐ๋ ๊ด๊ณ๋ฅผ ํตํด ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ถ์ฐ๋๋ค.
2. ๋ฐ์ดํฐ๋ ์ ํด์ง ๋ฐ์ดํฐ ์คํค๋ง์ ๋ฐ๋ผ ํ ์ด๋ธ์ ์ ์ฅ๋๋ค.
์ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
NoSQL(๋น๊ด๊ณํ DB)
์ด์ ๋นํด NoSQL์ ๋ง๊ทธ๋๋ก "์คํค๋ง๋ ์๊ณ , ๊ด๊ณ๋ ์๋ค"
NoSQL์์ ๋ ์ฝ๋๋ฅผ ๋ฌธ์(Documents) ๋ผ๊ณ ํ๋ค.
NoSQL์ ํต์ฌ์ ์ธ ํน์ง์ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ์ปฌ๋ ์ ์ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฌธ์(Documents)๋ Json๊ณผ ๋น์ทํ ํํ๋ก ๊ฐ์ง๊ณ ์๋ค.
์ฌ๋ฌ ํ ์ด๋ธ์ ๋๋์ด ๋ด๋ ๊ด๊ณํ DB์ ๋ค๋ฅด๊ฒ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๋์ผํ ์ปฌ๋ ์ ์ ๋ฃ๋๋ค.
๋ฐ๋ผ์, ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ ํ์์์ด, ์ด๋ฏธ ํ์ํ ๋ชจ๋ ๊ฒ์ ๊ฐ์ถ ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. (์ฆ, ์กฐ์ธ์ ๊ฐ๋ ์ด ์๋ค)
์ถ๊ฐ ๊ฐ๋
์ด์ ๋ํด์ SQL vs NoSQL ๋ DB๋ฅผ ๋น๊ตํ ๋ Scaling(๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ) ๊ฐ๋ ๋ ์์๋์ด์ผ ํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ํ์ฅ์ฑ์ ์์ง์ ํ์ฅ๊ณผ ์ํ์ ํ์ฅ์ผ๋ก ๋๋์ด์ง๊ฒ ๋๋ค.
์์ง์ ํ์ฅ : ๋จ์ํ DB ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ (ex. CPU ์ ๊ทธ๋ ์ด๋)
์ํ์ ํ์ฅ : ๋ ๋ง์ ์๋ฒ๊ฐ ์ถ๊ฐ๋๊ณ , DB๊ฐ ์ ์ฒด์ ์ผ๋ก ๋ถ์ฐ๋จ์ ์๋ฏธ (ํ๋์ DB์์ ์๋ํ์ง๋ง ์ฌ๋ฌ ํธ์คํธ์์ ์๋๋จ)
=> ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์ผ๋ก ์ธํด SQL DB๋ ์ผ๋ฐ์ ์ผ๋ก ์์ง์ ํ์ฅ๋ง ์ง์ํ๋ฉฐ, ์ํ์ ํ์ฅ์ NoSQL DB์์๋ง ๊ฐ๋ฅํ๋ค.
SQL vs NoSQL
๊ทธ๋ ๋ค๋ฉด, SQL๊ณผ NoSQL์ ์ฅ/๋จ์ ์ ๋น๊ตํด๋ณด์
SQL ์ฅ/๋จ์
์ฅ์
1. ๊ด๊ณ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ด ํ๋ฒ๋ง ์ ์ฅํ๋ค.
2. ๋ช ํํ๊ฒ ์ ์๋ ์คํค๋ง๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค.
๋จ์
1. ๋ ์ ์ฐํ๋ฉฐ, ๋์ค์ ์์ ํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ์ฌ์ ์ ๊ณํํ๊ณ ์๋ ค์ผ ํ๋ค.
2. ์์ง์ ํ์ฅ๋ง ๊ฐ๋ฅํ๋ค.
3. ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์ด ์กฐ์ธ๋ฌธ์ด ๋ง์ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
NoSQL ์ฅ/๋จ์
์ฅ์
1. ์คํค๋ง๊ฐ ์์ด ์ ์ฐํ๋ฉฐ, ์ธ์ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ์กฐ์ ํ์ฌ ์๋ก์ด ํ๋๋ ์ถ๊ฐํ ์ ์๋ค.
2. ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์๋ก ํ๋ ํ์์ผ๋ก ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์๋๊ฐ ๋น ๋ฅด๋ค.
3. ์์ง ๋ฟ๋ง ์๋๋ผ ์ํ์ ํ์ฅ์ด ๊ฐ๋ฅํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์์ํค๋ ๋ชจ๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
๋จ์
1. ์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ ๋ฏธ๋ฃฐ์ ์๋ค.
2. ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ปฌ๋ ์ ์ ์ค๋ณต๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ ๋ชจ๋ ์ปฌ๋ ์ ์์ ์ํํด์ผ ํด์ ์์ ์ด ๊น๋ค๋กญ๋ค.
3. ๋ฐ์ดํฐ ์ค๋ณต์ ๊ณ์ํด์ ์ ๋ฐ์ดํธ ํด์ฃผ์ด์ผ ํ๋ค.
์ฆ, SQL ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋
1. ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ
2. ๋ณ๊ฒฝ๋ ์ฌ์ง๊ฐ ์๊ณ ๋ช ํํ ์คํค๋ง๊ฐ ์ฌ์ฉ์์ ๋ฐ์ดํฐ์๊ฒ ์ค์ํ ๊ฒฝ์ฐ
์ฌ์ฉํ๋ฉฐ,
NoSQL ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋
1. ๋ฐ์ดํฐ ๋ณ๊ฒฝ๋ณด๋ค ์กฐํ๊ฐ ๋ง์ ๊ฒฝ์ฐ
2. ์ ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ ์๊ฑฐ๋ ๋ณ๊ฒฝ/ํ์ฅ ๋ ์ ์๋ ๊ฒฝ์ฐ
3. DB๋ฅผ ์ํ์ผ๋ก ํ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ (๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ)
์ ํํ๋ ๊ฒ์ด ์ข๋ค.
๋ฌผ๋ก , ์ด๊ฒ์ด ์ ๋ต์ ์๋๊ธฐ์ ํ์ ์ํฉ์ ๋ง์ถฐ ์ด๋๊ฒ์ ์ ํํ ๋ ๋ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ฌ ์ข์์ง ํ๊ตฌํด๋ณผ ํ์๊ฐ ์๋ค.