๐ SQL (๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, RDBMS)
- ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด(Structured Query Language)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐ์ดํฐ๋ ํ(Row)๊ณผ ์ด(Column)๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ์ ์ ์ฅ๋จ
- ํ ์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ

๐ NoSQL (๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, Not Only SQL)
- ์ ํต์ ์ธ SQL ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, ๋น์ ํ ๋๋ ๋ฐ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฐํ๊ฒ ์ ์ฅํ๋ ๋น๊ด๊ณํ DB.
- ํ ์ด๋ธ ๊ตฌ์กฐ๊ฐ ์๊ฑฐ๋ ์ ๋์ ์ด๋ฉฐ, ๋ค์ํ ๋ฐ์ดํฐ ๋ชจ๋ธ(Document, Key-Value ๋ฑ)์ ์ง์ํจ.
๊ทธ๋ ๋ค๋ฉด NOSQL ์ ์๊ธด๊ฑธ๊น?
๋ฌด์ํ ๋ง์ ๋ฐ์ดํฐ์ ์ ์ฅ์ด ๊ฐ๋ฅํด์ง๋ฉด์, ๋ถ์ฐ์ฒ๋ฆฌ ๋ฐ ์ ์ฅ์ ๊ฐ๋ ์ธ ํ๋ก์ด ๋์ค๊ณ RDB๋ก๋ ์ ํฉํ์ง ์๊ฒ ๋์์ผ๋ฉฐ, ๋น์ ํ ๋ฐ์ดํฐ์ ์ ์ฅ ์์๊ฐ ๋์์ง๋ฉด์ RDB๋ฅผ ํตํ ์ ์ฅ์ ํ๊ณ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฐ ์ํฉ์์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๋์ค๊ฒ๋ ๊ฒ์ด NoSQL์ด๋ค.

