๐ฏ SQL vs NoSQL
SQL(Structured Query Language)
SQL(Structured Query Language)์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์ธ์ด์
๋๋ค.
SQL์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์กฐ์ํ๋ ๋ฑ์ ์์
์ ํ ์ ์์ต๋๋ค. SQL์ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ์ ํ์ ์ ์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฝ์
, ์์ , ์ญ์ , ๊ฒ์ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง๋ฅผ ์ ์ํ๋ ๋ฐ์ดํฐ ์ ์ ์ธ์ด(DDL), ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด(DML), ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐ์ดํฐ ๊ฒ์ ์ธ์ด(DQL), ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ๋ ๋ฐ์ดํฐ ์ ์ด ์ธ์ด(DCL)๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
SQL์ ๋๋ถ๋ถ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(RDBMS)์์ ์ง์๋ฉ๋๋ค.
โญ๏ธ SQL์ ์ฅ์
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํน์ง์ธ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๊ฐ ํ์คํ๊ฒ ์ ์๋์ด ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ์ด์์ด ๋น๊ต์ ์ฝ์ต๋๋ค.
- SQL์ ๋ฌธ๋ฒ์ด ์ง๊ด์ ์ด๊ณ ๊ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ๊ฒ์, ํํฐ๋ง, ์ ๋ ฌ, ๊ทธ๋ฃนํ ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๐๏ธ SQL์ ๋จ์
- ๊ณ ์ ๋ ์คํค๋ง
- SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฏธ๋ฆฌ ์ ์๋ ์คํค๋ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ์คํค๋ง๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์์ ํด์ผ ํฉ๋๋ค. ์ด๋ ์คํค๋ง ๋ณ๊ฒฝ์ด ๋น๋ฒํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
- ์์ง์ ํ์ฅ ์ด๋ ค์
- SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ์๋ฒ์์ ์๋ํ๋ฉฐ, ์๋ฒ ์ฉ๋์ด ํ๊ณ์ ๋๋ฌํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค. ๋๊ท๋ชจ ํธ๋ํฝ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ์๋ฒ์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ๋น์ผ ํ๋์จ์ด๋ฅผ ๊ตฌ์ ํ๊ฑฐ๋, ์์ง์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ๋ฒ๋ฐ์ ์์ต๋๋ค.
- ๋์ ์ ์ง๋ณด์ ๋น์ฉ
- SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์คํค๋ง๋ฅผ ์ค๊ณํ๊ณ ์ ์ง๋ณด์ํ๋ ๋ฐ ๋ง์ ์๊ฐ๊ณผ ๋น์ฉ์ด ๋ค์ด๊ฐ๋๋ค. ๋ฐ๋ผ์ ์์ ๊ท๋ชจ์ ํ๋ก์ ํธ๋ ๊ฐ์ธ์ ์ธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ์๋ ๋น์ฉ ๋๋น ํจ์จ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
- ๋ณต์กํ ์กฐ์ธ ์์
- SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํ์ง๋ง ์ด๋ฌํ ์กฐ์ธ ์์ ์ ๋งค์ฐ ๋ณต์กํ๋ฉฐ, ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆด ์ ์์ต๋๋ค.
- ์คํค๋ง ์์ ์ด ์ด๋ ค์
- SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์คํค๋ง ๋ณ๊ฒฝ์ด ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ์คํค๋ง ์์ ์ ํ ๋๋ง๋ค ๋๊ท๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํ๊ณ , ๋ค์ ๋ณต์ํด์ผ ํ๋ ๋ฑ ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
NoSQL(Not Only SQL)
NoSQL์ "Not Only SQL"์ ์ฝ์ด๋ก, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๊ณผ ๋ฌ๋ฆฌ ์คํค๋ง๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ์ง ์๋ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ์ ๋งํฉ๋๋ค.
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์์ฑ์ด ๋ค์ํ๋ฉฐ, ์ํ์ ์ผ๋ก ํ์ฅ์ด ๊ฐ๋ฅํ ๋ถ์ฐ ์์คํ
์ํคํ
์ฒ๋ฅผ ๊ฐ์ง๋๋ค.
NoSQL์ ํฌ๊ฒ 4๊ฐ์ง ์ ํ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค.
- Key-Value Stores
- ๊ฐ๊ฐ์ ์์ดํ ์ด key์ value๋ก ์ ์ฅ๋๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋๋ค. Redis, Riak ๋ฑ์ด ์ด ์ ํ์ ํด๋น๋ฉ๋๋ค.
- Document Databases
- key-value stores์ ์ ์ฌํ์ง๋ง, value๊ฐ ๊ตฌ์กฐํ๋ ๋ฌธ์์ผ ์ ์์ต๋๋ค. MongoDB, CouchDB ๋ฑ์ด ์ด ์ ํ์ ํด๋น๋ฉ๋๋ค.
- Column-Family Stores
- BigTable ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ column์ผ๋ก ์ด๋ฃจ์ด์ง ๋ ์ฝ๋๋ฅผ ์ ์ฅํฉ๋๋ค. Cassandra, HBase ๋ฑ์ด ์ด ์ ํ์ ํด๋น๋ฉ๋๋ค.
- Graph Databases
- ๋ฐ์ดํฐ๋ฅผ ๋ ธ๋(node)์ ์ฃ์ง(edge)์ ๊ทธ๋ํ ํํ๋ก ์ ์ฅํฉ๋๋ค. Neo4j, OrientDB ๋ฑ์ด ์ด ์ ํ์ ํด๋น๋ฉ๋๋ค.
โญ๏ธ NoSQL์ ์ฅ์
- ์ ์ฐ์ฑ
- ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ๋ฏธ๋ฆฌ ์ ์๋์ด ์์ง ์์์ ์๋ก์ด ์์ฑ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ๋ ์ ์ฐํฉ๋๋ค.
- ํ์ฅ์ฑ
- ์ํ์ ์ผ๋ก ์ฝ๊ฒ ํ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋์ ๊ฐ์ฉ์ฑ
- ๋ถ์ฐ ์์คํ ์ํคํ ์ฒ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ฐ์ดํฐ ์ ์ค์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
- ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋
- ๋๋ถ๋ถ์ NoSQL์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์๋ต ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๐๏ธ NoSQL์ ๋จ์
- ํ๊ณ๋ ๊ธฐ๋ฅ
- NoSQL์ ๊ฐ๊ฐ์ ์ ํ์ ๋ฐ๋ผ ํนํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ด์ ํน์ ํ ์์ ์ ์ ํฉํ์ง๋ง, ๋ชจ๋ ์์ ์ ๋ํด์๋ SQL๋ณด๋ค ์ ํ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ณด์ฅ ์ด๋ ค์
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ๋ณด์ฅ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
- ํ์ต ๋น์ฉ
- SQL๋ณด๋ค NoSQL์ ํ์ตํ๋ ๋ฐ ๋์ ๋น์ฉ์ด ํ์ํฉ๋๋ค.
SQL vs NoSQL
SQL๊ณผ NoSQL์ ๊ฐ๊ฐ ๊ฒฐ์ ํ ๋ ๋ช ๊ฐ์ง ์์๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์คํค๋ง
- SQL์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ ํฉํฉ๋๋ค. ์คํค๋ง๊ฐ ๋ช ํํ๊ฒ ์ ์๋์ด ์๊ณ , ๊ด๊ณ๊ฐ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ฉ์ดํฉ๋๋ค. ๋ฐ๋ฉด NoSQL์ ์คํค๋ง๊ฐ ์ ์ฐํ๊ณ ์์ ๋ก์ด ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ๋ถ๋ช ํํ๊ฑฐ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒฝ์ฐ NoSQL์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ฐ์ดํฐ ์๊ณผ ์ฒ๋ฆฌ ์๋
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋น ๋ฅธ ์ฝ๊ธฐ/์ฐ๊ธฐ ์๋๋ฅผ ์๊ตฌํ๋ ๊ฒฝ์ฐ NoSQL์ด ์ ํฉํฉ๋๋ค. NoSQL์ ์ํ์ ํ์ฅ์ด ์ฉ์ดํ๊ณ ๋ถ์ฐ ์ฒ๋ฆฌ์ ์ ํฉํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. SQL์ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์๋ ์ ํฉํ์ง๋ง, NoSQL๋ณด๋ค๋ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฌ๊ณ , ์์ง์ ํ์ฅ์ ํ๊ณ๊ฐ ์์ ์ ์์ต๋๋ค.
- ํธ๋์ญ์
์ฒ๋ฆฌ์ ์ผ๊ด์ฑ
- SQL์ ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ) ํธ๋์ญ์ ์ ์ง์ํ๋ฉฐ, ๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ๋งค์ฐ ์ค์ํ ๊ฒฝ์ฐ SQL์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. NoSQL์ ์ผ๊ด์ฑ์ด ๋ณด์ฅ๋์ง ์์ ์ ์์ง๋ง, ๋์ ๋ถ์ฐ ์ฒ๋ฆฌ๊ฐ ์ฉ์ดํ๊ณ , ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ด ๋์ต๋๋ค.
- ๊ฐ๋ฐ์ ๋ฐ ์ธํ๋ผ ์ญ๋
- SQL๊ณผ NoSQL์ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ๋ฐ ๋ฐ ์ด์ ๋ฐฉ์์ด ํ์ํฉ๋๋ค. SQL์ ๊ด๊ณํ ๋ชจ๋ธ๊ณผ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ์ ๋์ ์ญ๋์ด ํ์ํ๊ณ , ๋์ฉ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ณต์กํ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํด์ผ ํ ์๋ ์์ต๋๋ค. NoSQL์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ๋ค๋ฅธ ๋ฌธ๋ฒ๊ณผ API๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ณต์กํ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ํ์๋ ์์ง๋ง, ๋ถ์ฐ ์ฒ๋ฆฌ ๋ฐ ์ด์ ๊ฒฝํ์ด ํ์ํฉ๋๋ค.
'Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Database] ์ด์(Anomaly) (0) | 2023.03.26 |
---|---|
[Database] ์ ๊ทํ(Normalization) (0) | 2023.03.26 |
[Database] SQL Injection (0) | 2023.03.25 |
[Database] JOIN (0) | 2023.03.25 |
[Database] Key (0) | 2023.03.25 |