CS

[DB] SQL vs NoSQL(mySQL vs MongoDB) ๋น„๊ต, ์ฐจ์ด์ 

meeeeejin 2020. 7. 19. 22:44

SQL๊ณผ NoSQL ์†Œ๊ฐœ

 

[SQL(Structured Query Language)]

SQL์€ RDBMS(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, NoSQL๋ณด๋‹ค ์˜ค๋ž˜๋˜๊ณ  ๋งŽ์ด ์‚ฌ์šฉ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. SQL์˜ ์˜ˆ์‹œ๋กœ๋Š” MySQL, PostgreSQL ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

์‚ฌ์‹ค SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์–ธ์–ด์ง€๋งŒ, ๊ธ€ ์ž‘์„ฑ์˜ ํŽธ๋ฆฌํ•จ์„ ์œ„ํ•ด ์ด ๊ธ€์—์„œ๋Š” SQL์„ RDBMS์˜ ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

 

 

[NoSQL(Not Only Structured Query Language)]

NoSQL์€ ์•ž์„œ ๋งํ•œ SQL๋ณด๋‹ค ๋œ ์ œํ•œ์ ์ธ ๋ชจ๋ธ์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. NoSQL์˜ ์˜ˆ์‹œ๋กœ๋Š” mongoDB, redis ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(structure)

 

SQL๊ณผ noSQL์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. 

 

[SQL]

SQL์„ ์ด์šฉํ•ด ๊ณ ๊ฐ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค. 

 

 

๋งŒ์•ฝ ์ด ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์— email ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ ๊นŒ์š”? ๋˜๋Š” ์ƒˆ๋กœ์šด ๊ณ ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ, ๊ทธ ๊ณ ๊ฐ์˜ ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋ฅธ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ ๊นŒ์š”?

 

SQL์—์„œ๋Š” ์—„๊ฒฉํ•œ ์Šคํ‚ค๋งˆ(๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ)๋ฅผ ์›์น™์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ‚ค๋งˆ์— ๋งž์ง€ ์•Š๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋Š” ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์˜ ํ…Œ์ด๋ธ”์— ํ•œ ๋ช…์˜ ๊ณ ๊ฐ๋งŒ email์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ๋ฅผ ์ ์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

[NoSQL]

๋ฐ˜๋ฉด, NoSQL์—์„œ๋Š” ๋‹ค๋ฅธ ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์œ„์™€ ๊ฐ™์ด "John"์˜ ๋ฌธ์„œ(=document =SQL์˜ ๋ ˆ์ฝ”๋“œ)์— email key๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•ด์„œ, ๋‹ค๋ฅธ ๋ฌธ์„œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ NoSQL์€ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๊ฐ€ ๊ฐ™์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

๊ด€๊ณ„(Relationship)

 

[SQL(Relational)]

SQL์€ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. 

 

Orders ํ…Œ์ด๋ธ”์„ ๋ณด๋ฉด, Customer ID์™€ Product ID๋ฅผ ํ†ตํ•ด John์ด ์—ฐํ•„์„ 12๊ฐœ ์ƒ€๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ SQL์€ ๊ฐ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„ ์ง€์ •์„ ํ†ตํ•ด ํ…Œ์ด๋ธ”์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ๋”ฐ๋ผ์„œ ์ค‘๋ณต ์—†์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋งŒ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

[NoSQL(Non-Relational)]

๋ฐ˜๋ฉด NoSQL์—์„œ๋Š” ๋ณดํ†ต ํ•˜๋‚˜์˜ ์ปฌ๋ ‰์…˜(SQL์—์„œ์˜ ํ…Œ์ด๋ธ”)์— ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. John์ด ์—ฐํ•„์„ 12๊ฐœ ์ƒ€์„ ๋•Œ, Orders ์ปฌ๋ ‰์…˜์—๋Š” ์ฃผ๋ฌธ ๋ฒˆํ˜ธ์™€ ๊ณ ๊ฐ์— ๋Œ€ํ•œ ์ •๋ณด, ์ƒํ’ˆ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ SQL๊ณผ ๋‹ฌ๋ฆฌ id๋งŒ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ณ ๊ฐ ์ด๋ฆ„์ด๋‚˜ ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์„œ Customers์™€ Products๋ฅผ ๋ณด์ง€ ์•Š๊ณ  Orders๋งŒ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. 

 

 

์ด๋Ÿฐ ๋ฐฉ์‹์€ SQL๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Customer์— John์˜ email์„ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ, Orders์—๋Š” ์ด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

ํ™•์žฅ์„ฑ(Scalability)

 

์ถœ์ฒ˜: https://academind.com/learn/web-dev/sql-vs-nosql/

 

[SQL(vertical scale)]

SQL์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜์ง์  ํ™•์žฅ(vertical scale)๋งŒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ง์  ํ™•์žฅ์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜์—ฌ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. 

 

 

[NoSQL(horizontal scale)]

๋ฐ˜๋ฉด์— NoSQL์—์„œ๋Š” ์ˆ˜ํ‰์  ํ™•์žฅ(horizontal scale)์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

SQL vs NoSQL ์ •๋ฆฌ

 

 

 

 

 

 

 

<์ฐธ๊ณ >

SQL vs NoSQL (MySQL vs. MongoDB)

SQL vs. NoSQL

 

 

 

 

๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)

 

 

 

728x90