SQL vs NoSQL

PearLineZero
|2025. 4. 30. 20:53

๐Ÿ”Ž SQL (๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, RDBMS)

  • ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด(Structured Query Language)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ๋ฐ์ดํ„ฐ๋Š” ํ–‰(Row)๊ณผ ์—ด(Column)๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋จ
  • ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐ

 

๐Ÿ”Ž NoSQL (๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, Not Only SQL)

  • ์ „ํ†ต์ ์ธ SQL ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋น„์ •ํ˜• ๋˜๋Š” ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ €์žฅํ•˜๋Š” ๋น„๊ด€๊ณ„ํ˜• DB.
  • ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์œ ๋™์ ์ด๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ(Document, Key-Value ๋“ฑ)์„ ์ง€์›ํ•จ.

 

๊ทธ๋ ‡๋‹ค๋ฉด NOSQL ์™œ ์ƒ๊ธด๊ฑธ๊นŒ?

 

๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉด์„œ, ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ๋ฐ ์ €์žฅ์˜ ๊ฐœ๋…์ธ ํ•˜๋‘ก์ด ๋‚˜์˜ค๊ณ  RDB๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ์ˆ˜์š”๊ฐ€ ๋†’์•„์ง€๋ฉด์„œ RDB๋ฅผ ํ†ตํ•œ ์ €์žฅ์˜ ํ•œ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ ์ž ๋‚˜์˜ค๊ฒŒ๋œ ๊ฒƒ์ด NoSQL์ด๋‹ค.

์ถœ์ฒ˜ : https://velog.io/@aszxvcb/SQL%EA%B3%BC-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