SQL & ORM

GreenBeanยท2021๋…„ 8์›” 15์ผ
0
post-thumbnail

SQL & ORM

SQL์ด๋ž€?

  • SQL(Structured Query Language, ๊ตฌ์กฐํ™” ์งˆ์˜์–ด)๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํŠน์ˆ˜ ๋ชฉ์ ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์ž๋ฃŒ์˜ ๊ฒ€์ƒ‰๊ณผ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ƒ์„ฑ๊ณผ ์ˆ˜์ •, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด ์ ‘๊ทผ ์กฐ์ • ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์Œ
  • ๋งŽ์€ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด SQL์„ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Œ

SQL์˜ ์žฅ์ 

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋‹จ์–ด๋กœ ๊ตฌ์„ฑ
  • ์‰ฝ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Œ
  • ๋ณต์žกํ•œ ๋กœ์ง์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ
  • ANSI์— ์˜ํ•œ ๋ฌธ๋ฒ•์ด ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ์Œ

SQL์˜ ๋‹จ์ 

  • ๋ฐ˜๋ณต์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์—†์Œ(LOOP)
  • ๋น„๊ต์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์—†์Œ(IF)
  • ERROR ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์—†์Œ(์˜ˆ์™ธ ์ฒ˜๋ฆฌ)
  • SQL๋ฌธ์„ ์บก์Šํ™” ํ•  ์ˆ˜ ์—†์Œ
  • ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํ•  ์ˆ˜ ์—†์Œ
  • ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋ถ„์„ ์ž‘์—… ํ›„ ์‹คํ–‰
  • Network Traffic์„ ์œ ๋ฐœ

ORM์ด๋ž€?

  • ๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘(Object-relational mapping; ORM)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐ„์˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•
  • ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” "๊ฐ€์ƒ" ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ƒ์šฉ ๋˜๋Š” ๋ฌด๋ฃŒ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๋“ค์ด ์žˆ๊ณ , ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ๋…์ž์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ๋„ ํ•จ

Tip! ์ถ”๊ฐ€ ๋‚ด์šฉ

  • ORM(Object-relatinal mapping)์ด๋ž€ ๊ฐ์ฒด(ํด๋ž˜์Šค)์™€ ๊ด€๊ณ„(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค)์™€์˜ ์„ค์ •์„ ์˜๋ฏธ
  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉ
  • ์—ฌ๊ธฐ์„œ ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ๊ฐ„์— ๋ถˆ์ผ์น˜๊ฐ€ ์กด์žฌ ํ•˜๋Š”๋ฐ ์ด ๊ฐ์ฒด๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ SQL์„ ์ž๋™ ์ƒ์„ฑํ•˜์—ฌ ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐ ํ•˜๋Š” ๊ฒƒ์ด ORM
  • Object <= ๋งคํ•‘ => DB๋ฐ์ดํ„ฐ์—์„œ ๋งคํ•‘์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ORM์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ

ORM์˜ ์žฅ์ 

  • ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ๋กœ ์ธํ•ด ๋” ์ง๊ด€์ ์ด๊ณ  ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ
  • SQL๋ฌธ์ด ์•„๋‹Œ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ์ฒด ๋ชจ๋ธ๋งŒ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Œ
  • ์„ ์–ธ๋ฌธ, ํ• ๋‹น, ์ข…๋ฃŒ ๊ฐ™์€ ๋ถ€์ˆ˜์ ์ธ ์ฝ”๋“œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์ค„์–ด๋“ฌ
  • ๊ฐ์ฒด๋งˆ๋‹ค ์ฝ”๋“œ๋ฅผ ๋ณ„๋„๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง
  • SQL์˜ ์ ˆ์ฐจ์ ์ด๊ณ  ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ์ด ์•„๋‹Œ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์ ‘๊ทผ์œผ๋กœ ์ธํ•ด ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์คŒ
  • ์žฌ์‚ฌ์šฉ ๋ฐ ์œ ์ง€ ๋ณด์ˆ˜์˜ ํŽธ๋ฆฌ์„ฑ์ด ์ฆ๊ฐ€
  • ORM์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ๊ณ , ํ•ด๋‹น ๊ฐ์ฒด๋“ค์„ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๋งคํ•‘ ์ •๋ณด๊ฐ€ ๋ช…ํ™•ํ•˜์—ฌ, ERD๋ฅผ ๋ณด๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์˜์กด๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Œ
  • DBMS์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด ์ค„์–ด๋“ฌ
  • ๋Œ€๋ถ€๋ถ„ ORM ์†”๋ฃจ์…˜์€ DB์— ์ข…์†์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งŽ์€ ์†”๋ฃจ์…˜์—์„œ ์ž๋ฃŒํ˜• ํƒ€์ž…๊นŒ์ง€ ์œ ํšจ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” Object์— ์ง‘์ค‘ํ•จ์œผ๋กœ ๊ทน๋‹จ์ ์œผ๋กœ DBMS๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ ์ž‘์—…์—๋„ ๋น„๊ต์  ์ ์€ ๋ฆฌ์Šคํฌ์™€ ์‹œ๊ฐ„์ด ์†Œ์š”

ORM์˜ ๋‹จ์ 

  • ์™„๋ฒฝํ•œ ORM ์œผ๋กœ๋งŒ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›€
  • ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ํŽธํ•˜์ง€๋งŒ ์„ค๊ณ„๋Š” ๋งค์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ํ•ด์•ผํ•จ
  • ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žก์„ฑ์ด ์ปค์งˆ๊ฒฝ์šฐ ๋‚œ์ด๋„ ๋˜ํ•œ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์Œ
  • ์ž˜๋ชป ๊ตฌํ˜„๋œ ๊ฒฝ์šฐ์— ์†๋„ ์ €ํ•˜ ๋ฐ ์‹ฌ๊ฐํ•  ๊ฒฝ์šฐ ์ผ๊ด€์„ฑ์ด ๋ฌด๋„ˆ์ง€๋Š” ๋ฌธ์ œ์ ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ
  • ์ผ๋ถ€ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ˜• ์ฟผ๋ฆฌ๋Š” ์†๋„๋ฅผ ์œ„ํ•ด SP๋ฅผ ์“ฐ๋Š”๋“ฑ ๋ณ„๋„์˜ ํŠœ๋‹์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ
  • ํ”„๋กœ์‹œ์ €๊ฐ€ ๋งŽ์€ ์‹œ์Šคํ…œ์—์„  ORM์˜ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์žฅ์ ์„ ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ค์›€
  • ์ด๋ฏธ ํ”„๋กœ์‹œ์ €๊ฐ€ ๋งŽ์€ ์‹œ์Šคํ…œ์—์„  ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ”์•ผํ•˜๋ฉฐ, ๊ทธ ๊ณผ์ •์—์„œ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜๋‚˜ ๋ฆฌ์Šคํฌ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
profile
๐ŸŒฑ Backend-Dev | hwaya2828@gmail.com

0๊ฐœ์˜ ๋Œ“๊ธ€