SQL vs NoSQL

์ •์Šน์›ยท2023๋…„ 3์›” 22์ผ
0
post-thumbnail
post-custom-banner

๐Ÿ“’ ๋ชฉ์ฐจ

๐Ÿ“Œ SQL์ด๋ž€?
๐Ÿ“Œ NoSQL์ด๋ž€?
๐Ÿ“Œ SQL๊ณผ NoSQL์˜ ์ฐจ์ด์ 

๐Ÿ“Œ SQL์ด๋ž€?

SQL์€ (Structured Query Language)์˜ ์•ฝ์ž๋กœ์„œ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์ž๋ฃŒ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์–ธ์–ด์ด๋‹ค.

๋ฌธ๋ฒ•์˜ ์ข…๋ฅ˜๋กœ๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด ์ง„๋‹ค.

โœ… DDL (Data Definition Lansguage, ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด)

- ๊ฐ ๋ฆด๋ ˆ์ด์…˜์„ ์ •์˜ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์ด๋ฉฐ, CREATE, ALTER, DROP ๋“ฑ์ด ์žˆ๋‹ค.

โœ… DML (Data Maniqulation Language, ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด)

- ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •, ์ถ”๊ฐ€, ์‚ญ์ œ์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๋‹ค, SELECT, INSERT, UPDATE ๋“ฑ์ด ์žˆ๋‹ค.

โœ… - DCL (Data Control Language, ๋ฐ์ดํ„ฐ ์ œ์–ด ์–ธ์–ด)

- ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ๋‚˜ ์‚ฌ์šฉ์ž๋ณ„๋กœ ๋ฆด๋ ˆ์ด์…˜ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ถŒํ•œ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๋‹ค. GRANT, REVOKE ๋“ฑ์ด ์žˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ, SQL ์–ธ์–ด์˜ ํŠน์ง•์œผ๋กœ๋Š” ๋จผ์ € SQL์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ํ•„๋“œ๋ช…์— ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋˜ํ•œ, SQL ๋ช…๋ น์€ ;(์„ธ๋ฏธ์ฝœ๋ก )์œผ๋กœ ๋๋‚˜์•ผํ•˜๋ฉฐ ๊ณ ์œ ์˜ ๊ฐ’์€ ''๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
๋งŒ์•ฝ SQL์—์„œ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธด๋‹ค๋ฉด ๋ฐฑํ‹ฑ(``)์œผ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ฃผ์„ ๋˜ํ•œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ๋ฐ, ๋ฌธ์žฅ ์•ž์— --์„ ๋ถ™์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. (์—ฌ๋Ÿฌ์ค„ ์ฃผ์„์ธ ๊ฒฝ์šฐ, /* */ ๊ฐ์‹ธ์ฃผ๊ธฐ)

์›Œํฌ๋กœ๋“œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ต์…˜์œผ๋กœ๋Š” MySQL, Oracle, Microsoft SQL Server, ProstgreSQL ๋“ฑ์ด ์žˆ๋‹ค.


๐Ÿ“Œ NoSQL์ด๋ž€?

NoSQL์€ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ์•ž์„œ ์‚ดํŽด๋ณธ SQL๊ณผ ๋ฐ˜๋Œ€๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ง€์–‘ํ•˜๋ฉฐ, ๋Œ€๋Ÿ‰์˜ ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•˜๋Š”๋ฐ ํŠนํ™”๋˜์–ด ์žˆ๋‹ค.
๋˜ํ•œ, ์Šคํ‚ค๋งˆ ์—†์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋Š์Šจํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ €์žฅ์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

ํƒ„์ƒ ๋ฐฐ๊ฒฝ์œผ๋กœ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ SQL์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์˜ ํ˜•ํƒœ์ด๋‹ค.

