๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ” database

ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ ์ ์žฌ SQL vs NoSQL

by ๋ฐ”์ฟ„๋ฆฌ 2025. 2. 6.

๊ฐœ์š”

์ „์— ์ง„ํ–‰๋˜์—ˆ๋˜ ํ”„๋กœ์ ํŠธ์—์„œ์˜ ํฌ๋กค๋ง์€ MongoDB์— ์ ์žฌํ–ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•  ๋•Œ SQL(MySQL), NoSQL(MongoDB) ๋‘๊ฐ€์ง€ ์ค‘์— ์–ด๋–ค ๊ณณ์ด ๋” ์ ํ•ฉํ•œ์ง€ ๊ณ ๋ฏผ์ด ๋˜์–ด์„œ ๋‘๊ฐ€์ง€๋ฅผ ๋น„๊ตํ•ด๋ณด์Ÿˆ ~ !

 

๊ธฐ๋ณธ ๊ฐœ๋…


DB ์ข…๋ฅ˜ ํŠน์ง• ์ ํ•ฉํ•œ ๊ฒฝ์šฐ
MySQL (Relational) ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ ๊ด€๊ณ„ํ˜• DB (SQL) ์ •ํ˜• ๋ฐ์ดํ„ฐ, ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ์ค‘์š”
MongoDB (NoSQL, Document-based) JSON-like ๋ฌธ์„œ ์ €์žฅ (NoSQL) ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ, ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ

ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ

ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋กœ ์ˆ˜์ง‘๋œ๋‹ค.

{
    "title": "Example Title",
    "url": "https://example.com",
    "content": "Some article content...",
    "tags": ["news", "tech"],
    "timestamp": "2025-02-05 12:34:56"
}
  • ๊ตฌ์กฐ๊ฐ€ ๊ฐ€๋ณ€์ ์ผ ์ˆ˜ ์žˆ๋‹ค. (์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.)
  • JSON ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ๋‹ค. → MongoDB์™€ ์นœํ™”์ 
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์† ์ถ”๊ฐ€๋˜๋ฉฐ ์—…๋ฐ์ดํŠธ๋Š” ์ ๋‹ค. → NoSQL ๋ฐฉ์‹์ด ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ…

 

MySQL๊ณผ MongoDB ๋น„๊ต

๋น„๊ต ํ•ญ๋ชฉ MySQL MongoDB
๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ณ ์ •๋œ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ (์ •ํ˜• ๋ฐ์ดํ„ฐ) JSON-like ๋ฌธ์„œ (๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ)
์Šคํ‚ค๋งˆ ์œ ์—ฐ์„ฑ ๋ณ€๊ฒฝ ์–ด๋ ค์›€ (ALTER TABLE ํ•„์š”) ๋™์ ์œผ๋กœ ํ•„๋“œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
์†๋„ JOIN์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์†๋„ ์ €ํ•˜ ๊ฐ€๋Šฅ JOIN์ด ์—†๊ณ , Document ๊ธฐ๋ฐ˜์œผ๋กœ ๋น ๋ฆ„
๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ SQL ๊ธฐ๋ฐ˜ (WHERE, LIKE ๋“ฑ) ๊ฐ•๋ ฅํ•œ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ (Index ์ง€์›)
๋Œ€๋Ÿ‰ ์‚ฝ์ž… ์„ฑ๋Šฅ ๋ฐฐ์น˜ ์‚ฝ์ž… ํ•„์š” ๋†’์€ ์“ฐ๊ธฐ ์„ฑ๋Šฅ ์ง€์›
๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ํ•ฉ ์ฃผ๋กœ Append-only ๋ฐ์ดํ„ฐ์— ์ ํ•ฉ
๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ์™ธ๋ž˜ ํ‚ค(FK), JOIN ์ง€์› ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๋ถˆํŽธํ•จ
ํ™•์žฅ์„ฑ Scale-Up ๋ฐฉ์‹ (์ˆ˜์ง ํ™•์žฅ) Scale-Out ๋ฐฉ์‹ (์ˆ˜ํ‰ ํ™•์žฅ)

 

โœ… MySQL์€ ์–ธ์ œ ์‚ฌ์šฉ?

  • ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ˜•ํ™”๋œ ๊ฒฝ์šฐ (์˜ˆ: ์ œํ’ˆ ์ •๋ณด, ๋‰ด์Šค ๊ธฐ์‚ฌ)
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ (ํ…Œ์ด๋ธ” ๊ฐ„ ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ)
  • SQL์„ ํ™œ์šฉํ•œ ๋ณต์žกํ•œ ๊ฒ€์ƒ‰, ๋ถ„์„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒฝ์šฐ

 

โœ… MongoDB์€ ์–ธ์ œ ์‚ฌ์šฉ?

  • ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๊ฐ€ ์œ ๋™์ ์ธ ๊ฒฝ์šฐ (์˜ˆ: ๋‹ค์–‘ํ•œ ์›น์‚ฌ์ดํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌ๋กค๋งํ•  ๋•Œ)
  • JSON ๋ฐ์ดํ„ฐ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋Œ€๋Ÿ‰์œผ๋กœ ์Œ“์ด๊ณ  ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๊ฒฝ์šฐ
  • ๋น ๋ฅธ ์กฐํšŒ ๋ฐ ํ™•์žฅ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ์žฅ์ :
    • ์Šคํ‚ค๋งˆ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ JSON ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ
    • ์ถ”๊ฐ€ ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ˆ˜์ • ์—†์ด ๋ฐ”๋กœ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

๊ฒฐ๋ก 

๋‹ค์–‘ํ•œ ์›น์‚ฌ์ดํŠธ์—์„œ ํฌ๋กค๋งํ•  ๋•Œ๋Š” MongoDB๊ฐ€ ์ ํ•ฉํ•˜๊ณ ,

์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ(์˜ˆ: ์ƒํ’ˆ ์ •๋ณด, ๋‰ด์Šค)๋Š” MySQL์ด ๋” ์ข‹์€ ๋“ฏํ•˜๋‹ค.

ํฌ๋กค๋ง ๋Œ€์ƒ์— ๋”ฐ๋ผ ์œ ๋™์ ์œผ๋กœ ์ •ํ•˜๋ฉด ๋  ๋“ฏ ..?

ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ๋Š” MongoDB์— ์ ์žฌํ•˜๊ณ  ๊ฒ€์ƒ‰์šฉ ์š”์•ฝ ๋ฐ์ดํ„ฐ๋งŒ MySQL์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋„ ์ง„ํ–‰ํ•ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.