RDB vs NoSQL

2023. 2. 18. 20:50ใ†Database/DB ์Šคํ„ฐ๋””

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ

ํ•ด๋‹น ์งˆ๋ฌธ์€ ์–ธ์  ๊ฐ€ ๋ฉด์ ‘์—์„œ ์ง์ ‘ ์š”์ฒญ ๋ฐ›์•˜๋˜ ์งˆ๋ฌธ์ด๊ธฐ๋„ ํ•˜๊ณ , ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด์•„๋„ ์ผ์ข…์˜ ๋ฉด์ ‘ ๋‹จ๊ณจ ์งˆ๋ฌธ์œผ๋กœ ๋ถˆ๋ฆฐ๋‹ค. 

๋งˆ์นจ ์Šคํ„ฐ๋””์˜ ์ฃผ์ œ๊ฐ€ ๋˜๊ธฐ๋„ ํ–ˆ๊ณ , ์•ž์œผ๋กœ๋„ ์ด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ๋˜ ๋Œ€๋‹ตํ•  ์ผ์ด ๋งŽ๋‹ค๊ณ  ์—ฌ๊ฒจ ์ด๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.

 

 

RDB

RDB๋ž€ ์ „ํ†ต์ ์ธ ํ˜•ํƒœ์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š” MySQL, PostgreSQL ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ 2์ฐจ์› ํ–‰๋ ฌ(ํ…Œ์ด๋ธ”) ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์„ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌํ•œ๋‹ค. 

๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ, ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ์— SQL์„ ์ด์šฉํ•˜๋Š”๋ฐ, ์–ด๋–ค DB๋ฅผ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์„ธ๋ถ€์ ์ธ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ๋ฒ• ๋“ฑ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ํฐ ํ‹€์€ ์„œ๋กœ ๋™์ผํ•˜๋‹ค. 

DB์˜ ์ˆ˜ํ‰์  ํ™•์žฅ์ด ์–ด๋ ค์šด ํŽธ์ธ๋ฐ, ์ด๋Š” RDB ๋‚ด ๋ฐ์ดํ„ฐ๋“ค์ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค๊ณผ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๊ณ , ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋“ค์˜ ์ผ๊ด€์„ฑ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

RDB ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ, ๋ชจ๋“  ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š”์ง€ ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์ˆ˜ํ‰ ํ™•์žฅ ์‹œ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ํž˜๋“ค๊ณ , ์ด๋ฅผ ์œ„ํ•œ ์ž‘์—…์€ ์ƒ๋‹นํ•œ ๋ถ€ํ•˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ๊ฐœ๋ฐœ, ์šด์˜ ๊ณผ์ •์—์„œ ์Šคํ‚ค๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๋ชจ๋ธ ์„ค๊ณ„์— ์žˆ์–ด ์‹œ๊ฐ„์„ ์Ÿ์•„์•ผ ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ, ์ •ํ•ฉ์„ฑ์„ ์ค‘์š”์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์€ํ–‰ ์‹œ์Šคํ…œ์ด๋‚˜ ์œ ์ € ๊ณ„์ • ์ •๋ณด ๊ด€๋ฆฌ ๋“ฑ์— ์ด์šฉ๋œ๋‹ค.

 

 

NoSQL

NoSQL์ด๋ž€ Not-Only-SQL์˜ ์•ฝ์ž๋กœ SQL์ด ์•„๋‹Œ ๋ฐฉ์‹์œผ๋กœ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” DB๋“ค์„ ์ผ์ปซ๋Š”๋‹ค. (Not Only ๋ผ๋Š” ๋ง์ฒ˜๋Ÿผ SQL์„ ์•„์˜ˆ ๋ฐฐ์ œํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. MongoDB๋‚˜ ์•„ํŒŒ์น˜ ์นด์‚ฐ๋“œ๋ผ ๋“ฑ์˜ DB์—์„œ๋Š” SQL๊ณผ ์œ ์‚ฌํ•œ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋„ ํ•œ๋‹ค.)

