์ธ์ ์์ ๋ฐฐ์ด ๋ด์ฉ์ด๊ธด ํ๋ฐ django ๋ชจ๋ธ๋ง ์ ๋ง์ด ์ฐพ์๋ด์ผํ ๊ฒ ๊ฐ์ ๊ฐ๋ ์ด๋ผ์ django ์๋ฆฌ์ฆ์ ๋ฃ์๋ค. ์ ๋ฆฌํ๋ค๋ณด๋๊น ๋ด์ฉ์ด ๋๋ ์์ด ๊ธธ์ด์ง๋ค ๐คฏ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ํ ์ด๋ธ๊ฐ ๊ด๊ณ (one to one ๋ฑ)์ ๋ํด ์ ๋ฆฌํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์กฐ์, ๊ฒ์(store, manipulate, retrieve)ํ ์ ์๋ ์์คํ
์ด๋ค. ๊ทธ๋ฅ ํ์ผ์ ์ ์ฅํด๋ ๋๋๋ฐ ๊ตณ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น? ์ ๊ทผ, ๊ด๋ฆฌ
๊ฐ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค(database, DB)๋ ์ฌ๋ฌ ์ฌ๋์ด ๊ณต์ ํ์ฌ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ์ฒด๊ณํํด ํตํฉ, ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ๋๋๋ ๊ฐ๋ ์ด๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ ์กด์ฌํ๊ฒ ๋๋๋ฐ, ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ฐ์ฑ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋์ง ์๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ฃํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ผ ์ ์์ด ์ฅ๊ธฐ๊ฐ ๋ณด์กด์ ์ํด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
์ ์ฐจ์ด์ ์ผ๋ก ์ธํด ๋ฐ์ดํฐ์ ์๊ตฌ์ ์ ์ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์, ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ฌ ๊ฐ๊ณต ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์์(๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์) ์งํํ๋ค.
์๋ก ์ํธ๊ด๋ จ์ฑ์ ๊ฐ์ง ํํ๋ก ํํ๋ ๋ฐ์ดํฐ. ๋ํ์ ์ธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ MySQL๊ณผ PostgreSQL(์ค์ฌ์ Postgres)๊ฐ ์๋ค.
ํ๋์ ํ ์ด๋ธ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ค ๋ฃ์ผ๋ฉด, ๋์ผํ ์ ๋ณด๋ค์ด ๋ถํ์ํ๊ฒ ์ค๋ณต ์ ์ฅ๋๋ค. ๋ ๊ฐ์ ๋ฐ์ดํฐ์ง๋ง ๋ถ๋ถ์ ์ผ๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์๊ธธ ์ ์๋๋ฐ, ๊ทธ ๋ถ๋ถ์ ๋ฌด์ํ๋ฉด ๊ณต๊ฐ์ ๋ญ๋นํ๊ฒ ๋๋ ์ํฉ์ด ์๊ธด๋ค.
๊ทธ๋์ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ , ๋ฐ์ดํฐ ๊ฐ ๊ตฌ๋ถ์ ์ํด ํ
์ด๋ธ์ ๋ฐ๋ก ์ ์ฅํ๊ณ ์ฐ๊ฒฐ
ํ๋ค. ์ ๊ฐ๋
์ ์ ๊ทํ๋ผ๊ณ ํ๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๊ณ์์ ์ค๋ณต์ ์ต์ํํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ๋ ํ๋ก์ธ์ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ์ ๋ชฉํ๋ ๊ด๊ณ๋ฅผ ์ฌ๊ตฌ์ฑํ์ฌ ์๊ณ ์ ์กฐ์ง๋ ๊ด๊ณ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋ค.
๊ด๊ณ(one to one, one to many, many to many)์ ๋ํ ๋ถ๋ถ์ ์ดํด๊ฐ ๋ ํ์ํด ๋ณ๋ ๊ฒ์๋ฌผ์ ์ ๋ฆฌํ๋ค. ์๋ ๋งํฌ์์ ๋ด์ฉ์ ํ์ธํ ์ ์๋ค.
https://velog.io/@matisse/๋ฐ์ดํฐ-๊ด๊ณ-์ดํดํ๊ธฐ-One-to
์คํค๋ง, ์ฆ ๊ด๊ณ ์ค์ ์ ๋ฐ๋ฅธ ํ ์ด๋ธ ๋ชจ๋ธ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ์ ํํํ ํ์๊ฐ ์๋ค. django์์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ models.py๋ฅผ ํตํด ํ ์ด๋ธ์ ํํ๋ฅผ ์ ํํํ๋ ๊ฒ๊ณผ๋ ์ ๋ฐ๋์ธ ๊ฒ์ด๋ค!
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋์ ์ด๋ค ํํ๋ก ์ ์ฅํ ๊ฒ์ธ์ง ์ ์ํด์ผ ํ์ง๋ง, ๋น๊ด๊ณํ์ ๊ทธ๋์ผํ ํ์๊ฐ ์๋ค. ๊ทธ๋์ ๋น ๋ฅธ ์ ์ฅ์ด ํ์ํ๊ณ , ์ ํํํ ์๊ฐ์ด ์์ ๋ ์ฌ์ฉํ๋ค.
๋ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ MongoDB, Redis, Cassandra๋ค.
์ฃผ๋ก ์ ํํ๋, ๋ฐ์ดํฐ ์์ ์ฑ์ด ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. (์ ์์๊ฑฐ๋, ์ํ๊ณ์ข์ ๋ณด, ๊ฑฐ๋์ ๋ณด ๋ฑ)
๋น์ ํํ ๋ฐ์ดํฐ, ์์ ์ฑ์ด ๋ํ ๋ฐ์ดํฐ์ ์ฌ์ฉ. ์๋ฅผ ๋ค์ด ๋ก๊ทธ ๋ฐ์ดํฐ ๊ฐ์ ๊ฒ๋ค์ ์ฌ์ฉํ๋ค ๐
๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ๋งํ๊ธฐ ์ ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ์ด๋ป๊ฒ ์ฐ๊ฒฐํ ๊ฒ์ธ์ง ๋ฏธ๋ฆฌ ์๊ฐํํด๋ณผ ์ ์๋ ERM ํด์ด๋ค. ์ฐ์ ๋ชจ๋ฅด๋ ๊ฐ๋ ์ ๋ํด ์ํค์ ํ์ ๋น๋ ค๋ณด์.
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋ถ์ผ์์ ๊ฐ์ฒด-๊ด๊ณ ๋ชจ๋ธ์ด๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ ๋ํ ์ผ๋ จ์ ํํ์ด๋ค. "๊ตฌ์กฐ"ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๋ค.
์ด ๋ฐ์ดํฐ์ "๊ตฌ์กฐ" ๋ฐ ๊ทธ์ ์๋ฐํ ์ ์ฝ ์กฐ๊ฑด๋ค์ ๋ค์ํ ๊ธฐ๋ฒ์ ์ํด ์ค๊ณ๋ ์ ์๋ค. ๊ทธ ๊ธฐ๋ฒ ์ค ํ๋๊ฐ ๊ฐ์ฒด-๊ด๊ณ ๋ชจ๋ธ๋ง(Entity-Relationship Modelling)์ด๋ค. ์ค์ฌ์ ERM์ด๋ผ๊ณ ํ๋ค.
๊ฐ์ฒด์ ๊ฐ๋ ์ ๋ํด์ ํ์ตํ๋ ค๋ฉด ๋ ๋๋ฌด ๋ณต์กํด์ง๋ค. ์ ๊น ๊ตฌ๊ธ๋งํด๋ณด๋๊น ๋ฌด์จ entity๋ง ๋ฐ๋ก ์คํฐ๋ํ ์ฌ๋์ด ์์ด์... ใ ๊น๊ฒ ๋ค์ด๊ฐ์ง๋ ์์ผ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฅ ์งํฉ ์ ๋๋ก ์ฐ์ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
ERM ํ๋ก์ธ์ค์ output์ ๊ฐ์ฒด-๊ด๊ณ ๋ค์ด์ด๊ทธ๋จ(Entity-Relationship Diagram)์ด๋ผ ํ๋ค. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณผ์ ์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ทธ๋ฆผ์ผ๋ก ํํํ๊ธฐ ์ํด ํ์๋ฒ์ ํ์๋ก ํ๋ค. ERD๋ ๊ฐ๋ ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ํน์ ์๋งจํฑ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํ ํ์ ์ด๋ค.
์๋ก ๊ด๊ณ๋ ๋ ๊ฐ์ ์ํฐํฐ:
๊ตฌ์ฑ๋๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ ์ ๋จผ์ ํ์๊ฐ์ ์ ํ์. ์ด๋ฏธ ๊ทธ๋ ค๋๊ณ ์ ์ฅํ๋ ค๊ณ ๋ณด๋ฉด ํ์ ๊ฐ์ ์ด ์ ๋๋ค^^ ์ด์ํ ์์คํ ! ํ์๊ฐ์ ํ๊ณ ์ ์ฅํ๋ฉด ๊ตฌ์ฑ๋๋ฅผ ๊ณต์ ํ ์๋ ์๋ค.
*vachar: database์์ string์ ํํํ๋ ๋ฐฉ์์ด๋ค.
๋ญ๊ฐ ๋ฐฐ์ฐ๋ค๊ฐ ๊ฐ์๊ธฐ ํ์ด๋์จ ๊ฐ๋ ์ด๋ผ์ ์ผ๋จ ํฌํจ์ ์์ผฐ๋๋ฐ, ๋๋ฌด ๊ฐ๋ ์ ์ธ ๋ถ๋ถ์ด๋ผ์ ๋ ์ฐพ์๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ง์ด ๋ ๋ค.
์ง์๋ฅผ ๋ฌถ์ ์ฒ๋ฆฌํด์ ์ค๊ฐ์ ์คํ์ด ์ค๋จ๋๋ฉด ์ฒ์๋ถํฐ ๋ค์ ์คํํ๋ ๋กค๋ฐฑ์ ์ํํ๊ณ , ์ค๋ฅ์์ด ๋ง์น๋ฉด ์ปค๋ฐํ๊ฒ ๋๋ค. ์ง์๊ฐ ๋ชจ๋ ์คํ๋๊ฑฐ๋ ์คํ๋์ง ์๋ ๋ ผ๋ฆฌ์ ๋จ์๋ก ๋ณด๋ฉด ๋๋ค.
ex. ์ก๊ธํ ๋ ๋ด ๊ณ์ข์์ ๋์ด ๋๊ฐ๊ณ , ํ์ธ์ ๊ณ์ข์์ ๋์ ๋ฐ๋ ๊ณผ์ . ๋์ด ๋๊ฐ๊ณ ๋ฐ์ง๋ ๋ชปํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์!
Transaction Per Second. ์ด๋น ํธ๋์ญ์ ์์ธ๋ฐ, ๊ฐ๋ ์ค๋ช ์ ์ํค ์ฐธ๊ณ !
์ด๋น ํธ๋์ญ์ ์๋ ์ผ๋ฐ์ ์ธ ๊ด์ ์์ ์ด๋น ํน์ ์ํฐํฐ๊ฐ ์ํํ ์์ ๋์์ ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ ์ ํ๋ ๊ด์ ์์ ์ด ์ฉ์ด๋ DBMS ๋ฒค๋์ ์ฌ์ฉ์ ๊ณต๋์ฒด๊ฐ ์ด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ ์๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ณดํต์ด๋ค.
transaction์ด ์ ๊ณตํ๋ ํน์ง 4๊ฐ์ง๋ฅผ ์ฝ์๋ก ๋ฐ์จ ๋ด์ฉ. ํ๋ํ๋ ๋ฐ์ง๋ฉด ์ด๋ ค์ด ๋ด์ฉ์ด๊ธฐ ๋๋ฌธ์, ์๊ฐ์ด ์์ ๋ ๊น๊ฒ ๊ณต๋ถํ์!
all or nothing. ๋ถ๋ถ์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ์ค๋จ๋์ง ์๋ ๊ฒ์ ๋ณด์ฅํ๋ค. ์์ ๋จ์๋ฅผ ์ผ๋ถ๋ถ๋ง ์คํํ์ง ์๋๋ค.
ํธ๋์ญ์ ์ด ์๋ฃ๋๋ฉด ์ผ๊ด์ ์ธ db์ํ๋ฅผ ์ ์งํ๋ ๊ฒ. ๋ฐ์ดํฐ ํ์ , ์ํ๊ฐ ์ค๊ฐ์ ๋ณ์ง๋์ง ์๋๋ค.
ํธ๋์ญ์ ์ํ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ด ๋ผ์ด๋ค์ง ์๋๋ก ํ๋ ๊ฒ. ํธ๋์ญ์ ๋ผ๋ฆฌ๋ ์๋ก ๊ฐ์ญํ ์ ์๊ณ ํธ๋ ์ญ์ ๋ฐ์ ์ด๋ค ์ฐ์ฐ๋ ์ค๊ฐ ๋จ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฑ๊ณตํ ํธ๋์ญ์
์ ์์ํ ๋ฐ์๋์ด์ผ ํ๋ค.
๋ค์ ์ ๋ฆฌํ๋๋ฐ๋ ๋ ์๋กญ๋ค. ๋จ์ํ ๋ฃ๋ ๊ฒ์ด ๋์ด ์๋๋ผ ๊ถ๊ธํ ๊ฒ์ ์ด์ ์ถ๊ฐํ๋ฉด์ ๋ด ๊ฒ์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ค ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ
๊ธ์ด ์ฐธ ์ ๋ฆฌ๊ฐ ์๋์ด ์๊ตฐ์. ์์ฃผ ์ฌ ๊ฒ ๊ฐ๋ค์ ! ๊ณต๋ค์ฌ ๋ง๋ค์ด์ฃผ์ ์ ๋ณด ๊ณต์ ๊ฐ์ฌํฉ๋๋ค!