๊ธฐ์ ๋ฉด์ ์์ ์ง๋ฌธ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ
๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์์ ์ง๋ฌธ์ ์ด ์ธ๊ฐ์ง ๊ฒ์๋ฌผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ,
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค
2. ์๋ฐ
3. ์ค์ ๋ก ๋ฉด์ ์ฅ์์ ๋ค์๋ ์ง๋ฌธ
์ ์ ๋ฆฌํด ์ฌ๋ฆฝ๋๋ค.
์ด ์๋ฃ๋ค๋ก ๋ฉด์ ํฉ๊ฒฉ ํ ์ฌ์ง์ค์ด๋ฉฐ, ํ์ฌ ์ทจ์ ์ค๋น์ค์ด์ ๋ถ๋ค๊ป ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค.
1. index์ ๋ํด ์ค๋ช ํ์์ค.
DB๋ฅผ ๊ฒ์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ๋์์ฃผ๋ ์ญํ . ( B- Tree๋ฐฉ์ , DB ์ฑ๋ฅ๊ณผ ๋ฐ์ )
(์ธ๋ฑ์ค๋ B- Tree๋ฐฉ์(binary,์ด์ง๋ฒ)๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด์ง๋ฒ์ผ๋ก 0๊ณผ 1๋ก๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋นจ๋ผ์ ์ฌ์ฉํจ,
๊ทธ๋์ Select ๋ฌธ์ where, join์์ ์ข์ ์ฑ๋ฅ์ ๋ฐํํจ, ๋์ insert, update, delete๋ฌธ์์ ์ฑ๋ฅ์ด ๋จ์ด์ง)
2. JOIN ?
๋ณต์์ ํ ์ด๋ธ์ ๊ฒฐํฉ, ํ๋์ ํ ์ด๋ธ์ธ ๊ฒ์ฒ๋ผ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
1. INNER JOIN :์กฐ์ธํ๋ ๋๊ฐ์ ํ ์ด๋ธ ๋ชจ๋์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ํ์ ๋ํด์๋ง ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์จ๋ค
2. OUTER JOIN : ๋งค์นญ๋๋ ํ์ด ์์ด๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋งค์นญ๋๋ ํ์ด ์๋ ๊ฒฝ์ฐ NULL๋ก ํ์ํ๋ค
- LEFT OUTER JOIN : table A์ B๊ฐ ์์ ๋ B์ JOIN์ปฌ๋ผ์์ ๊ฐ์ ๊ฐ์ด ์์ ๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , B์ JOIN์ปฌ๋ผ์์ ๊ฐ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ Bํ ์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ์ปฌ๋ผ๋ค์ NULL๊ฐ์ผ๋ก ์ฑ์
- RIGHT OUTER JOIN : ์ด๊ฑด ์ค๋ฅธ์ชฝ
- FULL OUTER JOIN : ์กฐ์ธ ์ํ์ ์ข์ธก, ์ฐ์ธก ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด JOINํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์์ฑ, RIGHT OUTER JOIN ๊ณผ LEFT OUTER JOIN์ ๊ฒฐ๊ณผ๋ฅผ ํฉ์งํฉ์ผ๋ก ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ์ ๋์ผ
(ํ์ ์์ INNER JOIN๊ณผ OUTER JOIN์ ์ฃผ๋ก ์ฐ๊ธฐ์, ์ค์ ๋ฉด์ ์ฅ์์ CROSS JOIN๊ณผ SELF JOIN์ ์ง๋ฌธ๋ฐ์ ์ ์์)
3. CROSS JOIN
4. SELF JOIN
3. ํธ๋์ญ์ ์ด๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํ์ฌ , ๋ ผ๋ฆฌ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๋ ํ๋์ ์์ ๋จ์ ๋๋ ํ๊บผ๋ฒ์ ๋ชจ๋ ์ํ๋์ด์ผ ํ๋ ์ฐ์ฐ๋ค
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ๊ฒ์ด ๋ชฉ์
์ ์์ ์ผ๋ก ์คํ๋์์ ๊ฒฝ์ฐ์๋ commit์ด ์ด๋ฃจ์ด์ง๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ rollback์ด ์คํ๋๋ฉด์
๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์๋ฌด๋ฐ ์ํฅ์ ๋ผ์น์ง ์์ (all or nothing)
ํธ๋์ญ์ ์ ํน์ฑ
- ์์์ฑ(Atomicity) : ํธ๋์ญ์ ์ ์ฐ์ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋ ์ง ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์์์ผ ํจ
- ๋ ๋ฆฝ์ฑ(Isolation) : ์คํ์ค์ ์๋ ์ฐ์ฐ์ ์ค๊ฐ ๊ฒฐ๊ณผ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ทผํ ์ ์์
- ์ผ๊ด์ฑ(Consistency) : ์คํ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๋ฉด ์ธ์ ๋ ์ผ๊ด์ฑ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ๋ณํํจ
- ์ง์์ฑ(Durability) : ์ผ๋จ ์คํ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ ๋๋ฉด ๊ฒฐ๊ณผ๋ ์ง์์ ์ด์ด์ผ ํจ
- commit : ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด์ ํธ๋์ญ์ ์ด ๋ฐ์๋ ์ํ
- rollback : ์ทจ์ํ๊ฑฐ๋ ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง์ง ์์ ๋ ์ด์ ์ํ๋ก ๋์๊ฐ๋ ๊ฒ
4. ํธ๋์ญ์ ์ ๋ณํ์ผ๋ก ์ฒ๋ฆฌํ ๋์ ๋ฌธ์ ์
๋ ์ฝ๋๋ฅผ ๊ฐฑ์ ํ ๋ ๋ค๋ฅธ a์ ํธ๋์ ์ ์ด ๋กค๋ฐฑ๋๊ณ b๋ ๊ฐ์ด ๋กค๋ฐฑ์ด ๋๋ ์ํฉ์ด ์ผ์ด๋ ์ ์์
๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ : ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋ ์ผ๋ถ๋ถ์ LOCK์ ๊ฑธ๊ณ , ํธ๋์ ์ ์ด ์๋ฃ๊ฐ ๋๋ฉด LOCK์ ํ๊ณ ๋ค์ ์ํํ๋ค. (๋กํน์ ์ด๊ธฐ๋ฒ)
๋กํน์ ์ด๊ธฐ๋ฒ ์ฌ์ฉํ์ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ : ๋๊ฐ์ ํธ๋์ ์ ์ด ๋ฌดํ์ ๋๊ธฐํด์ผํ๋์ํ (๋ฐ๋๋ฝ)=>๊ต์ฐฉ์ํ์ ๋น ์ก๋ค
ํด๊ฒฐ๋ฐฉ๋ฒ : ํ๋ ๋กค๋ฐฑ์ํค๊ณ ๋กค๋ฐฑํ๊ฑฐ ์๋ฃํ๋ฉด ๋๊ธฐํ๊ณ ์๋๊ฑฐ ์คํ (๋กํน์ ์ด๋ ๋๊ฐ์ด)
5. ๊ด๊ณํ DB์ ๋น๊ด๊ณํDB์ ์ฐจ์ด?
๊ด๊ณํ : ํ ์ด๋ธํํ๋ก key Value ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋น๊ด๊ณํ : ํ ์ด๋ธํ์์ ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ง ์์ , nosql (mongoDB)
(๋น๊ด๊ณํ์ ์ฅ์ : ๋น๊ด๊ณํ์ join์ด ์์, ๊ฐ๋ณ์ ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ ์ ์์)
6. PK / FK ?
PK(Primary Key) : ํ ์ด๋ธ์ ๊ตฌ๋ถํ ์ ์๋ ๊ณ ์ ํ ์ปฌ๋ผ, ํ๋ผ์ด๋จธ๋ฆฌํค(๋ถ๋ชจํค)
FK(Foreign Key) : ํด๋น ์ปฌ๋ผ์ ์๋ฏธ๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ค์ธ ๋ ๋ถ๋ชจํ ์ด๋ธ์ pk๋ฅผ ์ฐธ์กฐํ๋ ์ปฌ๋ผ(์์ํค)
7. DB์ฑ๋ฅ์ ์ด๋ป๊ฒ ์ธก์ ํ ์ ์๋์ง?
QPS (query per second) ์ธก์ : queue์ ์์ด๋ ์์ ์ ๋ฐ๊ฒฌํด์ ์์ ๊ตฌ๊ฐ์ด ์ผ๋ง์ ๋์ธ์ง ํ๋ณด
8. http์ https์ ์ฐจ์ด
http: ์น๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์ ์์ฒญํ๋ ํ๋กํ ์ฝ์ด๊ณ ์ด ํ๋กํ ์ฝ์ด๋ ์น์์์ ๊ท์น, ๊ท๊ฒฉ
https : http์ ๋ค๋ฅด๊ฒ ๋ชจ๋ ํต์ ์ ์ํธํ ํ๊ธฐ ๋๋ฌธ์ http๋ณด๋ค ๋ณด์์ด ์ข๋ค
9. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทํ
๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์จ ์ ์๊ณ , ๋ฐ์ดํฐ ์ฝ์ ,๊ฐฑ์ ,์ญ์ ์ ๋ฐ์ํ ์ ์๋ ๊ฐ์ข ์ด์ํ์(Anamolies)์ ๋ฐฉ์งํ ์ ์์
(์ ๊ทํ์ ๋ฒ์น์ 1์ฐจ์ ๊ทํ, 2์ฐจ์ ๊ทํ,3์ฐจ์ ๊ทํ,BCNF,4์ฐจ์ ๊ทํ,5์ฐจ์ ๊ทํ๋ก ๋๋ ์ ์๋๋ฐ
์ค๋ฌด์ ์ผ๋ก 4,5๊น์ง๋ ํ์ง์์)
* 3์ฐจ ์ ๊ทํ? (๋ฉด์ ์ง๋ฌธ ๋น๋์๊ฐ ๊ฐ์ฅ ๋์ ์ ๊ทํ)
=>๊ธฐ๋ณธํค๋ฅผ ์ ์ธํ ์์ฑ๋ค ๊ฐ์ ์ดํ์ ํจ์ ์ข ์์ด ์๋ ๊ฒ(๊ธฐ๋ณธํค ์ด์ธ์ ๋ค๋ฅธ ์ปฌ๋ผ์ด ๊ทธ์ธ ๋ค๋ฅธ ์ปฌ๋ผ์ ๊ฒฐ์ ํ ์ ์๋ ๊ฒ)
10. mapper
parameter Type=์ ๋ ฅ๋ ๋ฐ์ดํฐ
resulte Type=์ฟผ๋ฆฌ ํ ๊ฒฐ๊ณผ๋ฅผ ์ํ ๋ฐ์ดํฐ