NoSQL DB๋Š” ๋˜ ๋‹ค์‹œ ๋‹ค์–‘ํ•œ ์†Œ๋ถ„๋ฅ˜๋กœ ๋‚˜๋‰˜๋Š”๋ฐ

MongoDB๋กœ ๋Œ€ํ‘œ๋˜๋Š” ๋„ํ๋จผํŠธ ๊ธฐ๋ฐ˜ DB,

Redis๋กœ ๋Œ€ํ‘œ๋˜๋Š” ํ‚ค-๋ฐธ๋ฅ˜ ๊ธฐ๋ฐ˜ DB, ๊ทธ ์™ธ์˜ ์นผ๋Ÿผ ํŒจ๋ฐ€๋ฆฌ DB, ๊ทธ๋ž˜ํ”„ DB ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.

NoSQL์€ RDB์— ๋น„ํ•ด ์ˆ˜ํ‰์  ํ™•์žฅ์— ์šฉ์ดํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. 

์™œ๋ƒํ•˜๋ฉด NoSQL์˜ ๋ฐ์ดํ„ฐ๋“ค์€ ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

๋”ฐ๋ผ์„œ ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ๊ธฐ์ค€์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋“ค์„ ๋‚˜๋ˆˆ ๋’ค ์ด๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ ์ €์žฅํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

๋˜ํ•œ NoSQL์€ RDB์™€ ๋‹ฌ๋ฆฌ ์Šคํ‚ค๋งˆ๊ฐ€ ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด ํ•„๋“œ์˜ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ, ๋ณ€๊ฒฝ์ด ์‰ฝ๊ฒŒ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ด์— NoSQL์„ ๋™์  ์Šคํ‚ค๋งˆ, ํ˜น์€ ์Šคํ‚ค๋งˆ๋ฆฌ์Šค ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค๊ณ ๋„ ์ด์•ผ๊ธฐํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์„ฑ ์ƒ NoSQL์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋‚˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์ด์ ์ด ์žˆ๋‹ค. 

์ˆ˜ํ‰ ํ™•์žฅ์„ ํ†ตํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ, ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ์šฉ์ด์„ฑ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋‚˜ ์†Œ์…œ ๋ฏธ๋””์–ด ๋“ฑ์— ๋งŽ์ด ์ด์šฉ๋œ๋‹ค.

 

๋น„๊ต

  RDB NoSQL
๋ฐ์ดํ„ฐ ๊ตฌ์กฐ 2์ฐจ์› ํ…Œ์ด๋ธ” ๋„ํ๋จผํŠธ, ํ‚ค-๋ฐธ๋ฅ˜ ๋“ฑ
๋ฐ์ดํ„ฐ ์งˆ์˜ SQL ์ด์šฉ SQL ๋ฟ ์•„๋‹ˆ๋ผ DB๊ฐ€ ์ž์ฒด ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹ ์‚ฌ์šฉ
์Šคํ‚ค๋งˆ ์—„๊ฒฉํ•œ ์Šคํ‚ค๋งˆ ์ด์šฉ ๋™์  ์Šคํ‚ค๋งˆ ์ด์šฉ
ํ™•์žฅ์„ฑ ์ˆ˜ํ‰ ํ™•์žฅ์— ์–ด๋ ค์›€ ์กด์žฌ ์ˆ˜ํ‰ ํ™•์žฅ ์šฉ์ด
์ด์šฉ ์‚ฌ๋ก€ ์ •ํ•ฉ์„ฑ, ์ผ๊ด€์„ฑ์ด ์ค‘์š”ํ•œ ๋ถ„์•ผ(ex. ์€ํ–‰, ๊ธˆ์œต, ๊ณ„์ • ์ •๋ณด) ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ (ex. ์†Œ์…œ ๋ฏธ๋””์–ด, ๊ฒŒ์ž„)