โผ ์ฅ๋จ์ ๋น๊ต
โญ๏ธ SQL์ ์ฅ์
- ๋ช ํํ๊ฒ ์ ์๋ ์คํค๋ง, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ
- ๊ด๊ณ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ด ํ๋ฒ๋ง ์ ์ฅ
โ SQL์ ๋จ์
- ์๋์ ์ผ๋ก ๋ ์ ์ฐํ๋ค. ๋ฐ์ดํฐ์คํค๋ง๋ ์ฌ์ ์ ๊ณํ๋๊ณ ์๋ ค์ ธ์ผํจ. (๋์ค์ ์์ ํ๊ธฐ๊ฐ ๋ฒ๊ฑฐ๋กญ๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ ์๋ ์๋ค.)
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๊ธฐ ๋๋ฌธ์, JOIN๋ฌธ์ด ๋ง์ ๋งค์ฐ ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง ์ ์์
- ์ํ์ ํ์ฅ์ด ์ด๋ ต๊ณ , ๋์ฒด๋ก ์์ง์ ํ์ฅ๋ง ๊ฐ๋ฅํ๋ค. ์ฆ, ์ด๋ค ์์ ์์ (์ฒ๋ฆฌ ํ ์ ์๋ ์ฒ๋ฆฌ๋๊ณผ ๊ด๋ จํ์ฌ) ์ฑ์ฅ ํ๊ณ์ ์ง๋ฉด
โญ๏ธ NoSQL์ ์ฅ์
- ์คํค๋ง๊ฐ ์๊ธฐ ๋๋ฌธ์, ํจ์ฌ ๋ ์ ์ฐํจ์ผ๋ก ์ธ์ ๋ ์ง ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ ํ๊ณ ์๋ก์ด "ํ๋"๋ฅผ ์ถ๊ฐ ํ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์๋ก ํ๋ ํ์์ผ๋ก ์ ์ฅ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์๋๊ฐ ๋น ๋ฆ
- ์์ง ๋ฐ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํ๋ฏ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์์ํค๋ ๋ชจ๋ ์ฝ๊ธฐ / ์ฐ๊ธฐ ์์ฒญ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
โ NoSQL์ ๋จ์
- ์ ์ฐ์ฑ ๋๋ฌธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ ํ์ง ๋ชปํ๊ณ ๋ฏธ๋ฃจ๊ฒ ๋ ์ ์์
- ๋ฐ์ดํฐ ์ค๋ณต์ ์ฌ๋ฌ ์ปฌ๋ ์ ๊ณผ ๋ฌธ์๊ฐ (SQL์ฒ๋ผ ํ๋์ ํ ์ด๋ธ์ ํ๋์ ๋ ์ฝ๋๊ฐ ์๋๋ผ) ์ฌ๋ฌ ๊ฐ์ ๋ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ
- ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ปฌ๋ ์ ์ ์ค๋ณต๋์ด ์๊ธฐ ๋๋ฌธ์, ์์ (update)๋ฅผ ํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ปฌ๋ ์ ์์ ์ํํด์ผ ํจ์ ์๋ฏธ(SQL์์๋ ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ฒ๋ง ์ํ)
์ ๋ฆฌํ์ง๋ฉด!
| ํญ๋ชฉ | SQL | NoSQL |
| ์คํค๋ง | ๊ณ ์ ๋ ์คํค๋ง | ์ ์ฐํ ์คํค๋ง (Schema-less) |
| ํ์ฅ์ฑ | ์์ง ํ์ฅ | ์ํ ํ์ฅ(Scale-out)์ ์ ๋ฆฌ |
| ์ ํฉ์ฑ | ๋์ ๋ฐ์ดํฐ ์ ํฉ์ฑ(ACID ๋ณด์ฅ) | ๋ถ์ฐ ํ๊ฒฝ์์ ์ผ๊ด์ฑ๋ณด๋ค ๊ฐ์ฉ์ฑ ์ฐ์ (CAP ์ด๋ก )์ ํ์ ์ด๊ฑฐ๋ ์์ |
| ๋ณต์กํ ์ฟผ๋ฆฌ | Join , Group By ๋ฑ ๊ฐ๋ ฅํ ์ง์ ์ง์ | ์ ํ์ ์ด๊ฑฐ๋ ์์ |
| ์ฒ๋ฆฌ์๋ | ๋์ฉ๋ ์ค์๊ฐ ์ฒ๋ฆฌ์ ๋ถ์ ํ ์ ์์ | ๋น ๋ฅธ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฑ๋ฅ (๋จ์ ์ฟผ๋ฆฌ ์์ฃผ) |
| ์ ํฉ ๋ฐ์ดํฐ | ์ ํ ๋ฐ์ดํฐ(๊ด๊ณํ ๊ตฌ์กฐ) | ๋น์ ํ, ๋ฐ์ ํ ๋ฐ์ดํฐ (JSON, ๋ก๊ทธ ๋ฑ) |
๊ทธ๋ ๋ค๋ฉด SQL ? Nosql? ๋ญ๊ฐ ์ข์๋ฐ? ์ ๋ต์ ์๋ค. ๊ทธ๋ผ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น?
โ SQL์ด ์ ํฉํ ๊ฒฝ์ฐ
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ(์์ )๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ ๊ฒฝ์ฐ (NoSQL์์๋ผ๋ฉด ์ฌ๋ฌ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์ ํด์ค์ผ๋ง ํ๋ค.)
- ๋ณ๊ฒฝ๋ ์ฌ์ง๊ฐ ์๊ณ , ๋ช ํํ ์คํค๋ง๊ฐ ์ฌ์ฉ์์ค์ ๋ฐ์ดํฐ์๊ฒ ์ค์ํ ๊ฒฝ์ฐ
- ์: ์ํ ์์คํ , ERP, ์ ์์๊ฑฐ๋ ๊ฒฐ์ ๋ฑ
โ NoSQL์ด ์ ํฉํ ๊ฒฝ์ฐ
- ์ ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ ์๊ฑฐ๋ ๋ณ๊ฒฝ / ํ์ฅ ๋ ์ ์๋ ๊ฒฝ์ฐ
- ์ฝ๊ธฐ(read)์ฒ๋ฆฌ๋ฅผ ์์ฃผํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ๋ณ๊ฒฝ(update)ํ์ง ์๋ ๊ฒฝ์ฐ (์ฆ, ํ๋ฒ์ ๋ณ๊ฒฝ์ผ๋ก ์์ญ ๊ฐ์ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธ ํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ์ผ๋ก ํ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ (์ฆ, ๋ง๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ)
- ์: ์ฑํ ์์คํ , ๋ด์คํผ๋, ๋ก๊ทธ ๋ถ์ ๋ฑ
๐ ์ข ๋ฅ
๐ SQL
- MySQL
- PostgreSQL
- Oracle DB
- SQL Server (MSSQL)
- MariaDB
๐ NoSQL
- Redis, DynamoDB
- MongoDB, CouchDB
- Cassandra, HBase
- Neo4j, Amazon Neptune
๐ง ๊ฒฐ๋ก ์์ฝ
- SQL์ ๊ด๊ณ๊ฐ ๋ช ํํ๊ณ ์ ํํ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ๋ค๋ฃฐ ๋ ์ ํฉ
- NoSQL์ ๋๊ท๋ชจ, ์ ์ฐํ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ๋๋ ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋๊ฐ ํ์ํ ์ํฉ์์ ์ ํฉ
- ํ๋ก์ ํธ ๋ชฉ์ ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ, ํ์ฅ์ฑ ์๊ตฌ์ ๋ฐ๋ผ ํผ์ฉ(Multi-model) ๋๊ธฐ๋ ํจ
๐ ์ฐธ๊ณ
https://velog.io/@aszxvcb/SQL%EA%B3%BC-NoSQL
'SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [MongoDB] MAC์ MongoDB ์ค์น๋ฒ (1) | 2024.06.10 |
|---|---|
| [MYSQL] MY SQL MAC์ ํ๊ฒฝ์ค์น (2) | 2024.06.04 |