1) JDBC (Java Database Connectivity) (1) JDBC๋ Java ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ ๋ฐ ์
๋ฐ์ดํธํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ Java์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์๋ฐ API์ด๋ค. JDBC๋ Java ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ธฐ ์ํด JDBC API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ฃ๋ฅผ ์ฟผ๋ฆฌ(Query)ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. ๋ํ, DBMS์ ์ข
๋ฅ์ ์๊ด์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ ์์
์ ์ฒ๋ฆฌํ ์ ์๋ค. (2) JDBC Architecture Java Application์์ JDBC API๋ฅผ ํธ์ถํ๋ฉด JDBC Driver Manager๊ฐ DB ์ ํ์ ๋ฐ๋ฅธ ๋๋ผ์ด๋ฒ๋ฅผ ์์ฑํ์ฌ JDBC..
1) MySQL ์ํคํ
์ฒ ์ ๊ทธ๋ฆผ์ฒ๋ผ MySQL ์๋ฒ๋ ํฌ๊ฒ MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. (1) MySQL ์์ง MySQL ์์ง์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ๋ SQL ๋ฌธ์ฅ์ ๋ถ์ํ๊ฑฐ๋ ์ต์ ํํ์ฌ ์ฒ๋ฆฌํ๋ ์ญํ ์ ๋ด๋นํ๋ฉฐ MySQL ์์ง์ ๊ตฌ์ฑํ๋ ๊ฐ๊ฐ์ ์์๋ ์๋์ ๊ฐ๋ค. โ Connection Handler ์ปค๋ฅ์
๋ฐ ์ฟผ๋ฆฌ ์์ฒญ์ ์ฒ๋ฆฌ ๋ด๋น โก SQL ์ธํฐํ์ด์ค DML, DDL, Procedure, View ๋ฑ SQL ์ธํฐํ์ด์ค ์ ๊ณต ๋ด๋น โข SQL ํ์ (Parser) SQL ๋ฌธ๋ฒ ์ค๋ฅ ํ์ง ๋ฐ SQL ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ MySQL์ด ์ฒ๋ฆฌํ๊ธฐ ์ข์ ํ ํฐ ๋จ์๋ก ๋๋ ์ ํธ๋ฆฌ ํํ๋ก ํ์ฑ ํ๋ ์์
๋ด๋น โฃ SQL ์ตํฐ๋ง์ด์ (Optimizer) ์ฟผ๋ฆฌ์ ์ต์ ํ๋ ์คํ ๋ด๋น โค ์บ์์ ๋ฒํผ ์ฑ..
1) DB Lock ์ฌํ (1) ๊ฐ์ RDBMS ์ค ํ๋์ธ MySQL์ MariaDB์ ๊ฐ์ด ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก InnoDB๋ฅผ ์ฌ์ฉํ๊ณ ์์ด InnoDB ๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ ๋ฐ ์์ด ํต์ฌ์ ์ธ ํธ๋์ญ์
๋ชจ๋ธ (Transaction Model), ๊ฒฉ๋ฆฌ์ฑ ์์ค (Isolation Level), DB Lock์ ์คํ ๋ฆฌ์ง ์์ง์ธ InnoDB์ ์ข
์๋๊ธฐ ๋๋ฌธ์ MySQL๊ณผ MariaDB๋ InnoDB์ ํธ๋์ญ์
๋ชจ๋ธ, ๊ฒฉ๋ฆฌ์ฑ ์์ค, DB Lock ๋ฉ์ปค๋์ฆ์ ๋ฐ๋ฅด๊ฒ ๋๋ค. ๋ํ, ์ฌ๊ธฐ์ ๊น๊ฒ ๋ค์ด๊ฐ๋ณด์๋ฉด MySQL์์ ์ฌ์ฉํ๋ DB Lock์ ํฌ๊ฒ MySQL ์์ง์์ ์ ๊ณตํ๋ DB Lock์ด ์๊ณ , ์คํ ๋ฆฌ์ง ์์ง์์ ์ ๊ณตํ๋ DB Lock์ด ์๋ค. MySQL ์์ง์์ ์ ๊ณตํ๋ DB Lock๊ณผ In..
1) DB Lock ๊ธฐ์ด (1) Lock์ด๋ Lock์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์์ฑ๊ณผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์ฌ์ฉ์(ํธ๋์ญ์
)๋ค์ด ๋์์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๊ณ ํ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Lock์ ์ฌ์ฉํ์ฌ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์ฌ์ฉ์(ํธ๋์ญ์
)์ ๋ค๋ฅธ ์ฌ์ฉ์(ํธ๋์ญ์
)๋ค ๊ฐ์ ์ ๊ทผ์ ์ ์ดํ์ฌ ์ถฉ๋์ ๋ฐฉ์งํ๋ค. ์ฐธ๊ณ ๋ก DBMS๋ง๋ค Lock์ ๊ตฌํํ๋ ๋ฐฉ์๊ณผ ์ธ๋ถ์ ์ธ ๋ฐฉ๋ฒ์ ๊ฐ๊ฐ ๋ค๋ฅด๋ฏ๋ก DBMS๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ด์ฉํ๊ธฐ ์ํด์ ํด๋น DB์ Document ๋ฌธ์๋ฅผ ์ ๋
ํ๋๋ก ํ์! (2) Lock์ ์ค์ ๋ฒ์ (2-1) ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์์ Lock์ ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ์ค์ผ๋ก Lock ํ๋ ๊ฒ์ด๋ฉฐ, ์ฆ 1๊ฐ์ ์ธ์
๋ง์ด DB์ ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ๊ฐ..
1) URL ์ธ์ฝ๋ฉ์ด๋ URL ์ธ์ฝ๋ฉ์ด๋ URL์ ์๋ฒ๊ฐ ์ดํดํ ์ ์๋ ํ์ค ํ์์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋งํ๋ค. RFC 2616 ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด URL ์ธ์ฝ๋ฉ์ ASCII ๋ฌธ์ ์งํฉ์ผ๋ก ์ธ์ฝ๋ฉ ํ๋ ๊ฒ์ด ํ์ค์ด๊ธฐ ๋๋ฌธ์ ์์คํค ๋ฌธ์ ์ฝ๋์ ํฌํจ๋์ง ์๋ ๋ฌธ์์ ๋ํด์๋ ๋ณํ์ ํด์ฃผ์ด์ผ ํ๋ค. ASCII ์ฝ๋๋ ๋ฏธ๊ตญ์ ๊ธฐ์ค์ผ๋ก ๋ง๋ค์ด์ง ๋ฌธ์ ์ฒด๊ณ์ด๋ฏ๋ก ์ํ๋ฒณ์ด ์๋ ๋ค๋ฅธ ๋๋ผ์ ์ธ์ด๋ก ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ง ์๊ธฐ์ URL์ ํ๊ธ์ด ํฌํจ๋๋ค๋ฉด URL ์ธ์ฝ๋ฉ์ ํด์ฃผ์ด์ผ ํ๋ค. → ์ฆ, URL์์ URL๋ก ์ฌ์ฉํ ์ ์๋ ๋ฌธ์ ํน์ URL๋ก ์ฌ์ฉํ ์ ์์ง๋ง ์๋ฏธ๊ฐ ์๊ณก๋ ์ ์๋ ๋ฌธ์๋ค์ '%XX'์ ํํ๋ก ๋ณํํด์ผ ํ๋ค! 2) URL ์ธ์ฝ๋ฉ ์์ ์ผ์ชฝ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ํ๊ธ์ด ํฌํจ๋ URL๊ณผ ํ๊ธ์ด ํฌํจ๋ URL์ ..
1) ํธ๋์ญ์
(1) ํธ๋์ญ์
์ด๋ DB ์์์ ํธ๋์ญ์
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํํ๋ ์์
์ ๋
ผ๋ฆฌ์ ์ธ ๋จ์๋ฅผ ๋งํ๋ฉฐ, ํ๋์ ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ผ๋ จ์ ์์
๋ค์ ํฌํจํ๋ฉฐ ์ด๋ฌํ ์์
๋ค์ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๊ฑฐ๋ ์คํจํด์ผ ํ๋ค. → All or Nothing ์ ๋ต (2) ํธ๋์ญ์
์ 4๊ฐ์ง ํน์ฑ (ACID) DB์์์ ํธ๋์ญ์
์ ์๋์ 4๊ฐ์ง ํน์ฑ์ ์ง๋๋ค. (2-1) Atomicity (์์์ฑ) ํธ๋์ญ์
์ ๋
ผ๋ฆฌ์ ์ผ๋ก ํ๋์ ์คํ ๋จ์์ฌ์ผ ํ๊ณ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ Statement๋ก ๊ตฌ์ฑ๋์ด ์๋ค ํ๋๋ผ๋ ๋
ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ฌถ์ผ ์ ์์ด์ผ ํ๋ค. ํ๋์ ์คํ ๋จ์๋ผ๋ฉด ๋ ๊ฐ์ ์ํ๋ก ๊ท๊ฒฐ๋๋๋ฐ, ์ฑ๊ณตํ๊ฑฐ๋ ๋๋ ์คํจํ๊ฑฐ๋์ด๋ค. (All or Nothing) ์ฆ, ์ฌ๋ฌ ๊ฐ์ Statement๋ก ์์ฑ๋์..
1) ํธ๋์ญ์
(Transaction) (1) ํธ๋์ญ์
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋
ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์
์ ๋จ์ ๋๋ ํ๊บผ๋ฒ์ ์ํ๋์ด์ผํ ์ผ๋ จ์ ์ฐ์ฐ๋ค์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, MySQL์์ ๋ฐ์ดํฐ ์ํ๋ฅผ ๋ฐ๊พธ๋ INSERT, DELETE, UPDATE ๋ฑ์ SQL ๋ช
๋ น์ด๋ค์ ๊ฐ๊ฐ ํ๋์ ํธ๋์ญ์
์ด๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ ์ฌ๋ฌ ๋ช
๋ น์ด๋ฅผ ํ๋์ ํธ๋์ญ์
์ผ๋ก ๋ฌถ๊ณ ์ ํ๋ค๋ฉด “START TRANSACTION”์ผ๋ก ๋ฌถ์ ์ ์๋ค. (2) ํธ๋์ญ์
์ ํน์ฑ ์์์ฑ (Atomicity) ํธ๋์ญ์
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋์ง, ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์๋ ๊ฒ์ ์์์ฑ์ด๋ผ๊ณ ํ๋ค. ํธ๋์ญ์
๋ด์ ๋ชจ๋ ๋ช
๋ น์ ๋ฐ๋์ ์๋ฒฝํ ์ํ๋์ด์ผ ํ๋ฉฐ, ๋ชจ๋๊ฐ ์๋ฒฝํ ์ํ๋์ง ์๊ณ ์ด๋ ํ๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ..
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ด๋ ํ
์ด๋ธ์ ๋ถ์ ์ ํ ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ
์ด๋ธ์ ์ค๊ณํ ๋, ๊ฐ ์ปฌ๋ผ์ ๋ํด์ ์ ์ํ ์ฌ๋ฌ ๊ฐ์ง ๊ท์น์ ๋งํ๋ค.๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ (๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์๋ ๋ฐ์ดํฐ์ ์ ํ์ฑ ์ ์ง) + ์ ์ฝ ์กฐ๊ฑด (๋ฐ๋์งํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์กฐ๊ฑด) ๐ ์ฆ, ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๊ฐ ์ฝ์
, ์ญ์ , ์์ ๋ฑ์ ์ฐ์ฐ์ ํตํ์ฌ ๋ณํ๋๋ผ๋ ์ง์์ ์ผ๋ก ๋ง์กฑํด์ผ ํ๋ค! ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์๋ ํฌ๊ฒ “๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด”, “๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด”, “์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด”์ด ์์ต๋๋ค. ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ด๋ ๊ฐ ์์ฑ์ ๊ฐ์ ๋ฐ๋์ ๋๋ฉ์ธ์ ์ง์ ๋ ๊ฐ๋ง์ ๊ฐ์ ธ์ผ ํ๋ค๋ ์กฐ๊ฑด์
๋๋ค.๋ ๊ฐ์ ํ์ฉ ์ฌ๋ถ - NOT NULL๐ ..