๐คDB Connection Pool์ด๋? ๋ฏธ๋ฆฌ ์ผ์ ๊ฐฏ์์ Connection์ ๋ง๋ค์ด Pool์ ์ ์ฅ ์ฌ์ฉ์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด Connection์ ์ ๊ณต, ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋๋ฉด Pool์ ๋ฐํํ์ฌ ์ ์ฅ ์์ฑ๋ Connection์ด ๋ชจ๋ ์ฌ์ฉ์ค์ผ๋๋ ํด๋ผ์ด์ธํธ๋ ๋๊ธฐ ์ํ๋ก ์ ํ โป๏ธConnection ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ํ๋ฆฌ์ผ์ด์
์์ DB ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์ปค๋ฅ์
์ ์กฐํํ๋ค. DB ๋๋ผ์ด๋ฒ๋ DB์ TCP/IP ์ปค๋ฅ์
์ ์ฐ๊ฒฐํ๋ค. (3 way handshake์ ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋์ ๋ฐ์ ) DB ๋๋ผ์ด๋ฒ๋ TCP/IP ์ปค๋ฅ์
์ด ์ฐ๊ฒฐ๋๋ฉด ์์ด๋์ ํจ์ค์๋, ๊ธฐํ ๋ถ๊ฐ ์ ๋ณด๋ฅผ DB์ ์ ๋ฌํ๋ค. DB๋ ์์ด๋, ํจ์ค์๋๋ฅผ ํตํด ๋ด๋ถ ์ธ์ฆ์ ๊ฑฐ์น ํ ๋ด๋ถ์ DB๋ฅผ ์์ฑํ๋ค. DB๋ ์ปค๋ฅ์
์์ฑ์ด ์๋ฃ๋์๋ค๋ ..
๐์คํฐ๋/๋ฐ์ดํฐ๋ฒ ์ด์ค
๐คJOIN์ด๋? ์ฌ๋ฌ ํ
์ด๋ธ ๊ฐ์ ์ฐ๊ฒฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ๊ฒฐํฉํ๋ ๊ฒ์ ์๋ฏธ ๋ค๋ฅธ ํ
์ด๋ธ์ ์๋ ์ ๋ณด๋ฅผ ํจ๊ป ๊ฐ์ ธ์์ ํ์ํ ์ ๋ณด๋ฅผ ํ๋์ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ํฉ์น๋ ๊ฒ์ ๋ชฉ์ ๐คJOIN์ ์ฌ์ฉํ๋ ์ด์ ? ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ํน์ง์ผ๋ก ์ ๊ทํ๋ฅผ ์ํํ๋ฉด ์๋ฏธ ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก ํ
์ด๋ธ์ด ๊ตฌ์ฑ๋๊ณ , ๊ฐ ํ
์ด๋ธ๋ผ๋ฆฌ ๊ด๊ณ(Relationship)๋ฅผ ๊ฐ๊ฒ ๋๋ค. ์์ ํน์ง์ผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ฅ ๊ณต๊ฐ์ ํจ์จ์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฅ์๋๋ค. ์๋ก ๊ด๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ํ
์ด๋ธ๋ก ๋๋์ด ์ ์ฅ๋๋ฏ๋ก, ๊ฐ ํ
์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ฒ์ํ๊ธฐ ์ํด์ ์กฐ์ธ์ด ํ์ํ๋ค. ๐ฉJOIN ์ข
๋ฅ โป๏ธ๋ด๋ถ ์กฐ์ธ(Inner Join) ๋ ํ
์ด๋ธ์์ ๊ณตํต๋ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ํ๋ค๋ง์ ๋ฐํ ๊ทธ๋ฅ ์กฐ์ธ์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉด ๋ด๋ถ..
B-Tree๋? ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ง๋์ด ์๋ ํธ๋ฆฌ๋ก ์ผ๋ฐ์ ์ธ ์ด์ง ํธ๋ฆฌ์ ๋น์ทํ์ง๋ง ํ ๋
ธ๋ ๋น ์์ ๋
ธ๋๊ฐ 2๊ฐ ์ด์ ๊ฐ๋ฅํ ํธ๋ฆฌ. ์ด๋ค ๊ฐ์ ๋ํด์๋ ๊ฐ์ ์๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๊ฒ์ด ์ฅ์ . ํธ๋ฆฌ๋? ๊ทธ๋ํ์ ์ผ์ข
์ผ๋ก, ํ ๋
ธ๋์์ ์์ํด์ ๋ค๋ฅธ ์ ์ ๋ค์ ์ํํ์ฌ ์๊ธฐ ์์ ์๊ฒ ๋์์ค๋ ์ํ์ด ์๋ ์ฐ๊ฒฐ ๊ทธ๋ํ B tree ์ฌ๊ฐํ์ผ๋ก ํ์๋ ํ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋
ธ๋(node) ๊ฐ์ฅ ์๋จ์ ๋
ธ๋๋ฅผ ๋ฃจํธ ๋
ธ๋(root node) ์ค๊ฐ ๋
ธ๋๋ค์ ๋ธ๋์น ๋
ธ๋ (branch node) ๊ฐ์ฅ ์๋ ๋
ธ๋ ๋ฆฌํ ๋
ธ๋(leaf node) ํน์ง ๊ท ์ผ์ฑ : ์ด๋ค ๊ฐ์ ๋ํด์๋ ๊ฐ์ ์๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. (ํธ๋ฆฌ ๋์ด๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ, ์ฝ๊ฐ์ ์ฐจ์ด๋ ์์ง๋ง O(logN)) ๊ท ํํธ๋ฆฌ : ๋ฃจํธ๋ก ๋ถํฐ ๋ฆฌํ๊น์ง..
์ธ๋ฑ์ค๋? ์ถ๊ฐ์ ์ธ ์ฐ๊ธฐ ์์
๊ณผ ์ ์ฅ๊ณต๊ฐ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ๊ฒ์ ์๋๋ฅผ ํฅ์ํ๊ธฐ ์ํ ์๋ฃ ๊ตฌ์กฐ ์ฆ, index๋ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ ๋ณ๋์ ํน๋ณํ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. index๋ฅผ ํ์ฉํด์ ๋น ๋ฅด๊ฒ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค. - DBํ
์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ํ์ํ ์ด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ถ์ ๋ ํ
์ด๋ธ ์ ์ฒด๋ฅผ ํ์ค์บ(full scan) ํด์ผ ํ๋ค. Full Scan ์๊ฐ ๋ณต์ก๋ : O(N) Index๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋(B tree) : O(logN) - ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํ(๋ค)์ ๋น ๋ฅด๊ฒ ์กฐํํ๊ธฐ ์ํด์ ๋น ๋ฅด๊ฒ ์ ๋ ฌ(order by)ํ๊ฑฐ๋ ๊ทธ๋ฃนํ(group by) ํ๊ธฐ ์ํด - ์ธ๋ฑ์ค ์ค์ ํ๋ ๋ฐฉ๋ฒ - ์ด๋ฏธ ํ
์ด๋ธ๊ณผ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ CREATE TA..
๐ฉํธ๋ฆฌ๊ฑฐ ์ ์ ๐ค ํธ๋ฆฌ๊ฑฐ๋? ํธ๋ฆฌ๊ฑฐ๋ ํ
์ด๋ธ์ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์๋์ผ๋ก ์คํ๋๋ ๊ฒ์ด๋ค. ์ฆ, ์ด๋ค ํ
์ด๋ธ์์ ํน์ ํ ์ด๋ฒคํธ(update, insert, delete)๊ฐ ๋ฐ์ํ์๋, ์คํ์ํค๊ณ ์ ํ๋ ์ถ๊ฐ ์ฟผ๋ฆฌ ์์
๋ค์ ์๋์ผ๋ก ์ํํ ์ ์๊ฒ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ฏธ๋ฆฌ ์ค์ ํด๋๋ ๊ฒ. ๊ฐ๋จํ ์๋ฅผ ๋ค์๋ฉด ์จ๋ผ์ธ ์ฃผ๋ฌธ์ ์ฅ๋ฐ๊ตฌ๋ํ
์ด๋ธ์ด์ -> ๊ตฌ๋งคํ
์ด๋ธ insert-> ๋ฐฐ์ก ํ
์ด๋ธ๋ก ์๋์ผ๋ก insert ์ฟผ๋ฆฌ๋ฅผ ์คํ์ํจ๋ค๊ณ ๋ณผ ์ ์๋ค. ๐ฉํธ๋ฆฌ๊ฑฐ ์ ํ ํฌ๊ฒ ํ ํธ๋ฆฌ๊ฑฐ์ ๋ฌธ์ฅํธ๋ฆฌ๊ฑฐ๊ฐ ์๋ค. ํ ํธ๋ฆฌ๊ฑฐ : ํ
์ด๋ธ ์์ ์ํฅ์ ๋ฐ์ ํ ๊ฐ๊ฐ์ ๋ํด ์คํ๋๋ค. ๋ณ๊ฒฝ ์ ๋๋ ๋ณ๊ฒฝ ํ์ ํ์ OLD, NEW๋ผ๋ ๊ฐ์ ์ค ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ์ ์ ์๋ค. OLD : ์์ ๋ฐ์ดํฐ ( DELETE๋ก ์ญ์ ๋ ๋ฐ์ดํฐ ๋๋ ..
๐ฉ์ ์ฅํ๋ก์์ ์ ์ ์ - DB๋ด๋ถ์ ์ ์ฅ๋ ์ผ๋ จ์ SQL ๋ช
๋ น๋ฌธ๋ค์ ํ๋์ ํจ์์ฒ๋ผ ์คํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ์ ์งํฉ - ์ผ๋ จ์ ์ฟผ๋ฆฌ๋ฅผ ๋ง์น ํ๋์ ํจ์์ฒ๋ผ ์คํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ๋ฌธ๋ค์ ์งํฉ - DB๋ด๋ถ์ ์ ์ฅ๋ ์ผ๋ จ์ SQL ๋ช
๋ น๋ฌธ๋ค์ ํ๋์ ํจ์์ฒ๋ผ ์คํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ์ ์งํฉ - ์ฟผ๋ฆฌ๋ฌธ๋ค์ ์งํฉ์ผ๋ก, ์ด๋ค ๋์์ ์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ๊ฑฐ์ณ์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ - ์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ํ ๋ฒ์ ์ํํ๋ ๊ฒ. ๋ง์น SQL๋ฌธ๋ฒ์ ํจ์์ ์ ์ฌํ ๋๋ ์ฌ๋ฌ ๋ธ๋ก๊ทธ์์ ์ฐพ์๋ณด๋ ๋น์ทํ ์ค๋ช
๋ค์ด๋ค. ์ ์ฅํ๋ก์์ ๋ '์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ํ๋์ ํจ์์ฒ๋ผ ์คํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ์ ์งํฉ'์ด๋ผ๊ณ ์ค๋ช
ํ๊ณ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฟผ๋ฆฌ๋ค์ด ํจ์์ฒ๋ผ ์คํ๋๋ค๋ ์๋ฏธ๋ ๋ฌด์์ผ๊น? ์๋ฏธ๋ฅผ ์๊ธฐ ์ํด SQL์ ํจ์๊ฐ ๋ฌด์์ธ์ง๋ถํฐ ์์๋ณด์. SQL์ ํจ์๋? ์ฐ๋ฆฌ๊ฐ ํ๋ก..
๐ฉ๋ฐ์ดํฐ๋ฒ ์ด์ค ๐๋ฌด๊ฒฐ์ฑ์ด๋? ๋ฐ์ดํฐ์ ์ ํ์ฑ, ์ผ๊ด์ฑ์ ๋ํ๋ ๋ฐ์ดํฐ์ ๊ฒฐํจ์ด ์๋ ์ํ, ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ณ ์ผ๊ด๋๊ฒ ์ ์งํ๋ ๊ฒ ๐๋ฌด๊ฒฐ์ฑ์ ์ฝ์กฐ๊ฑด์ด๋? ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ ์ฅ, ์ญ์ , ์์ ๋ฑ์ ์ ์ฝํ๊ธฐ ์ํ ์กฐ๊ฑด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํ๋ ๊ฒ ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ( Entity Intergrity ) ๊ธฐ๋ณธํค๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ์ null๊ฐ์ ๊ฐ์ง ์ ์๋ค. ๊ธฐ๋ณธํค๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ์ ๋ค๋ฅธ ๋ ์ฝ๋(ํํ)์ ์ค๋ณต๋ ์ ์๋ค. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ( Referential Intergrity ) ์ธ๋ ํค์ ๊ฐ์ null์ด๊ฑฐ๋ ์ฐธ์กฐ ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธํค ๊ฐ๊ณผ ๋์ผํด์ผ ํ๋ค. ์ธ๋ ํค ์์ฑ์ ์ฐธ์กฐํ ์ ์๋ ๊ฐ์ ์ง๋ ์ ์์ (์ธ๋ ํค ์์ฑ ๊ฐ์ด ์์ ํ
์ด๋ธ์ ์ธ์คํด์ค์..
๐ค์ ๊ทํ(Normalization)๋? ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๊ณ์์ ์ค๋ณต์ ์ต์ํํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ๋ ํ๋ก์ธ์ค๋ฅผ ์ ๊ทํ ๋ผ๊ณ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด '์ค๋ณต์ ์ต์ํํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํ'๋ผ๋ ๊ฒ ๋ญ๊น? ๊ณตํต์ ์ผ๋ก ํจ์ ์ข
์์ฑ์ ์ฌ์ฉ ๋๋ ์ด์ฉํด์ ํ
์ด๋ธ(๋ฆด๋ ์ด์
)์ ๊ด๋ จ ์๋ ์์ฑ๋ค๋ก๋ง ๊ตฌ์ฑํด์ ๋๋จธ์ง๋ ๋ถํดํ๊ณ ์ด์ํ์์ด ๋ฐ์ํ์ง ์๋ ํ
์ด๋ธ์ ๋ง๋ค์ด๊ฐ๋ ๊ณผ์ ์ด๋ผ๊ณ ๋๋ถ๋ถ์ ๋ธ๋ก๊ทธ์์ ์ค๋ช
๋๊ณ ์๋ค. ํจ์ ์ข
์์ฑ์ด๋ผ๋ ๊ฑธ ์ฌ์ฉํด์ ํจ์์ข
์์ฑ๊ณผ ๊ด๋ จ๋ attibute๋ค๋ก๋ง ๊ตฌ์ฑํ๊ณ ๋๋จธ์ง๋ ๋ถํด ๊ทธ๋ฆฌ๊ณ ์ค๋ณต์ด ๋ฐ์ํ์ง ์๊ฒ ํ๋ ๊ณผ์ ์ด๊ตฌ๋! โํจ์ ์ข
์์ฑ์ ๋ญ์ง? ํ ํ
์ด๋ธ์ ์๋ ๋ ๊ฐ์ Attribute(s) ์งํฉ(set) ์ฌ์ด์ ์ ์ฝ(a contraint) X ๊ฐ์ ๋ฐ๋ผ Y ๊ฐ์ด ์ ์ผํ๊ฒ ๊ฒฐ์ ๋ ๋ X๊ฐ..