ORM


๐Ÿ’ก ORM(Object-Relational-Mapping)์ด๋ž€?

DB์™€ OOP ๊ฐ„์˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•

โ–ช ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์‚ฌ์ด์— ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ• 

โ–ช ์ฝ”๋”ฉ์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

โ–ช ORM์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ๋งˆ์Šคํ„ฐํ•˜๊ธฐ๋Š” ํž˜๋“ค๋‹ค.

โ–ช ์™œ๋ƒ๋ฉด ๊ฐ ORM์—๋Š” ์ˆ˜์‹ญ๊ฐœ์˜ ํŒ๊ณผ ์š”๋ น์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โ–ช python(flask)์—์„œ๋Š” ์ฃผ๋กœ โ€œSQLAlchemyโ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.



๐Ÿ’ก ORM ์ž‘๋™๋ฐฉ์‹

์ผ๋ฐ˜์ ์œผ๋กœ ORM์€ OOP์™€ DB ์ค‘๊ฐ„์—์„œ ์ž‘์—…์„ ํ•œ๋‹ค. ํ†ต์—ญ์‚ฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋‹ˆ ์ดํ•ด๊ฐ€ ์‰ฌ์› ๋‹ค.

Python ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ORM์ด ๋„์™€์ค€๋‹ค.

์ด์™€ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž‘๋™ํ•œ๋‹ค.

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ORM์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ, ์กฐํšŒ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” MySQL, PostgreSQL ๋“ฑ ๋‹ค์–‘ํ•œ โ€œ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค(RDBMS)โ€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.



๐Ÿ’ก ORM ์žฅ์ 

โ–ช ORM์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋†’์€ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

โ–ช SQL๋ฌธ ๋Œ€์‹ ์— Pythom์–ธ์–ด๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑ, ์‚ญ์ œ, ์ผ๊ธฐ, ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

โ–ช ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ ์ง€ ์•Š์•„๋„ ๋˜๋‹ˆ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์ƒ์‚ฐ์„ฑ์ด ์ข‹์•„์ง„๋‹ค.

โ–ช ์ด๋ก ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ„์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.



๐Ÿ’ก ORM ๋‹จ์ 

โ–ช Impedance Mismatches (๊ฐ์ฒด-๊ด€๊ณ„ ๋ถˆ์ผ์น˜)

์ˆ˜ํ•™์›๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ๊ณผ,

์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ์›๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•œ OOP๊ฐ€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ.


โ–ช ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ์„ฑ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด๋ฅผ SQL๋ฌธ์œผ๋กœ ๋ฐ”๊ฟ€ ๋•Œ, ์ ์ ˆํžˆ ์กฐ์ •์ด ๋˜์ง€์•Š์•„ ๋ฐœ์ƒ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์ฟผ๋ฆฌ๋ฌธ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐœ์ƒ.


โ–ช Shifting complexity from the database into the app code

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ App์ฝ”๋“œ๋กœ ๋ณต์žก์„ฑ ์ด๋™

์˜ˆ๋ฅผ ๋“ค๋ฉด ํ…Œ์ด๋ธ”๋“ค์˜ ๊ด€๊ณ„ ๋“ฑ์„ OPP ์ฝ”๋“œ๋กœ ์ •์˜๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค.