DB/Mysql

๐Ÿ’ปRDB ์™€ NoSQL์˜ ์ฐจ์ด์ 

์™„์žโœจ 2022. 6. 16. 11:31

๐Ÿ’ปRDB์™€ NoSQL์˜ ์ฐจ์ด์ 

1. Database์™€ DBMS ๊ทธ๋ฆฌ๊ณ  SQL

Databse๋ž€

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์— ์ „์ž ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋œ ๊ตฌ์กฐํ™”๋œ ์ •๋ณด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ฒด๊ณ„์ ์ธ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

DBMS๋ž€(DataBase Management System)

  • ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์—์„œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋”ฐ๋ผ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.
  • RDBMS์—๋Š” DBMS์•ž์— R์ด ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด R์€(Relational)์˜ ์•ฝ์ž๋กœ RDBMS๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

SQL์ด๋ž€(Strucured Query Language)

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํŠน์ˆ˜ ๋ชฉ์ ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋ฉฐ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์ž๋ฃŒ์˜ ๊ฒ€์ƒ‰๊ณผ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ƒ์„ฑ๊ณผ ์ˆ˜์ •, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด ์ ‘๊ทผ ์กฐ์ • ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (DDL, DML, DCL)

 

2. NoSQL

NoSQL์ด๋ž€(Not Only SQL)์˜ ์•ฝ์ž๋กœ ๋ง ๊ทธ๋Œ€๋„ ์œ„์—์„œ ์„ค๋ช…ํ•œ RDB ํ˜•ํƒœ์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ธฐ์ˆ ์„ ์˜๋ฏธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ NoSQL์—์„œ๋Š” RDBMS์™€๋Š” ๋‹ฌ๋ฆฌ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์€ ๊ทธ๋ƒฅ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด๋ฉฐ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•„ ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ด๋ธ” ๊ฐ„ Join๋„ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

2.1 NoSQL ๋‚˜์˜จ ์ด์œ 

NoSQL์€ ์ ์  ๋น…๋ฐ์ดํ„ฐ์˜ ๋“ฑ์žฅ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ์™€ ํŠธ๋ž˜ํ”ฝ์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ RDBMS์— ๋‹จ์ ์ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์žฅ๋น„๊ฐ€ ์ข‹์•„์•ผ ํ•˜๋Š” Scale-Up์˜ ํŠน์ง•์ด ๋น„์šฉ์„ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์€ ํฌ๊ธฐํ•˜๋˜ ๋น„์šฉ์„ ๊ณ ๋ คํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋Œ€์˜ ๋ฐ์ดํ„ฐ์— ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•˜๋Š” Scale-Out์„ ๋ชฉํ‘œ๋กœ ๋“ฑ์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค. (ex: mongoDB, Redis ๋“ฑ)

3. RDB(Relational Database)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Relational Database)๋ž€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ์—ญํ• ์ด ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ณ  ํ…Œ์ด๋ธ” ๊ฐ„์—๋Š” ์™ธ๋ž˜ ํ‚ค(FK)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„œ๋กœ ๊ด€๊ณ„๋ฅผ ๋งบ๋„๋ก ์„ค๊ณ„ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด๋‹ค. (ex: Oracle, MySQL ๋“ฑ)


4. RDBMS์™€ NoSQL์˜ ์žฅ๋‹จ์ 

4.1 RDBMS

์žฅ์ 

  • RDBMS๋Š” ์ •ํ•ด์ง„ ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ๋ช…ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.
  • ๋˜ํ•œ ๊ด€๊ณ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์—†์ด ํ•œ ๋ฒˆ๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ์—†์–ด ์“ฐ๊ธฐ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
  • UNDO์™€ REDO๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋‹จ์ 

  • ํ…Œ์ด๋ธ”๊ณผ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ์–ด ์‹œ์Šคํ…œ์ด ์ปค์งˆ ๊ฒฝ์šฐ JOIN๋ฌธ์ด ๋งŽ์€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•ด์•ผ ํ•˜๋Š” Scale-up๋งŒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋น„์šฉ์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํ‚ค๋งˆ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์—ฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์Šคํ‚ค๋งˆ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

UNDO : UNDO๋Š” ์ž‘์—… ๋กค๋ฐฑ๊ณผ, ์ฝ๊ธฐ ์ผ๊ด€์„ฑ, ๋ณต๊ตฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

REDO : REDO๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณต๊ตฌ์˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ผํด ์„œ๋ฒ„์— ๋ฌด์Šจ ์ž‘์—…์„ ํ•˜๋“ ์ง€ ๋ชจ๋‘ REDO์— ๊ธฐ๋ก์ด ๋ฉ๋‹ˆ๋‹ค.

 

4.2 NoSQL

์žฅ์ 

  • NoSQL์—์„œ๋Š” ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์œ ์—ฐํ•˜๋ฉฐ ์ž์œ ๋กœ์šด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์–ธ์ œ๋“  ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ์ด ์šฉ์ดํ•˜๋ฉฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ Saclue-up ๋ฟ๋งŒ์ด ์•„๋‹Œ Scale-out ๋˜ํ•œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ” ์กฐ์ธ์„ ํ•˜์ง€์•Š์•„์„œ ์ฝ๊ธฐ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

๋‹จ์ 

  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ์ˆ˜์ •์„ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์—์„œ ์ˆ˜ํ–‰์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ์— ๋ช…ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฐ์ •๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • UNDO์™€ REDO๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

5. RDBMS, NoSQL ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ์š”?

RDBMS๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๋ฉฐ ๋ณ€๊ฒฝ ๋  ์—ฌ์ง€๊ฐ€ ์—†์œผ๋ฉฐ ๋ช…ํ™•ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด(๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ) ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์“ฐ๊ธฐ์—ฐ์‚ฐ์ด ์ž์ฃผ ์ด๋ฃจ์–ด์ง€๋Š” ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

 

NoSQL์€ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ณ  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ณ€๊ฒฝ/ํ™•์žฅ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹จ์ ์—์„œ๋„ ๋ช…ํ™•ํ•˜๋“ฏ์ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์‹œ์—๋Š” ๋ชจ๋“  ์ปฌ๋ ‰์…˜์—์„œ ์ˆ˜์ •์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ Update๊ฐ€ ๋งŽ์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ์‹œ์Šคํ…œ์ด ์ข‹์œผ๋ฉฐ ๋˜ํ•œ Scale-out์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์„ ํ™œ์šฉํ•ด ๋ง‰๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ด์„œ Database๋ฅผ Scale-Out๋ฅผ ํ•ด์•ผ ๋˜๋Š” ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.