A database generally refers to a structured collection of structured information or data stored electronically in a computer system.
The database is usually controlled by a database management system (DBMS). Data and DBMS are referred to as 'database systems' along with related applications, and are also collectively referred to as 'databases' for short.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ํ๋ฉด ๋ ์ค๋ฅด๋ ๊ฑด? ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ฅ์น!->ํ๋ฆฐ๋ง์ด ์๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ปดํจํฐ ์์คํ ์ ์ ์ฅ๋ ์ ๋ณด or ๋ฐ์ดํฐ์ ์งํฉ์ ์๋ฏธํ๋ค
Application์์๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์์ ์กด์ฌ ํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ ๋ณด์กด์ด ๋์ง ์์ application์ข ๋ฃ ํ ๋ค์ ์ฝ์ด๋ค์ด์ง ๋ชปํ๋ค.-> ๋ฐ์ดํฐ๋ฅผ ์ค๋ ๊ธฐ๊ฐ ์ ์ฅ,๋ณด์กด ๊ทธ๋ฆฌ๊ณ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ํ๊ธฐ
ํฌ๊ฒ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(NoSQL)๊ฐ์๋ค
RDBMS์ด๋ Relational Database Management System์ ์ฝ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ํธ๊ด๋ จ์ฑ ์๊ฒ ํํํ date๋ฅผ ์๋ฏธํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ธฐ์ด๋ฅผ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ์๋ฏธํ๋ค.
๋ํ์ ์ผ๋ก MySQL, Postgres, Oracle DB๋ฑ..
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๊ณ์์ ์ค๋ณต์ ์ต์ํํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ๋ ํ๋ก์ธ์ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ์ ๋ชฉํ๋ ๊ด๊ณ๋ฅผ ์ฌ๊ตฌ์ฑํ์ฌ ์๊ณ ์ ์กฐ์ง๋ ๊ด๊ณ๋ฅผ ์์ฑํ๋ ๊ฒ์
์ผ๋จ ๊ฐ๋จํ ์ ๋ฆฌ๋ง ํด๋ณด๋ฉด
1์ฐจ์ ๊ทํ : ๊ฐ row๋ง๋ค column์ ๊ฐ์ด 1๊ฐ์ฉ๋ง(์์๊ฐ,Atomic Value๋ผ๊ณ ํํ)
ex)์ฝ๋ฆฐ์ด/์๋ฐ์คํฌ๋ฆฝํธ,ํ์ด์ฌ ->row์์ ์๋ฐ์คํฌ๋ฆฝํธ,ํ์ด์ฌ์ด ๋์์ ๋ค์ด๊ฐ๋ฉด ์๋๋ค๋ ์๋ฏธ. ์ฝ๋ฆฐ์ด/์๋ฐ์คํฌ๋ฆฝํธ|์ฝ๋ฆฐ์ด/ํ์ด์ฌ ์ผ๋ก ๋ํ๋ด์ผํ๋๊ฒ
2์ฐจ์ ๊ทํ : ๋ชจ๋ ์์ฑ์ ๊ธฐ๋ณธํค์ ์ข
์๋๋ค. ๊ธฐ๋ณธํค๊ฐ ๋ณตํฉํค๋ก ๊ตฌ์ฑ๋์ด์์๋, ๋ณตํฉํค ์ ์ฒด์ ์์กดํ์ง ์๊ณ ์ผ๋ถ์ ์์กดํ๋ row๊ฐ ์์ผ๋ฉด ์ด๋ฅผ ์ ๊ฑฐํด์ผํ๋ค.
ex)์ฌ๋๊ณณ->๊ธฐ์,์ด๋ฆ,์๊ฐ๊ณผ๋ชฉ์ด ์์ด์ผ ์๊ฒน์น๊ฒ ์์์์(์ง๊ธ์ ์ค๋ณต๋๋ '์ฌ๋๊ณณ'์ด ์์ง๋ง ์๋ค๋ฉด!!)
๋ถ์ผ->๊ธฐ์,์ด๋ฆ์ ๊ด๋ จ์ฑ์ด ๋จ์ด์ง๋ค๊ณ ํ๋จ->๊ธฐ๋ณธํค์ค '์๊ฐ๊ณผ๋ชฉ'์๋ง ์ฐ๊ด๋๋๊น 2์ฐจ์ ๊ทํ์์ ๋ฐ๋ผ ๋ผ์ฃผ๊ธฐ!
3์ฐจ์ ๊ทํ : ๊ธฐ๋ณธํค๋ฅผ ์ ์ธํ๊ณ ์๋ก ์ข ์๋ถ๊ฐ(์์งํ ์์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค..ใ ใ )
๋งํฌํ ์คํธ(์ด๋ถ์ ๋ธ๋ก๊ทธ๊ฐ ๋๋ฌด ์ ์ค๋ช ๋์์..๐)์์ธํ ๋ด์ฉ์ ์ข๋ ๋ ๋ฒจ์ ! ํ๊ณ ๋์ ๋ณด์.....
https://aquerytool.com/๋ผ๋ ์ฌ์ดํธ๋ก ์ง์ ๊ด๊ณ๋ฅผ ๊ตฌ์ถํด ๋ณผ์ ์๋ค.
์ง์ ์๋ฆฌ์กฐ๋ฆฌ ๋ง์ ธ๊ฐ๋ฉด์ ๊ฐ๋
์ ์ตํ๋ณด๋๊ฑธ ์ถ์ฒ!
1.One To One(1:1)
1 : 1 ๊ด๊ณ๋ ์ด๋ ํ
์ด๋ธ์์ ๋ณด๋๋ผ๋ ์ ํํ ์ผ๋์ผ์ ๋งค์นญ์ด ๋๋ ๊ด๊ณ๋ฅผ ์๋ฏธํ๋ค.
๋ก๊ทธ์ธ๋ฐ์ดํฐ&์ ์ ์ ํ๋กํ์ผ์ ๊ฒฝ์ฐ ์ ์ ๋ ํ๋์ ํ๋กํ์ผ ๋ฐ์ดํฐ๋ง ๊ฐ๋๋ค.
2.One To Many(1:N)
ํ๋์ ํ
์ด๋ธ์ด ์ฌ๋ฌ๊ฐ์ ํ
์ด๋ธ์ ์ฐธ์กฐํ๋ ํํ.
์์ด๋ํ๋์ ์ฌ๋ฌ๊ฐ์ง์ฃผ๋ฌธ, ํ ์นดํ
๊ณ ๋ฆฌ์ ์ฌ๋ฌ ์ ํ์ด ๋ค์ด์๋๊ฒ
๋ญ๊ฐ ์~์๊ฒ๊ฐ๊ธฐ๋ ํ๋ฐ ์์ง ๋๋ฃจ๋ญ์คํด์
์์ column์ ์์
๋ก ํ์ด๋ณด์๋ค
(์ค๋ฅธ์ชฝ ๋นจ๊ฐ ์ซ์๊ฐ ์ผ์ชฝ์ id๋ฅผ ๊ฐ์ ธ์จ๊ฒ!)
3.Many To Many(N:N)
ํ
์ด๋ธ 1์ ์ฌ๋ฌ row๊ฐ ํ
์ด๋ธ 2์ ์ฌ๋ฌ row์ ์ฐ๊ฒฐ ๋๋ ๊ด๊ณ, ํ
์ด๋ธ ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฐธ์กฐํ๋ ๋ ํ๋์ ํ
์ด๋ธ์ด ์๊ธด ์ํฉ
์ด๊ฒ๋ ํ๋ฒ ์ง์ ํ์ด๋ดค๋ค
์ด์ ๋ ์ดํดํ๊ฒ ์ด๋์ฌ
users ํ ์ด๋ธ์ user_profile_id ์ปฌ๋ผ์ user_profile ํ ์ด๋ธ์ ๊ฑธ๋ ค์๋ ์ธ๋ถ ํค๋ผ๊ณ ์ง์ .์ฆ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๊ฒ user_profile_id์ ๊ฐ์ users_profile ํ ์ด๋ธ์ id ๊ฐ์ด๋ฉฐ ๊ทธ๋ฌ๋ฏ๋ก users_profile ํ ์ด๋ธ์ id ์ปฌ๋ผ์ ์กด์ฌํ๋ ๊ฐ๋ง ์์ฑ๋ ์ ์๋ค.
๋ง์ผ users ํ ์ด๋ธ์ ์๋ id ๊ฐ์ด user_id ์ ์ง์ ๋๋ฉด ์๋ฌ๊ฐ ๋ฐ์
1.ACID
2.ํธ๋์ญ์
(Transaction)
์ผ๋ จ์ ์์
๋ค์ ํ๋ฒ์ ํ๋์ ์์
์ฒ๋ผ ์ทจ๊ธํด์ ์คํํ๋๊ฒ์ผ๋ก ์ฌ์ฉ์์ ์๋์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์ฅ์ผ๋ก ๊ตฌ์ฑ๋ ํธ๋์ญ์
์ ๋ฐ๋์ ๋์์ ์คํ(COMMIT) ๋๊ฑฐ๋ ์ทจ์(ROLLBACK)๋๋ค. ํธ๋์ญ์
์ ํตํด ์์
์ ๋จ์๋ฅผ ๊ฒฐ์ ํจ์ผ๋ก์จ ์์
๊ฒฐ๊ณผ์ ์ ๋ขฐ์ฑ์ด ํ๋ณด๋๋ค. ACID๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ํธ๋์ญ์
๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค
๋ด๊ฐ A์๊ฒ 1000๋ง์์ ์ด์ฒดํ๋ค ๊ฐ์ ํ์. ๋ด๊ณ์ข์์ 1000๋ง์ ์ธ์ถ, A์๊ณ์ข์ 1000๋ง์ ์ ๊ธ์ด๋ผ๋ ์์ ์ ํ๋ฒ์ ๋ฌถ์ง์์ผ๋ฉด ๋ด๋์ ๋น ์ง๊ณ a๋ ๋ชป๋ฐ๋ ๋ถ์์ฌ๊ฐ ๋ฐ์ ํ ์๋ ์๋ค. ๋ฐ๋ผ์ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ผ๋ฉด ๋๊ฐ์ ์์ ์ด ๋ชจ๋ ์คํ๋๊ฑฐ๋ ์ทจ์๋๋๋ก ํ์ฌ ๊ฑฐ๋์ ์ ๋ขฐ๋๋ฅผ ๋์ผ ์ ์๋๊ฒ
๋น๊ด๊ณํ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค๋ฅด๊ฒ ๋น๊ด๊ณํ ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๊ธฐ ์ ์ ์ ์ ํ ํ์๊ฐ ์๋ค.
๋ํ์ ์ผ๋ก MongoDB, Redis, Cassandra ๋ฑ์ด ์๋ค.
์ฅ์
1) ํจ์จ์ ,์ฒด๊ณ์ ์ผ๋ก ์ ์ฅ&๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅ
2) ๋ฏธ๋ฆฌ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๊ตฌ์กฐ(ํ
์ด๋ธ ์คํค๋ง)๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์์ ์ฑ์ด ๋ณด์ฅ๋๋ค
3) ํธ๋์ญ์
(transaction)
4)์ ํํ๋ ๋ฐ์ดํฐ,์์ ์ฑ์ด ์ค์ํ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋๋ฐ ์ ๋ฆฌํ๋ค.
ex)์ ์์๊ฑฐ๋ ์ ๋ณด. ์ํ ๊ณ์ข ์ ๋ณด, ๊ฑฐ๋ ์ ๋ณด ๋ฑ๋ฑ.
๋จ์
1)ํ
์ด๋ธ ๊ตฌ์กฐ ๋ณํ ๋ฑ์ ๋ ์ ์ฐ(๋ฏธ๋ฆฌ ํ
์ด๋ธ์ ์ ํด์ผํด์..)
2)ํ์ฅ์ฑ์ด ์ฝ์ง ์๋ค(ํ
์ด๋ธ์ด ๋ฏธ๋ฆฌ ์ ํด์ ธ์์ผ๋๊น, ์๋ฒ์ ์๊ฐ์๋ ์ฑ๋ฅ๋ ๋์ฌ์ผํจ.. ๊ทผ๋ฐ ๋๋ฆฌ๋๊ฒ๋ ์ฝ์ง ์์..(scale up))
์ฅ์
1)ํ
์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ์ง ์์๋ ๋๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ ๋ณํ์ ์ ์ฐํ๋ค.
2)ํ์ฅํ๊ธฐ๊ฐ ๋น๊ต์ ์ฝ๋ค. ๊ทธ๋ฅ ์๋ฒ ์๋ฅผ ๋๋ฆฌ๋ฉด ๋จ(scale out)
3)ํ์ฅํ๊ธฐ๊ฐ ์ฝ๊ณ ํ
์ดํฐ์ ๊ตฌ์กฐ๋ ์ ์ฐํด ๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ ๋ฆฌํ๋ค.
4)์ฃผ๋ก ๋น์ ํํ ๋ฐ์ดํฐ ๊ทธ๋ฆฌ๊ณ ์์ ์ฑ์ด ์๋์ ์ผ๋ก ๋ ์ ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ ๋ฆฌํ๋ค. ex) ๋ก๊ทธ ๋ฐ์ดํ
๋จ์
1)๋ฐ์ดํฐ์ ์์ ์ฑ์ด ๋ ๋ณด์ฅ๋๋ค.
2)ํธ๋์ญ์
์ด ์๋๊ฑฐ๋ ๋น๊ต์ ๋ถ์์ ํ๋ค.