hwaya2828.log
๋ก๊ทธ์ธ
hwaya2828.log
๋ก๊ทธ์ธ
SQL & ORM
GreenBean
ยท
2021๋ 8์ 15์ผ
ํ๋ก์ฐ
0
Today I learned
0
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์ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฅ์ ์ ํ์ฉํ๊ธฐ ์ด๋ ค์
์ด๋ฏธ ํ๋ก์์ ๊ฐ ๋ง์ ์์คํ ์์ ๋ค์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ผํ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์์ฐ์ฑ ์ ํ๋ ๋ฆฌ์คํฌ๊ฐ ๋ง์ด ๋ฐ์ํ ์ ์์
GreenBean
๐ฑ Backend-Dev | hwaya2828@gmail.com
ํ๋ก์ฐ
์ด์ ํฌ์คํธ
Docker
๋ค์ ํฌ์คํธ
Request ๊ด๋ จ ๋ฉ์๋ ๋น๊ต
0๊ฐ์ ๋๊ธ
๋๊ธ ์์ฑ