๐ง๐ป๐ป ๊ธ์ ์์ํ๊ธฐ์ ์์..
- ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ์์ ์์ฃผ ๋์ค๋ ์ง๋ฌธ์ ๋ชจ์ ํ ๋ฒ์ ์ ๋ฆฌํ ํฌ์คํธ์ ๋๋ค.
- ์ ์ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์ ์ค๋นํ๋ ์ฌ๋์ผ๋ก, ์ ํํ์ง ์์ ์ ๋ณด๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ๋ ์ฌ๋ฐ๋ฅธ ๋ต์ ์๊ณ ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ฐ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
- ํ์๋ Java ๊ธฐ๋ฐ์ ๋ฐฑ์๋ ์์ง๋์ด๋ฅผ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธ ๋ด๋ถ์ Java ํน์ ๋ฐฑ์๋ ๊ด๋ จ ์ฉ์ด๊ฐ ๋์ฌ ์ ์์ต๋๋ค. Java๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, ์์ ์ ์ง๋ฌด ์ธ์ด ๋ฐ ํ๋ ์์ํฌ ๊ด์ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
๐ง๐ป๐ป ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉด์ ์ง๋ฌธ
๐ก 1. DBMS๊ฐ ๋ฌด์์ธ์ง, DB๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์๊ฒ ์ด์?
DBMS(Database Management System)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ผ๋ก ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์ํํธ์จ์ด๋ฅผ ์๋ฏธํฉ๋๋ค.
DB๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , OS์ ์ข ์์ ์ธ ํ์ผ ์์คํ ์ ํ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ํ์ฅ์ฑ์ ํด์นฉ๋๋ค.
๋ํ ํ์ผ ์์คํ ์ ๋ฐ์ดํฐ ์ค๋ณต, ๋น์ผ๊ด์ฑ, ๊ฒ์ ๋ฑ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
DB์ ํน์ง :
1) ์ค์๊ฐ ์ ๊ทผ์ฑ : ๋น์ ํ์ ์ธ ์ง์์ ๋ํด ์ค์๊ฐ ์ฒ๋ฆฌ์ ์ํ ์๋ต์ด ๊ฐ๋ฅํฉ๋๋ค.
2) ์ง์์ ์ธ ๋ณํ : DB์ ์ํ๋ ๋์ ์ด๊ธฐ ๋๋ฌธ์, ์๋ก์ด ๋ฐ์ดํฐ์ ์ฝ์ , ์ญ์ , ๊ฐฑ์ ์ผ๋ก ํญ์ ์ต์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํฉ๋๋ค.
3) ๋์ ๊ณต์ฉ : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๊ฐ์ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ๋๋ก ํฉ๋๋ค.
4) ๋ด์ฉ์ ์ํ ์ฐธ์กฐ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ ๋๋ ์ฃผ์๋ ์์น๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์๊ตฌํ๋ ๋ฐ์ดํฐ ๋ด์ฉ ๊ธฐ๋ฐ์ผ๋ก ์ฐพ์ต๋๋ค.
๐ก 2. DB์์ '์คํค๋ง'๊ฐ ๋ฌด์์ผ๊น์?
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ๊ดํ ์ ๋ฐ์ ์ธ ๋ช ์ธ๋ฅผ ๊ธฐ์ ํ ๋ฉํ๋ฐ์ดํฐ ์งํฉ์ ์๋ฏธํฉ๋๋ค.
DB์์ ๋ฐ์ดํฐ ๊ฐ์ฒด, ์์ฑ, ๊ด๊ณ๋ฅผ ํ์์ธ์ด๋ก ์ ์ํ ๊ตฌ์กฐ๋ก, DB ์ฌ์ฉ์๊ฐ ์๋ฃ๋ฅผ ์ ์ฅ, ์กฐํ, ์ญ์ , ๋ณ๊ฒฝํ ๋ DBMS๋ ์์ ์ด ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์ฐธ์กฐํด ๋ช ๋ น์ ์ํํ๊ฒ ๋ฉ๋๋ค.
- ์ธ๋ถ ์คํค๋ง(External Schema) : ํ๋ก๊ทธ๋๋จธ๋ ์ฌ์ฉ์์ ์ ์ฅ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ์ต์ผ๋ก ์กฐ์ง์ ์ผ๋ถ๋ถ์ ์ ์ํ ๊ฒ
- ๊ฐ๋ ์คํค๋ง(Conceptual Schema) : ๋ชจ๋ ์์ฉ ์์คํ ๊ณผ ์ฌ์ฉ์๋ค์ด ํ์๋กํ๋ ๋ฐ์ดํฐ๋ฅผ ํตํฉํ ์กฐ์ง ์ ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ ์ํ ๊ฒ
- ๋ด๋ถ ์คํค๋ง(Internal Schema) : ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ํํ๋ฅผ ๊ธฐ์ ํ๋ ๊ฒ
๐ก 3. DB์์ '๋ทฐ'๋ ๋ฌด์์ธ๊ฐ์?
๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ์ ๊ทผ์ด ํ์ฉ๋ ์๋ฃ๋ง์ ์ ํ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ๋ ์ด์์ ํ ์ด๋ธ์์ ์ ๋๋, ๋ฉ๋ชจ๋ฆฌ์๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ์ง ์๋ ๊ฐ์ํ ์ด๋ธ์ ๋๋ค.
๋ทฐ๋ ์ ์ฅ์ฅ์น ๋ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ์ง ์์ง๋ง, ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฃผ๋๋ฉฐ ๋ฐ์ดํฐ ๋ณด์ ์์ , ์ฒ๋ฆฌ๊ณผ์ ํ ์คํธ ๋ฑ ์์์ ์ธ ์์ ์ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ทฐ๋ JOIN๋ฌธ์ ์ฌ์ฉ ์ต์ํ๋ก ์ฌ์ฉ์์ ํธ์์ฑ์ ์ต๋ํ ํฉ๋๋ค.
๐ก 4. DB์์ ์ฌ์ฉํ๋ 'ํค'์ ๋ํด ์ค๋ช ํ๊ณ , ํค์ ์ข ๋ฅ์ ๋ํด ์ค๋ช ์ด ๊ฐ๋ฅํ ๊น์?
๊ฒ์, ์ ๋ ฌ ์ ํํ์ ๊ตฌ๋ถํ๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ์ ์๋ฏธํฉ๋๋ค.
> ์ํผํค (Super Key)
ํ ์ด๋ธ์ ์กด์ฌํ๋ ํ๋๋ค์ ๋ถ๋ถ์งํฉ์ผ๋ก์จ, ์ ์ผ์ฑ์ ๋ง์กฑํด์ผ ํ๋ ํค์ ๋๋ค. ๋ถ๋ถ ์งํฉ์ด๋ฏ๋ก ํ๋ ํ๋๋ ์ํผํค๊ฐ ๋ ์ ์๊ณ , ํ๋ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฌถ์ธ ํค๋ ์ํผํค๊ฐ ๋ ์ ์์ต๋๋ค. ํ๋๊ฐ ์ฌ๋ฌ ๊ฐ ๋ฌถ์ธ ํค๋ฅผ '๋ณตํฉํค'๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
> ํ๋ณดํค (Candidate Key)
ํ๋ณดํค๋ ๊ธฐ๋ณธ ํค๊ฐ ๋ ์ ์๋ ํ๋ณด๊ฐ ๋๋ ํค๋ค์ ์๋ฏธํฉ๋๋ค. ์ํผํค ์ค์์ ์ต์์ฑ์ ๋ง์กฑํ๋ ํค๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ฐ๋ผ์ ํ๋ณดํค๋, ์ ์ผ์ฑ + ์ต์์ฑ์ ๋ง์กฑํ๋ ํค๋ค์ ์๋ฏธํฉ๋๋ค.
- ์ ์ผ์ฑ : ๋ชจ๋ ๋ ์ฝ๋์์ ํด๋น ํ๋์ ์ค๋ณต๋ ๊ฐ์ด ๋ํ๋์ง ์๋๋ค๋ ์์ฑ
- ์ต์์ฑ : ์ต์ํ์ ํ๋๋ก ๋ ์ฝ๋๋ฅผ ์ ์ผํ๊ฒ ๊ตฌ๋ณํ ์ ์์ด์ผ ํ๋ค๋ ์์ฑ
> ๊ธฐ๋ณธํค (Primary Key)
๊ธฐ๋ณธ ํค๋ ํ ์ด๋ธ์์ ํน์ ๋ ์ฝ๋๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํด ํ๋ณด ํค ์ค์์ ์ ํ๋ ํ๋์ ๊ณ ์ ํ ์๋ณ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ค๋ณต๋๋ ๊ฐ์ด๋ NULL๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค.
ํ๋ณดํค ์ค์์ ๊ฐ์ด ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๊ณ , ๊ฐ์ด ๋จ์ํ ๊ฒ์ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
> ๋์ฒดํค (Alternate Key)
ํ๋ณด ํค ์ค์์ ๊ธฐ๋ณธ ํค๋ก ์ ํ๋ ๊ฒ๋ค์ ์ ์ธํ ๋๋จธ์ง ๋ชจ๋ ๊ฒ์ ๋์ฒดํค๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
> ์ธ๋ํค (Foreign Key)
ํ ํ ์ด๋ธ์ ํค ์ค์์ ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ํค๋ฅผ ์๋ฏธํฉ๋๋ค.
ํ๋์ ํ๋ ๋๋ ์ ์ฒด ํ๋์ ๋ถ๋ถ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๊ณ , ์ค๋ณต๋ ๊ฐ๊ณผ NULL๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ ๋ฐ๋์ ์ฐธ์กฐ๋๋ ํ ์ด๋ธ์์ ์ ์ผํ ๊ฐ์ ๊ฐ๋ ํ๋๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ํด ์ฐธ์กฐ ๋์์ด ์กด์ฌํ์ง ์๋ ์ธ๋ ํค๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ์ฆ, ์ด๋ ํ ์ธ๋ ํค BB๊ฐ AA๋ฅผ ์ฐธ์กฐํ๋ค๋ฉด, AA๋ ๋ฐ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํด์ผ ํฉ๋๋ค. ์ธ๋ ํค๋ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์งํค๊ธฐ ์ํด RESTRICTED์ CASCADE, SET NULL์ด๋ผ๋ ๊ฐ๋ ์ ์ธ๋ ํค์ ์ ์ฉํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- RESTRICTED: ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ ๋๋ ์ญ์ ํ๊ณ ์ ํ ๋ ํด๋น ๋ ์ฝ๋๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด, ๋ณ๊ฒฝ ๋๋ ์ญ์ ์ฐ์ฐ์ ์ทจ์ํ๋ค.
- CASCADE: ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ ๋๋ ์ญ์ ํ๋ฉด, ํด๋น ๋ ์ฝ๋๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ฒด๋ ๋ณ๊ฒฝ ๋๋ ์ญ์ ๋๋ค.
- SET NULL: ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ ๋๋ ์ญ์ ํ๋ฉด, ํด๋น ๋ ์ฝ๋๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ฒด์ ๊ฐ์ NULL๋ก ์ค์ ํ๋ค.
๐ก 5. ํธ๋์ญ์ ์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ ผ๋ฆฌ์ ์ธ ์์ ์ ์ฟผ๋ฆฌ ๊ฐ์์ ๊ด๊ณ ์์ด ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ด๋์ ์์ ๋จ์ ์ ์ฒด๊ฐ 100% ์ ์ฉ๋๊ฑฐ๋ ์๋ฌด๊ฒ๋ ์ ์ฉ๋์ง ์์์ผ ํจ์ ๋ณด์ฅํฉ๋๋ค.
๐ก 6. ๊ทธ๋ ๋ค๋ฉด ํธ๋์ญ์ ์ ํน์ง์ ๋ฌด์์ด ์์๊น์?
ํธ๋์ญ์ ์ ํน์ง์ ์ ๊ธ์๋ฅผ ๋ฐ์ ACID๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
- Atomicity (์์์ฑ) : ํธ๋์ญ์ ์ ๊ตฌ์ฑํ๋ ์ฐ์ฐ ์ ์ฒด๊ฐ ๋ชจ๋ ์ ์์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ๋ชจ๋ ์ทจ์๋์ด์ผ ํ๋ค.
- Consistency (์ผ๊ด์ฑ) : ํธ๋์ญ์ ์ด ์คํ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๋ฉด ์ธ์ ๋ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ์ ์งํ๋ค.
- Isolation (๊ณ ๋ฆฝ์ฑ) : ๋ ๊ฐ ์ด์์ ํธ๋์ญ์ ์ด ๋์์ ๋ฐ์ํ ๋, ์๋ก์ ์ฐ์ฐ์ ์ํฅ์ ์ฃผ๋ฉด ์ ๋๋ค.
- Durability (์๊ตฌ์ฑ) : ์ปค๋ฐ๋ ํธ๋์ญ์ ์ ๋ด์ฉ์ ์๊ตฌํ ๋ฐ์๋๋ค.
๐ก 7. ํธ๋์ญ์ ์ ์ํ๋ ์ด๋ค ๊ฒ๋ค์ด ์์๊น์?
ํธ๋์ญ์ ์ ์ํ๋ ํ๋, ์ฅ์ , ์ฒ ํ, ๋ถ๋ถ์๋ฃ, ์๋ฃ๊ฐ ์์ต๋๋ค.
- ํ๋ (Active) : ํธ๋์ญ์ ์ด ์คํ ์ค์ธ ์ํ
- ์ฅ์ (Fail) : ํธ๋์ญ์ ์ด ์คํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํด ์ค๋จํ ์ํ
- ์ฒ ํ (Aborted) : ํธ๋์ญ์ ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด Rollback(ํธ๋์ญ์ ์ฐ์ฐ ์ด์ ์ ์ํ๋ก ๋์๊ฐ) ์ํํ๋ ์ํ
- ๋ถ๋ถ ์๋ฃ (Partitially Commit) : ํธ๋์ญ์ ์ด ๋ง์ง๋ง ์ฐ์ฐ๊น์ง ์คํํ์ง๋ง, Commit ์ฐ์ฐ์ด ์คํ๋๊ธฐ ์ง์ ์ ์ํ
- ์๋ฃ (Committed) : ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋์ด commit ์ฐ์ฐ์ ์คํํ ํ์ ์ํ
๐ก 8. ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ์์ค์ ๋ํด ๋งํด์ฃผ์ธ์.
๋์์ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์ฒ๋ฆฌ๋ ๋, ํธ๋์ญ์ ๋ผ๋ฆฌ ์ผ๋ง๋ ์๋ก ๊ณ ๋ฆฝ๋์ด ์๋์ง๋ฅผ ๋ํ๋ด๋ ๊ฒ์ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค์ด๋ผ๊ณ ๋งํฉ๋๋ค. ๊ฐ๋จํ ํํํ์๋ฉด, ํน์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ณ๊ฒฝํ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋๋ก ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ ์ ๋๋ค.
- Read Uncommitted
- ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ปค๋ฐ๋์ง ์์ ๋ด์ฉ์ ์ ๊ทผ ๊ฐ๋ฅ (Dirty Read)
- ๋ฝ ๋ฐ์ X
- Read Committed
- ์ปค๋ฐ๋ ๋ด์ฉ๋ง ์ ๊ทผ ๊ฐ๋ฅ
- ํ ํธ๋์ญ์ ๋ด์์ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋น์ผ๊ด์ ์ธ ํ์ ๋ฐ์ (Nonrepeatable read)
- ๋ฝ ๋ฐ์ X
- Repeatable Read
- ์ปค๋ฐ์ด ์๋ฃ๋ ๋ฐ์ดํฐ๋ง ์ฝ์ ์ ์์ผ๋ฉฐ, ํธ๋์ญ์ ๋ฒ์ ๋ด์์ ์กฐํํ ๋ด์ฉ์ด ํญ์ ๋์ผํจ์ ๋ณด์ฅ
- ์ผ์ ๋ฒ์์ ๋ ์ฝ๋๋ฅผ ๋๋ฒ ์ด์ ์ฝ์ ๋, ์ฒซ ๋ฒ์ฌ ์ฟผ๋ฆฌ์์ ์๋ ์ ๋ น ๋ ์ฝ๋๊ฐ ๋๋ฒ์งธ ์ฟผ๋ฆฌ์์ ๋ํ๋๋ ํ์์ Phantom read
- ๋ฝ ๋ฐ์
- Serializable
- ํ ํธ๋์ญ์ ์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ทผ ๋ถ๊ฐ๋ฅ
- ๋ฝ ๋ฐ์
๐ก 9. ํธ๋์ญ์ ์ ์ฐ์ฐ ์ค, Commit๊ณผ Rollback์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- Commit : ํธ๋์ญ์ ์ด ์ฑ๊ณตํด ํธ๋์ญ์ ๊ฒฐ๊ณผ๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ํ๋ ์ฐ์ฐ์ ๋๋ค.
- Rollback : ํธ๋์ญ์ ์ ์คํ์ ์ทจ์ํ์์ ์๋ฆฌ๋ ์ฐ์ฐ์ด๋ฉฐ, ํธ๋์ญ์ ์ด ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์๋์ ์ํ(ํธ๋์ญ์ ์ฐ์ฐ ์ด์ ์ ์ํ)๋ก ์์ ๋ณต๊ท์ํค๋ ์ฐ์ฐ์ ์๋ฏธํฉ๋๋ค.
๐ก 10. DB์์ ๋์์ฑ ์ ์ด๋ ๋ฌด์์ผ๊น์?
DBMS๋ ๋ค์์ ์ฌ์ฉ์๋ฅผ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ค์ค ํธ๋์ญ์ ์ ์ํธ ๊ฐ์ญ ์์ฉ ์ค, DB๋ฅผ ๋ณดํธํด์ผ ํฉ๋๋ค. ๋์์ ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์ ์ด ์ํ๋ ๋, ํธ๋์ญ์ ๋ค์ด DB์ ์ผ๊ด์ฑ์ ํ๊ดดํ์ง ์๋๋ก ํธ๋์ญ์ ๊ฐ์ ์ํธ์์ฉ์ ์ ์ดํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋์์ฑ ์ ์ด ๊ธฐ๋ฒ์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ก 11. DB Lock์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
DB Lock์ ํธ๋์ญ์ ์ฒ๋ฆฌ์ ์์ฐจ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก, ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ ์ Lock์ ์์ฒญํด์ Lock์ด ํ๋ฝ๋๋ฉด ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฒ์ ๋๋ค.
DB Lock์ ์ข ๋ฅ๋ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก, ๋น๊ด์ ๋ฝ๊ณผ ๋๊ด์ ๋ฝ์ด ์์ต๋๋ค.
- ๋น๊ด์ ๋ฝ (Pessimistic Lock) : ๋ฐ์ดํฐ ๊ฐฑ์ ์ ์ถฉ๋์ด ๋ฐ์ํ ๊ฒ์ผ๋ก ์์ํด ๋ฝ์ ๊ฑฐ๋ ๋ฐฉ์
- ๊ณต์ ๋ฝ(Shared Lock) : ์ฌ์ฉ ์ค์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ฝ๊ธฐ ํ์ฉ, ์ฐ๊ธฐ ๋นํ์ฉ
- ๋ฒ ํ๋ฝ(Exclusive Lock) : ์ฌ์ฉ ์ค์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ฝ๊ธฐ, ์ฐ๊ธฐ ๋ชจ๋ ๋นํ์ฉ
- ๋ฐ์ดํฐ ์์ ์ฆ์ ํธ๋์ญ์ ์ถฉ๋์ ๊ฐ์งํ ์ ์์ต๋๋ค.
- ๋กค๋ฐฑ์ ๊ฐ๋ฐ์๊ฐ ์ผ์ผํ ํ๊ธฐ ํ๋ ๊ฒฝ์ฐ, ์ถฉ๋์ด ์ผ์ด๋ฌ์ ๋ ๋กค๋ฐฑ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ฒฝ์ฐ, ์ฃผ๋ฌธ ์์ ์ฟ ํฐ ์ฌ์ฉ, ์๋ฆผ ์ ๊ณต, ์ฃผ๋ฌธ์ ์์ฑ ๋ฑ ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ํ ํธ๋์ญ์ ์ ๋ฌถ์ฌ์๋ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค.
- ๋๊ด์ ๋ฝ (Optimistic Lock) : ๋ฐ์ดํฐ ๊ฐฑ์ ์ ์ถฉ๋์ด ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ผ ๊ฐ์ ํด ๋ฝ์ ๊ฑธ์ง ์๊ณ , ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํตํด์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐฉ์.
- Version ์ปฌ๋ผ์ ๋ณ๋๋ก ์ถ๊ฐํด์ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค. Version ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ด ์ปค๋ฐ๋ง ์ธ์ ์ด ๋๊ณ , Bulk Insert๋ ๋ฒ์ ์ ๋ฌด์ํ๊ธฐ ๋๋ฌธ์ Bulk Insert์์ ๋ฒ์ ์ ์ฆ๊ฐ์ํค๋ ค๋ฉด ๋ฒ์ ํ๋๋ฅผ ๊ฐ์ ๋ก ์ฆ๊ฐ์์ผ์ผ ํฉ๋๋ค.
- DB๊ฐ ์ ๊ณตํ๋ ๋ฝ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๊ณ , JPA๊ฐ ์ ๊ณตํ๋ ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ(Application Level์ Lock)์ ์ฌ์ฉํฉ๋๋ค.
- ์ปค๋ฐ ์ ๊น์ง๋ ์ถฉ๋์ ์ ์ ์์ต๋๋ค.
- ์ถฉ๋์ด ๋๋ฉด ๋กค๋ฐฑ ์ฒ๋ฆฌ๋ ๊ฐ๋ฐ์์ ๋ชซ์ ๋๋ค.
๋น๊ด์ ๋ฝ๊ณผ ๋๊ด์ ๋ฝ์ ์ฌ์ฉ ๊ธฐ์ค์ '์ฝ๊ธฐ์ ์์ ๋น์จ์ด ์ด๋์ ๊ฐ๊น์ด์ง'์ ๋๋ค. ์์ ์ ๋น์จ์ด ๋๋ค๋ฉด ๋น๊ด์ ๋ฝ์, ์ฝ๊ธฐ์ ๋น์ค์ด ๋๋ค๋ฉด Optimistic์ ์ฌ์ฉํฉ๋๋ค.
Why?
๋ฐ์ดํฐ ์์ ์ฆ์ ํธ๋์ญ์ ์ถฉ๋์ ๊ฐ์งํ๊ณ ๋กค๋ฐฑ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์์ ์ด ๋ง์ ๊ฒฝ์ฐ ๋น๊ด์ ๋ฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฝ๊ธฐ ์์ ์ด ๋ง๋ค๋ฉด JPA์ ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํ์ฉํด ๊ฐ๋ฐํ๋ ๊ฒ์ด ๋์ฑ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋๊ด์ ๋ฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๐ก 12. ๋ฌด๊ฒฐ์ฑ์ด ๋ฌด์์ธ์ง, ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์, ์ ํ์ฑ / ์ผ๊ด์ฑ / ์ ํจ์ฑ์ด ์ ์ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ฐ๋ผ์ DB์ ์ ํ์ฑ, ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ ์ฅ, ์ญ์ , ์์ ์ ์ ์ฝํ๊ธฐ ์ํ ์กฐ๊ฑด์ด ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ ๋๋ค.
- ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ : ๊ธฐ๋ณธ ํค๋ null, ์ค๋ณต ๊ฐ ๋ถ๊ฐ๋ฅ
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ : ์ธ๋ ํค๋ null์ด๊ฑฐ๋ ์ฐธ์กฐ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค ๊ฐ๊ณผ ๋์ผํด์ผ ํจ.
๐ก 13. JOIN์ ์ด๋จ ๋ ์ฌ์ฉํ๋ ๊ฒ์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ ์ด๋ ํ๋์ ์ปฌ๋ผ์ ๊ณต์ ํ๊ณ ์์ด์ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
๐ก 14. Inner join๊ณผ Outer join์ ์ฐจ์ด๋ฅผ ์ค๋ช ํด์ฃผ์ธ์.
inner join์ ์๋ก ์ฐ๊ด๋ ๋ด์ฉ๋ง ๊ฒ์ํ๋ ์กฐ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
A์ B์ ๋ํด ์ํํ๋ ๊ฒ์, A์ B์ ๊ต์งํฉ์ ๋งํฉ๋๋ค. ๋ฒค๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๊ทธ๋ ธ์ ๋ ๊ต์ฐจ๋๋ ๋ถ๋ถ์ ๋๋ค.
outer join์ ํ ์ชฝ์๋ ๋ฐ์ดํฐ๊ฐ ์๊ณ ํ ์ชฝ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ ์๋ ์ชฝ์ ๋ด์ฉ์ ์ ๋ถ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
A์ B์ ๋ํด ์ํํ๋ ๊ฒ์, A์ B์ ํฉ์งํฉ์ ๋งํฉ๋๋ค. ๋ฒค๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๊ทธ๋ ธ์ ๋ ํฉ์งํฉ ๋ถ๋ถ์ ๋๋ค.
outer join์๋ LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN์ด ์์ต๋๋ค.
๐ก 15. Group By์ ์ญํ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
GROUP BY ๋ GROUP BY ๋ช ๋ น์ด๋ฅผ ํตํด ํน์ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ณ ํค๋ก ์ ์ํ์ฌ ๊ทธ๋ฃน์ ์ง๋ ์ญํ ์ ํฉ๋๋ค.
์งํฉ ์ฐ์ฐ์๋ COUNT, SUM, AVG, MAX, MIN ๋ฑ์ด ์๊ณ , DISTINCT์ ๊ฐ์ด ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ํน์ง์ด ์์ต๋๋ค.
๐ก 16. DELETE, TRUNCATE, DROP์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
DELETE๋ ๋ฐ์ดํฐ๋ ์ง์ฐ์ง๋ง ํ ์ด๋ธ ์ฉ๋์ ์ค์ด๋ค์ง ์๊ณ ์ํ๋ ๋ฐ์ดํฐ๋ง ๊ณจ๋ผ์ ์ง์ธ ์ ์์ต๋๋ค. ์ญ์ ํ ๋๋๋ฆด ์ ์์ต๋๋ค.
TRUNCATE๋ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ญ์ ํ๋ ๋ฐฉ์์ ๋๋ค. ํ ์ด๋ธ ์ฉ๋์ด ์ค์ด๋ค๊ณ ์ธ๋ฑ์ค ๋ฑ๋ ์ญ์ ๋์ง๋ง ํ ์ด๋ธ์ ์ญ์ ํ ์ ์๊ณ , ์ญ์ ํ ๋๋๋ฆด ์ ์์ต๋๋ค.
DROP์ ํ ์ด๋ธ ์์ฒด๋ฅผ ์์ ํ ์ญ์ ํ๋ ๋ฐฉ์(๊ณต๊ฐ, ์ธ๋ฑ์ค, ๊ฐ์ฒด ๋ชจ๋ ์ญ์ )์ ๋๋ค. ์ญ์ ํ ๋๋๋ฆด ์ ์์ต๋๋ค.
๐ก 17. ํธ๋ฆฌ๊ฑฐ๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
ํธ๋ฆฌ๊ฑฐ๋ ํน์ ํ ์ด๋ธ์ ๋ฐ์ํด INSERT, DELETE, UPDATE ๊ฐ์ DML์ด ์ํ๋์์ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋์ผ๋ก ๋์ํ๋๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ(๋ฉ์๋ ํ์์ ์ฟผ๋ฆฌ)์ผ๋ก, ์ฌ์ฉ์๊ฐ ์ง์ ํธ์ถํ์ง ์๊ณ DB์์ ์๋์ ์ผ๋ก ํธ์ถ๋๋ค๋ ํน์ง์ด ์์ต๋๋ค.
DML์ด ์คํ๋๊ณ , ์๋์ผ๋ก ์ ์๋ ํ๋ก์์ ๊ฐ ์คํ๋ฉ๋๋ค.
(ํ๋ก์์ : ์ฟผ๋ฆฌ๋ฌธ์ ๋ง์น ํ๋์ ๋ฉ์๋ ํ์์ผ๋ก ๋ง๋ค๊ณ ์ด๋ค ๋์์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์ฉ๋.)
๐ก 18. DML, DDL, DCL์ด ๊ฐ๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
- DDL(์ ์์ด) : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์ ์, ์์ , ์ญ์ ํ๋ ์ธ์ด (ALTER, CREATE, DROP)
- DML(์กฐ์์ด) : DB๋ด์ ์๋ฃ ๊ฒ์, ์ฝ์ , ๊ฐฑ์ , ์ญ์ ๋ฅผ ์ํ ์ธ์ด (SELECT, INSERT, UPDATE, DELETE)
- DCL(์ ์ด์ด) : ๋ฐ์ดํฐ์ ๋ํด ๋ฌด๊ฒฐ์ฑ ์ ์ง, ๋ณํ ์ํ ์ ์ด, ๋ณดํธ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ธ์ด (COMMIT, ROLLBACK, GRANT, REVOKE)
๐ก 19. DB ์ธ๋ฑ์ค์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
Index๋ ํ ์ด๋ธ์ ์ฒ์๋ถํฐ ๋๊น์ง ๊ฒ์ํ์ง ์๊ณ , ์ธ๋ฑ์ค๋ฅผ ๊ฒ์ํด์ ํด๋น ์๋ฃ์ ํ ์ด๋ธ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํฉ๋๋ค.
Index๋ ํญ์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์ํ๋ ๊ฐ์ ๊ฒ์ํ๋ ๋ฐ ๋น ๋ฅธ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ง๋ง, ์๋ก์ด ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ , ์์ ํ๋ ๊ฒฝ์ฐ์๋ ์ฟผ๋ฆฌ๋ฌธ ์คํ ์๋๊ฐ ๋๋ ค์ง๋๋ค. (์ธ๋ฑ์ค๋ ๋ณ๊ฒฝํ๊ณ ์ ๋ ฌํด์ผ ํ๋ฏ๋ก ์ฑ๋ฅ ์ ํ)
์ฆ, ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ์ ์ฅ ์ฑ๋ฅ์ ํฌ์ํ๋ ๋์ , ๋ฐ์ดํฐ์ ๊ฒ์ ์๋๋ฅผ ๋์ด๋ ๊ธฐ๋ฅ์ ๋๋ค.
๐ก 20. Index์ B+ ํธ๋ฆฌ๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
B+ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ B ํธ๋ฆฌ๋ฅผ ํ์ฅํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
1) B ํธ๋ฆฌ
์ด์งํธ๋ฆฌ๋ฅผ ํ์ฅํด์ ๋ง์ ์์์ ๊ฐ์ ์ ์๋ ๊ท ํ ํธ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. Key๋ค์ด ํญ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ๊ตฌ์ฑ๋๋ฉฐ, Branch์ Leaf ๋ ธ๋๊ฐ Key์ Data๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ์ ๋๋ค.
2) B+ ํธ๋ฆฌ
B-ํธ๋ฆฌ๋ฅผ ํ์ฅํด์ ๋ฐ์ดํฐ์ ๋น ๋ฅธ ์ ๊ทผ์ ์ํ ์ธ๋ฑ์ค ์ญํ ๋ง ํ๋ ๋น๋จ๋ง ๋ ธ๋๋ฅผ ์ถ๊ฐํ ํธ๋ฆฌ์ ๋๋ค.
Branch ๋ ธ๋๋ Key๋ง ์ ์ฅํ๊ฒ ๋๋ฉฐ, Key๋ค์ด ํญ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ๊ตฌ์ฑ๋ฉ๋๋ค.
ํ๋์ ๋ ธ๋์ ๋ ๋ง์ Key๋ฅผ ๋ด์ ์ ์๋๋ก ํ์ฌ B-ํธ๋ฆฌ์ ๋นํด B+ํธ๋ฆฌ์ ๋์ด๊ฐ ๋์ฑ ๋ฎ์์ง๊ฒ ๋ฉ๋๋ค. (cache hit๋ฅผ ๋์ธ๋ค)
Leaf๋ ธ๋๋ Key์ Data๋ฅผ ์ ์ฅํ๊ณ , Linked List๋ก ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. Full scan์ B-ํธ๋ฆฌ๋ ๋ฆฌํ๋ ธ๋๋ผ๋ฆฌ ์ฐ๊ฒฐ๋์ด ์์ง ์๊ธฐ๋๋ฌธ์ ๋ชจ๋ ๋ ธ๋๋ฅผ ํ์ธํด์ผ ํ์ง๋ง, B+ํธ๋ฆฌ์ ๊ฒฝ์ฐ ๋ฆฌํ๋ ธ๋์ ์ฐ๊ฒฐ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ์ ํ ๊ฒ์์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ธก๋ฉด์์ ์ข์ ํจ์จ์ ๋ณด์ ๋๋ค.
๐ก 21. ํด์ ์ธ๋ฑ์ค ๋ฐฉ์๊ณผ B+ ํธ๋ฆฌ ์ธ๋ฑ์ค ๋ฐฉ์์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
ํด์ ์ธ๋ฑ์ค ๋ฐฉ์์, ์นผ๋ผ ๊ฐ์ผ๋ก ์์ฑ๋ ํด์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌํํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๊ฐ O(1)๋ก ๊ต์ฅํ ๋น ๋ฆ ๋๋ค. ํ์ง๋ง ์ผ๋ฐ์ ๊ธ๋ก B+ํธ๋ฆฌ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌํํ๋ ์ด์ ๋, ํด์ ํ ์ด๋ธ์ '๋๋ฑ ์ฐ์ฐ(=)'์ ํนํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, '๋ถ๋ฑํธ ์ฐ์ฐ'์์๋ ์ฐ์ฐ์ ์ฑ๋ฅ ์ ํ๊ฐ ์ผ์ด๋ฉ๋๋ค.
- ๋๋ฑ ๋น๊ต์์๋ ํด์ ์ธ๋ฑ์ค๊ฐ ํจ๊ณผ์
- ๊ทธ๋ฌ๋ ๋ฒ์ ๊ฒ์(๋ถ๋ฑํธ ์ฐ์ฐ)์์๋ B+ํธ๋ฆฌ ์ธ๋ฑ์ค๊ฐ ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ํจ๊ณผ์
๐ก 22. ์ ๊ทํ๋ฅผ ์ ํ๋์ง, ๊ฐ ์ ๊ทํ ๋จ๊ณ๋ ์ด๋ค ๊ฒ์ ์๋ฏธํ๋์ง, ์ ๊ทํ์ ์ฅ๋จ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
ํ๋์ ๋ฆด๋ ์ด์ ์ ํ๋์ ์๋ฏธ๋ง ์กด์ฌํ๋๋ก ๋ฆด๋ ์ด์ ์ ๋ถํดํ๋ ๊ณผ์ ์ด๋ฉฐ, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ๋ฐ ์ต์ํ์ ๋ฐ์ดํฐ ์ค๋ณต, ์ต๋ํ์ ๋ฐ์ดํฐ ์ ์ฐ์ฑ์ ์ํด ์ ๊ทํ๋ฅผ ์งํํฉ๋๋ค.
์ฆ, ์ด์ํ์์ด ์กด์ฌํ๋ ํ ์ด๋ธ(๋ฆด๋ ์ด์ )์ ๋ถํดํด ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ(๋ฆด๋ ์ด์ )์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ณผ์ ์ ์ ๊ทํ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ด์ํ์ : ํ ์ด๋ธ์ ์ค๊ณํ ๋ ์๋ชป ์ค๊ณํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์ญ์ , ์์ ํ ๋ ์๊ธฐ๋ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์๋ฏธ.
> ์ด์ํ์์ ์ข ๋ฅ
- ์ฝ์ ์ด์ : ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ผ๋ง ์ฝ์ ์ด ๊ฐ๋ฅํ ์ํฉ
- ๊ฐฑ์ ์ด์ : ์ ์ฒด์ ๋ฐ์ดํฐ ์ค ์ผ๋ถ๋ง ๋ณ๊ฒฝํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋ถ์ผ์นํ๋ ์ํฉ
- ์ญ์ ์ด์ : ์ญ์ ๋ก ์ธํด ๊ผญ ํ์ํ ๋ฐ์ดํฐ๊น์ง ์ญ์ ๋๋ ์ํฉ
> ์ ๊ทํ
- 1 ์ ๊ทํ : ํ ์ด๋ธ์ ์ปฌ๋ผ์ด ํ๋์ ๊ฐ์ ๊ฐ๋๋ก ํ ์ด๋ธ์ ๋ถํดํ๋ ๊ฒ(๋๋ฉ์ธ์ด ์์๊ฐ๋ง ํฌํจ)
- 2 ์ ๊ทํ : ๊ธฐ๋ณธํค์ ๋ถ๋ถ์งํฉ์ด ๊ฒฐ์ ์๊ฐ ์๋๋๋ก ๋ถ๋ฆฌ(์์ ํจ์์ ์ข ์)
- 3 ์ ๊ทํ : ์ดํ์ข ์ ์ ๊ฑฐ (a -> b, b -> c ์ผ๋, a->c ๊ฐ ์ฑ๋ฆฝ๋๋ ๊ฒ์ ๋ถ๋ฆฌ, ์ฆ, a-> b๋ b->c ํ ์ด๋ธ๋ก ๋ถ๋ฆฌ)
- BCNF ์ ๊ทํ : ๊ฐ์ ์ ํ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค๊ฐ ๋๋๋ก ํ ์ด๋ธ ๋ถํด(๋ชจ๋ ๊ฒฐ์ ํค๊ฐ ํ๋ณดํค)
> ์ ๊ทํ์ ์ฅ๋จ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ ์ ๋ฐ์ํ๋ ์ด์ํ์์ ํด๊ฒฐํ ์ ์๊ณ , ๊ตฌ์กฐํ์ฅ ์ ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ตฌ์กฐ ๋ณ๊ฒฝํ์ง ์๊ฑฐ๋ ์ผ๋ถ๋ง ๋ณ๊ฒฝํด๋ ๋ฉ๋๋ค.
- ๋ฆด๋ ์ด์ ๋ถํด๋ก ์ธํ JOIN ์ฐ์ฐ์ด ๋ง์์ ธ ์ง์์ ๋ํ ์๋ต์๊ฐ์ด ๋๋ ค์ง๋๋ค. ๋ค๋ง ์ค๋ณต์์ฑ์ ์ ๊ฑฐํ๊ณ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฉ๋์ด ์ต์ํ ๋๋ ํจ๊ณผ๊ฐ ์์ด ์๋๊ฐ ๋นจ๋ผ์ง ์๋, ๋๋ ค์ง ์๋ ์์ต๋๋ค.
๐ก 23. ์ญ์ ๊ทํ(๋ฐ์ ๊ทํ)๋ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
์ ๊ทํ์ ๋จ์ ์ผ๋ก, ๋ฆด๋ ์ด์ ๊ฐ์ JOIN ์ฐ์ฐ์ด ๋์ด๋ ์ง์ ์ฑ๋ฅ์ด ์ ํ๋ ์ฐ๋ ค๊ฐ ์์ต๋๋ค. ์ฝ๊ธฐ ์์ ์ด ๋ง์ด ํ์ํ DB์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ญ์ ๊ทํ๋ฅผ ์งํํฉ๋๋ค.
๐ก 24. Connection Pool์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
Client์ ์์ฒญ์ ๋ฐ๋ผ ๊ฐ Application์ Thread์์ DB์ ์ ๊ทผํ๊ธฐ ์ํด์๋ Connection์ด ํ์ํฉ๋๋ค. ์ปค๋ฅ์ ํ์, ๋ฏธ๋ฆฌ ์ผ์ ์์ Connection์ ์์ฑํด Pool์ ๋ณด๊ดํด ๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์์ฒญ์ด ์ฌ ๋๋ง๋ค Connection์ ์์ฑํ๋ ๋ฐฉ์์, ์ฐ๊ฒฐ๋์ด ๋ง์ ๋ ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋๋ ํ์์ด ๋ฐ์ํฉ๋๋ค.
๋ฏธ๋ฆฌ ๋ง๋ค์ด Pool์ ์ ์ฅํ๋ฉด ์ด๋ฌํ ํ์์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
Connection Pool์ ์ฌ์ฉํ๋ฉด, ์์ฑ ๋ฐ ์๋ฉธ์ ๋ํ ์๊ฐ ์์๊ฐ ์์ด์ง๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด๊ณ , ํ ๋ฒ์ ์ฌ์ฉํ ์ ์๋ ์ปค๋ฅ์ ์๊ฐ ์ ์ด๋์ด Application์ด ์ฝ๊ฒ ์ฃฝ์ง ์์ต๋๋ค.
๐ก 25. RDB์ NoSQL์ ์ฐจ์ด์ ๋ํด์ ์ค๋ช ํ์ค ์ ์๋์?
1) RDB(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- ์ ํด์ง ์คํค๋ง์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ 'ํ ์ด๋ธ'์ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋ณด์ฅ๋์ด์๊ณ , ์ค๋ณต์ ํผํ ์ ์์ต๋๋ค.
- SQL์ ์ฌ์ฉํด RDBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์์ , ์ญ์ ๋ฐ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ์์ง์ ํ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. (์๋ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ)
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์ฆ์ ๊ฒฝ์ฐ / ๋ณ๊ฒฝ๋ ์ฌ์ง๊ฐ ์๊ณ , ๋ช ํํ ์คํค๋ง๊ฐ ์ฌ์ฉ์์ ๋ฐ์ดํฐ์๊ฒ ์ค์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
2) NoSQL
- ์คํค๋ง๊ฐ ์๊ฑฐ๋, ๋์จํ ์คํค๋ง๋ก ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ ์์ด ์์ ๋ก์ด ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค (๋น์ ํ)
- ์ ์ฐํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์กฐ์ ๊ณผ ์๋ก์ด ํ๋ ์์ฑ์ด ์์ ๋กญ์ต๋๋ค.
- ์ค๋ณต์ ๊ณ์ํด์ ์ ๋ฐ์ดํธ ํด์ค์ผ ํ๋ ๋จ์ ์ด ์์ต๋๋ค.
- ์ํ์ ํ์ฅ์ผ๋ก ํธ๋ํฝ ๋ถ์ฐ ๋ฐ ๋์ฉ๋ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ์ฝ๊ธฐ๋ฅผ ์์ฃผํ์ง๋ง ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์์ฃผ ์๋ ๊ฒฝ์ฐ / ๋น์ ํ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ / ๋ง๋ํ ์์ ๋ฐ์ดํฐ์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ์ ์ผ๋ก ํ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
๐ก 26. Redis์ ํน์ง์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
Redis๋ NoSQL๋ก ์ฑ๊ธ์ฐ๋ ๋ ์ธ๋ฉ๋ชจ๋ฆฌ DB์ ๋๋ค. key-value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ ์ฃผ๋ก ์บ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์คํญ์ท์ ํตํด ๋์คํฌ์ ๋ฐฑ์ ํ ์ ์๊ณ , AOF๋ฅผ ํตํด ๋ชจ๋ ์์ ์ log ํ์ผ์ ๊ธฐ๋กํ๊ณ ์๋ฒ๊ฐ ์ฌ์คํ ๋๋ฉด ์์ฐจ์ ์ผ๋ก ์ฐ์ฐํด ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ ์ ์์ต๋๋ค. ๋ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ง์ํฉ๋๋ค.
๐ก 27. DB ํด๋ฌ์คํฐ๋ง์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
DB ํด๋ฌ์คํฐ๋ง์ DB ์คํ ๋ฆฌ์ง๋ ๊ณต์ ํ๊ณ , ๋์ผํ DB ์๋ฒ๋ฅผ ์ฌ๋ฌ ๋ ๋๋ ๋ฐฉ์์ ๋๋ค. ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋๊ธฐํ๋ฅผ ์งํํฉ๋๋ค.
- Active-Active ๋ฐฉ์
- ์ฌ๋ฌ ๋์ DB์๋ฒ๊ฐ ํธ๋ํฝ์ ๋ถ์ฐํด์ ๋ฐ์ต๋๋ค.
- ์ฌ๋ฌ ๋์ ์๋ฒ๊ฐ DB ์คํ ๋ฆฌ์ง๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ณ๋ชฉ์ด ์๊ธธ ์ ์์ต๋๋ค.
- Active-Standby ๋ฐฉ์
- ํ์ชฝ์ Standby ์ํ๋ก ๋์ด Active ์ํ์ ์๋ฒ๊ฐ ์ฃฝ์ผ๋ฉด FailOver๋์ด ์ ํํ๋ ๋ฐฉ์
- FailOver์ด ์ด๋ฃจ์ด์ง๋ ๋์ ์์ค์ด ๋ฐ์ํฉ๋๋ค.
๐ก 28. DB ๋ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
DB ๋ ํ๋ฆฌ์ผ์ด์ ์ DB ์๋ฒ์ DB ์คํ ๋ฆฌ์ง๋ฅผ ๋ค์คํํ๋ ๋ฐฉ์์ผ๋ก DB ํด๋ฌ์คํฐ๋ง๊ณผ๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
- ์กฐํ์์ ์ Slave์์ INSERT, DELETE, UPDATE ์์ ์ Master์์ ์ํํ๋ฉด์ ํธ๋ํฝ์ ๋ถ์ฐํฉ๋๋ค.
- Slave๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธธ ๋ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ป์ง ๋ชปํ ์๋ ์์ต๋๋ค.
- Master ๋ ธ๋๊ฐ ๋ค์ด๋๋ฉด ๋ณต๊ตฌ ๋ฐ ๋์ฒ๊ฐ ๊น๋ค๋กญ์ต๋๋ค.
๐ก 29. ์์ง ํํฐ์ ๋๊ณผ ์ํ ํํฐ์ ๋(์ค๋ฉ)์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์๋น์ค์ ํฌ๊ธฐ๊ฐ ์ ์ ์ปค์ง๊ณ DB์ ์ ์ฅํ๋ ๊ท๋ชจ๊ฐ ๋์ฉ๋ํ ๋๋ฉด์ ์ฉ๋์ ํ๊ณ์ ์ฑ๋ฅ์ ์ ํ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋์์ต๋๋ค.
์ด๋ฌํ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ ์ด๋ธ์ ํํฐ์ ์ด๋ผ๋ ์์ ๋จ์๋ก ๋๋ ๊ด๋ฆฌํ๋ ํํฐ์ ๋ ๊ธฐ๋ฒ์ด ๋์์ต๋๋ค.
ํฐ ํ ์ด๋ธ์ด๋ ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด Partition์ด๋ผ๋ ์์ ๋จ์๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถํ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
1) ์์ง ํํฐ์ ๋
- ํฐ Table์ด๋ ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋จ์๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉ์
- ์๋ฅผ ๋ค์ด, ์ฌ๋์ด๋ผ๋ ํ ์ด๋ธ์ด ๋๋ฌด ์ปค์ง๊ฒ ๋๋ฉด์ ์ฌ๋์ ๋ถ์ ๋ฝ์ธ, ์์์์ธ, ์์ ๋ฝ์ธ ์ด๋ ๊ฒ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
- ์ฅ์
- Insert ์ ๋ถ๋ฆฌ๋ ํํฐ์ ์ผ๋ก ๋ถ์ฐ์์ผ ๊ฒฝํฉ์ ์ค์
- ์ฝ๊ธฐ/์ฐ๊ธฐ ํฅ์
- ํํฐ์ ๋ณ๋ก ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ์ ์ฒด ๊ฒ์ ์ ํ์ํ ๋ถ๋ถ๋ง ํ์ํด์ ์ฑ๋ฅ ์ฆ๊ฐ
- ๋จ์
- ์ธ๋ฑ์ค์ ํ ์ด๋ธ์ ๋ณ๋๋ก ํํฐ์ ๋ ํ ์ ์๋ค. ์ฆ, ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ด ํํฐ์ ๋ ํด์ผํ๋ค.
- ํ ์ด๋ธ ๊ฐ ์กฐ์ธ ๋น์ฉ ์ฆ๊ฐ
2) ์ํ ํํฐ์ ๋ (์ค๋ฉ)
- ๊ฐ์ ํ ์ด๋ธ ์คํค๋ง๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ ๋ฐฉ์
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ์ฐ์ํค๊ธฐ ์ํด ๊ณ ๋ คํด์ผํ ๊ฒ์ด Shard Key์ด๊ณ ์ด๋ฅผ ์ ํ๋ ๋ฐฉ์์ผ๋ก Hash Sharding, Dynamic Sharding, Entity Group ๋ฐฉ์์ด ์๋ค.
- ์ค๋ฉ์ ๋ณต์ก๋๊ฐ ๋งค์ฐ ๋์์ง๋ฏ๋ก ๋ค๋ฅธ ๋ฐฉ์์ ์ฐ์ ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ๋ค.
๐ก 30. SQL Injection์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ๋ณด์์์ ์ทจ์ฝ์ ์ ์ด์ฉํด, ์์์ SQL๋ฌธ์ ์ฃผ์ ํ๊ณ ์คํ๋๊ฒ ํ์ฌ DB๊ฐ ๋น์ ์์ ์ธ ๋์์ ํ๋๋ก ์กฐ์ํ๋ ํ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- Error based SQL Injection, Union based SQL Injection, Boolean based SQL Injection, Time based SQL Injection ๋ฑ ๋ค์ํ ๊ณต๊ฒฉ๊ธฐ๋ฒ์ด ์์ต๋๋ค.
- ๋์ ๋ฐฉ์์ผ๋ก๋ ์ ๋ ฅ ๊ฐ์ ๋ํ ๊ฒ์ฆ, Prepared Statement ๊ตฌ๋ฌธ ์ฌ์ฉ, Error Message ๋ ธ์ถ ๊ธ์ง, ์น ๋ฐฉํ๋ฒฝ ์ฌ์ฉ ๋ฑ์ ๋ฐฉ์์ด ์์ต๋๋ค.
๐ก 31. ORM์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
ORM์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋งคํ์ ์ค์๋ง์ ๋๋ค. (Object-RDBMS Mapping)
OOP์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ผ๋ ๊ฐ๋ ์ ๊ตฌํํ ํด๋์ค์ RDB์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์๋ก ๋งคํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๐ก 32. ์ตํฐ๋ง์ด์ (Optimizer)์ ๋ํด ์๋๋๋ก ์ค๋ช ํด์ฃผ์ธ์.
- ์ตํฐ๋ง์ด์ ๋ SQL์ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ํํ ์ต์ ์ ์ฒ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ฃผ๋ DBMS ๋ด๋ถ์ ํต์ฌ ์์ง์ ๋๋ค.
- ์ปดํจํฐ์ CPU = DBMS์ ์ตํฐ๋ง์ด์ . ๊ฐ๋ฐ์๊ฐ SQL์ ์์ฑํ๋ฉด ์ตํฐ๋ง์ด์ ๊ฐ ์คํ ๊ณํ์ ์ธ์ฐ๊ณ , ์ต์ ์ ํจ์จ์ ๊ฐ๋ ๊ณํ์ ํ๋ณํด ์ฟผ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
- ์ตํฐ๋ง์ด์ ๊ฐ ํญ์ ์ต์ ์ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์, ์ง์ ์ต์ ์ ์คํ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ฃผ๋ ๊ฒ์ 'ํํธ'๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๐โ๏ธ ๋ค๋ฅธ ์ง๋ฌธ ๋๋น ์๋ฃ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โ ์๋ฃ๊ตฌ์กฐ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โก ์๊ณ ๋ฆฌ์ฆ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โข ๋ฐ์ดํฐ๋ฒ ์ด์ค
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฃ ๋คํธ์ํฌ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โค ์ด์์ฒด์
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฅ ์๋ฐ(Java)
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฆ ๋ฐฑ์๋(Java Spring ๊ธฐ๋ฐ)
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โง ๊ฐ๋ฐ๊ณตํต / ์ธ์ฑ๋ฉด์