ํŠน์ง•์œผ๋กœ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€๋Š” ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SQL์˜ ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ์˜ ๊ด€๊ณ„๋ฅผ ์™ธ๋ž˜ํ‚ค๋กœ ์ •์˜ํ•˜๊ณ  JOIN์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, NoSQLdms JOIN์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹ค์Œ์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๊ธ‰์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋ถ„์‚ฐํ˜• ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด ํŠน์ • ์„œ๋ฒ„์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜๊ฑฐ๋‚˜ ์„œ๋น„์Šค๊ฐ€ ์ค‘์ง€๋˜์ง€ ์•Š๋Š”๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณ ์ •๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ ธ ์œ ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

์›Œํฌ๋กœ๋“œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ต์…˜์œผ๋กœ๋Š” MongoDB, Firebase, Redis, Cassandra ๋“ฑ์ด ์žˆ๋‹ค.


๐Ÿ“Œ SQL๊ณผ NoSQL์˜ ์ฐจ์ด์ 

SQL๊ณผ NoSQL์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ง€๋งŒ, NoSQL์€ ๋น„๊ด€ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

SQL์˜ ๊ฒฝ์šฐ, ์ฟผ๋ฆฌ ์–ธ์–ด ์ค‘ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์‹ฌํ•˜๊ณ  ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
๋˜ํ•œ, ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ •์˜๋œ ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์— ์ ํ•ฉํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์ ์œผ๋กœ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ „, ์ •์˜๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฒฐ์ •ํ•ด์•ผํ•˜๋ฉฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ผ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ œํ•œ์ ์ธ ๋ถ€๋ถ„์ด ์žˆ๋‹ค.

๋ฐ˜๋ฉด์—, NoSQL์˜ ๊ฒฝ์šฐ, ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ด๋ฉฐ, ๋™์  ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ์–ด ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ปฌ๋Ÿผ์ง€ํ–ฅ, ๋ฌธ์„œ์ง€ํ–ฅ, ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ KeyValue ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ, ์œ ์—ฐ์„ฑ์ด ์ข‹๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด, ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ฌธ์„œ๋Š” ๊ณ ์œ ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ ์œ ์—ฐ์„ฑ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๊ตฌ๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ค‘์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋˜ํ•œ, ํ™•์žฅ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์ด ์ƒ๊ฒผ์„ ๋•Œ, SQL์€ ์ˆ˜์ง์œผ๋กœ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, CPU, RAM, SSD ์šฉ๋Ÿ‰๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์ถ”๊ฐ€์ ์œผ๋กœ ์„ค์น˜ํ•˜์—ฌ ๋‹จ์ผ ์„œ๋ฒ„์˜ ๋กœ๋“œ๋ฅผ ๋Š˜๋ น์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ˜๋ฉด์—, NoSQL์˜ ๊ฒฝ์šฐ, ์ˆ˜ํ‰์ ์œผ๋กœ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ „์ฒด์ ์ธ SQL์— ๋น„ํ•ด ๋Š˜๋ฆฌ๋Š” ์šฉ๋ น์ด ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ ์šฉํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

์ฆ‰, SQL๊ณผ NoSQL์˜ ์ฐจ์ด๋ฅผ ์ •๋ฆฌํ•˜์ž๋ฉด,
1. SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด์ง€๋งŒ, NoSQL์€ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.
2. SQL์€ ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์Šคํ‚ค๋งˆ๊ฐ€ ์‚ฌ์ „์— ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ, NoSQL์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋™์  ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ๋‹ค.
3. ํ™•์žฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, SQL์€ ์ˆ˜์ง์œผ๋กœ ํ™•์žฅ์„ ํ•˜์ง€๋งŒ, NoSQL์€ ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
4. SQL์€ ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์ด์ง€๋งŒ, NoSQL์€ ๋ฌธ์„œ, ํ‚ค-๊ฐ’, ๊ทธ๋ž˜ํ”„ ๋˜๋Š” ์™€์ด๋“œ ์—ด ์ €์žฅ์†Œ์ด๋‹ค.
5. SQL์€ ๋‹ค์ค‘ ํ–‰ ํŠธ๋žœ์žญ์…˜์— ํšจ๊ณผ์ ์ด๊ณ , NoSQL์€ JSON๊ณผ ๊ฐ™์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์— ํšจ๊ณผ์ ์ด๋‹ค.

post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€