๐Ÿ‘จ‍๐Ÿ’ป Back End

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๐Ÿ‘‰ ..
Dev_sHu
'๐Ÿ‘จ‍๐Ÿ’ป Back End' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)