๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ŒCS/DB15

[DB] SQL Injection ํ•ด์ปค์— ์˜ํ•ด ์กฐ์ž‘๋œ SQL ์ฟผ๋ฆฌ๋ฌธ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋˜์–ด ๋น„์ •์ƒ์  ๋ช…๋ น์„ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ• 1. ๊ณต๊ฒฉ ๋ฐฉ๋ฒ• 1.1. Error based SQL Injection ๋ณดํ†ต ๋กœ๊ทธ์ธ์„ ํ•  ๋•Œ, ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ input ์ฐฝ์— ์ž…๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค. ์œ„์˜ ์‚ฌ์ง„์—์„œ ๋ณด์ด๋Š” ์ฟผ๋ฆฌ๋ฌธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๊ทธ์ธ ์‹œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” SQL ๊ตฌ๋ฌธ์ด๋‹ค. ํ•ด๋‹น ๊ตฌ๋ฌธ์—์„œ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ์—†์Œ์„ ํ™•์ธํ•˜๊ณ , ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜์˜ SQL ๊ตฌ๋ฌธ์„ ์ฃผ์ž…ํ–ˆ๋‹ค. ์ฃผ์ž…๋œ ๋‚ด์šฉ์€ โ€˜ OR 1=1 -- ๋กœ WHERE ์ ˆ์— ์žˆ๋Š” ์‹ฑ๊ธ€์ฟผํ„ฐ๋ฅผ ๋‹ซ์•„์ฃผ๊ธฐ ์œ„ํ•œ ์‹ฑ๊ธ€์ฟผํ„ฐ์™€ OR 1=1 ๋ผ๋Š” ๊ตฌ๋ฌธ์„ ์ด์šฉํ•ด WHERE ์ ˆ์„ ๋ชจ๋‘ ์ฐธ์œผ๋กœ ๋งŒ๋“ค๊ณ , -- ๋ฅผ ๋„ฃ์–ด์คŒ์œผ๋กœ ๋’ค์˜ ๊ตฌ๋ฌธ์„ ๋ชจ๋‘ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ–ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ์ด์ง€๋งŒ, ๊ฒฐ๋ก ์ ์œผ๋กœ Users ํ…Œ์ด๋ธ”.. 2021. 10. 13.
[DB] NoSQL NoSQL์€ ์ดˆ๊ณ ์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ ์„ฑ๋Šฅ์— ํŠนํ™”๋œ ๋ชฉ์ ์„ ์œ„ํ•ด, ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—, ๋น„๊ตฌ์กฐ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ์ €์žฅ ์‹œ์Šคํ…œ์ด๋‹ค. NoSQL NoSQL์ด ๋ฌด์—‡์˜ ์•ฝ์ž์ธ์ง€๋Š” ์‚ฌ๋žŒ์— ๋”ฐ๋ผ No SQL, Not Only SQL, Non-Relational Operational Database SQL๋กœ ์—‡๊ฐˆ๋ฆฌ๋Š” ์˜๊ฒฌ๋“ค์ด ์žˆ์ง€๋งŒ, ํ˜„์žฌ Not Only SQL๋กœ ํ’€์–ด ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค์ˆ˜๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋ง์˜ ์˜๋ฏธ๋ฅผ ํ’€์–ด๋ณด๋ฉด, ๋‹จ์ˆœํžˆ ๊ธฐ์กด ๊ด€๊ณ„ํ˜• DBMS๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ํŠน์„ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋‹ค๋ฅธ ํŠน์„ฑ๋“ค์„ ๋ถ€๊ฐ€์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ  NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํƒ์›”ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋น„๋กฏํ•ด ๊ณ ์„ฑ๋Šฅ์˜ ๋งค์šฐ ๊ธฐ๋Šฅ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” .. 2021. 9. 9.
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์„ฑ๋Šฅ DBMS ํƒ„์ƒ ๋ฐฐ๊ฒฝ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•˜๊ธฐ ์ด์ „์— ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜์˜€๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ๊ฐ์˜ ํŒŒ์ผ ๋‹จ์œ„(๋ ˆ์ฝ”๋“œ)๋กœ ์ €์žฅํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ผ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋…๋ฆฝ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ƒํ˜ธ ์—ฐ๋™์ด ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ๋Š” ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์— ํ‘œํ˜„๋˜๋ฏ€๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ, ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๊ธฐ์กด์˜ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ ์ •์˜๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋‚ดํฌ๋˜์–ด ์žˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ ์ด์™ธ์— ๋ณ„๋„์˜ ์ œ์–ด๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ, ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ €์žฅํ• ๋•Œ, ๋ฐ์ดํ„ฐ ์ข…์†์„ฑ ๋ฌธ์ œ์™€ ์ค‘๋ณต์„ฑ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ ๋“ฑ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.. 2021. 8. 4.
[DB] ํŠธ๋žœ์žญ์…˜ ์ „ํŒŒ ์„ค์ • ๊ฐœ๋… Spring์—์„œ ์‚ฌ์šฉํ•˜๋Š” '@Transactional'์€ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋•Œ ํŠธ๋žœ์žญ์…˜ ๋‚ด๋ถ€์—์„œ ํŠธ๋žœ์žญ์…˜์„ ๋˜ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์ด ์ƒ์„ฑ๋  ์ˆ˜๋„ ์žˆ๊ณ , ์ด๋ฏธ ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋‹ค๋ฉด ๋ถ€๋ชจ ํŠธ๋žœ์žญ์…˜์— ํ•ฉ๋ฅ˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์—์„œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํ˜ธ์ถœ๋  ๋•Œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ์ •ํ•˜๋Š” ๊ฒƒ์„ 'ํŠธ๋žœ์žญ์…˜ ์ „ํŒŒ ์„ค์ •'์ด๋ผ ํ•œ๋‹ค. ์ „ํŒŒ ์„ค์ • ์˜ต์…˜ ํŠธ๋žœ์žญ์…˜์˜ ์ „ํŒŒ ์„ค์ •์€ '@Transactional'์˜ ์˜ต์…˜ 'propagation'์„ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. REQUIRED (๊ธฐ๋ณธ๊ฐ’) ๋ถ€๋ชจ ํŠธ๋žœ์žญ์…˜์ด ์กด์žฌํ•œ๋‹ค๋ฉด ๋ถ€๋ชจ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ํ•ฉ๋ฅ˜ ๋ถ€๋ชจ ํŠธ๋žœ์žญ์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์„ ์ƒ์„ฑ ์ค‘๊ฐ„์— ๋กค๋ฐฑ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๋ชจ๋‘ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด๊ธฐ.. 2021. 5. 2.
[DB] ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Transaction Isolation Level) ๊ฐœ๋… ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€(isolation level)์ด๋ž€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋  ๋•Œ, ํŠธ๋žœ์žญ์…˜๋ผ๋ฆฌ ์–ผ๋งˆ๋‚˜ ์„œ๋กœ ๊ณ ๋ฆฝ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ACID ํŠน์ง•๊ณผ ๊ฐ™์ด ํŠธ๋žœ์žญ์…˜์ด ๋…๋ฆฝ์ ์ธ ์ˆ˜ํ–‰์„ ํ•˜๋„๋ก Locking์„ ํ†ตํ•ด, ํŠธ๋žœ์žญ์…˜์ด DB๋ฅผ ๋‹ค๋ฃจ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ด€์—ฌํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋ฌด์กฐ๊ฑด Locking์œผ๋กœ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ์ˆ˜๋งŽ์€ ํŠธ๋žœ์žญ์…˜๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์€ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด Locking์˜ ๋ฒ”์œ„๋ฅผ ์ค„์ธ๋‹ค๋ฉด, ์ž˜๋ชป๋œ ๊ฐ’์ด ์ฒ˜๋ฆฌ๋  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์ธ Lock.. 2021. 4. 23.
[DB] ํŠธ๋žœ์žญ์…˜(Transaction) ๊ฐœ๋… ํŠธ๋žœ์žญ์…˜(Transaction)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ๋‹จ์œ„ ๋˜๋Š” ํ•œ๊บผ๋ฒˆ์— ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ผ๋ จ์˜ ์—ฐ์‚ฐ์„ ์˜๋ฏธํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ๋ณ‘ํ–‰ ์ œ์–ด ๋ฐ ํšŒ๋ณต ์ž‘์—… ์‹œ ์ฒ˜๋ฆฌ๋˜๋Š” ์ž‘์—…์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์š”๊ตฌ ์‹œ ์‹œ์Šคํ…œ์ด ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ ๋ณ€ํ™˜ ๊ณผ์ •์˜ ์ž‘์—…๋‹จ์œ„์ด๋‹ค. ์ƒํƒœ๋ณ€ํ™” : SQL์งˆ์˜์–ด(SELECT | INSERT | UPDATE | DELETE)๋ฅผ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ ์ž‘์—… ๋‹จ์œ„ : ์ผ๋ จ์˜ ์—ฐ์‚ฐ(SQL ๋ช…๋ น๋ฌธ ์ง‘ํ•ฉ). ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€(ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ)์— ๋”ฐ๋ผ ์ •์˜ํ•จ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์„ค๊ณ„๋ฅผ ์ž˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋งŽ์€ ์ด์ ์„ ๊ฐ€์ ธ๋‹ค.. 2021. 4. 23.
[DB] ์บ์‹œ, Redis ์บ์‹œ๋ž€? ํ•œ๋ฒˆ ์ฝ์€(์ฒ˜๋ฆฌํ•œ) ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์ „์†ก,๊ฐฑ์‹ ,์‚ญ์ œํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ๋ณดํ†ต์€ ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ด€์žฅ์†Œ๋กœ ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ์—์„œ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ค๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ I/O์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๊ฑฐ๋‚˜ ์žฌ๋ถ€ํŒ…๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ๋ผ์ง€๋Š” ์„ฑ๊ฒฉ์˜ ํœ˜๋ฐœ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์˜์†์ ์œผ๋กœ ๋ณด๊ด€ํ•  ์ˆ˜ ์—†๋Š”, ๋ง ๊ทธ๋Œ€๋กœ ์ž„์‹œ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ทธ ์ •๋ณด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋ฌผ๋ก  ์ •๋ณด์˜ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ๋ณ„๋„์˜ ๋””์Šคํฌ๋ฐฑ์—… ๋ฐ TTL๋“ฑ์˜ ์„ค์ •์œผ๋กœ ์˜๊ตฌ๋ณด๊ด€์ด๋‚˜ ์˜ค๋žœ๊ธฐ๊ฐ„ ์œ ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ ์ด๋Ÿฐ ์„ค์ •๋“ค์ด ๊ผญ ํ•„์š”ํ•˜๋‹ค๋ฉด Cache๋ฅผ ์ ์šฉํ•˜๋Š”๊ฒŒ ๋งž๋Š”์ง€ ํ•œ ๋ฒˆ๋„ ํƒ€๋‹น์„ฑ์„ ๊ฒ€ํ† ํ•ด ๋ณด๋Š”๊ฒŒ ์ข‹๊ฒ ๋‹ค. ๋ชฉ์  ์„œ๋ฒ„๊ฐ„ ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋กœ ์ธํ•ด ์›น์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜.. 2021. 4. 18.
[DB] Connection Pool ๊ฐœ๋… DBCP(Database Connection Pool)์€ ๋‹ค์ˆ˜์˜ HTTP ์š”์ฒญ์— ๋Œ€ํ•œ Thread๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. (WAS์™€ DB ์„œ๋ฒ„๊ฐ„ ์ด์Šˆ) Connection Pool์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  WAS์—์„œ DB์„œ๋ฒ„์— ์ ‘๊ทผ์„ ์‹œ์ž‘ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋‹จ๊ณ„ DB ์„œ๋ฒ„ ์ ‘์†์„ ์œ„ํ•ด JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋“œํ•œ๋‹ค. DB ์ ‘์† ์ •๋ณด์™€ DriverManager.getConnection() Method๋ฅผ ํ†ตํ•ด DB Connection ๊ฐ์ฒด๋ฅผ ์–ป๋Š”๋‹ค. Connection ๊ฐ์ฒด๋กœ ๋ถ€ํ„ฐ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ PreparedStatement ๊ฐ์ฒด๋ฅผ ๋ฐ›๋Š”๋‹ค. executeQuery๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋กœ ResultSet ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋œ ๋ฆฌ์†Œ์Šค๋“ค์„ c.. 2021. 4. 18.
[DB] ์ •๊ทœํ™” ์ด์ƒ ํ˜„์ƒ(anomaly) ํ…Œ์ด๋ธ”๋‚ด์˜ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ฑ์— ์˜ํ•ด์„œ ๋ฐœ์ƒ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ํ˜„์ƒ. = ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋“ค ๊ฐ„์— ์กด์žฌํ•˜๋Š” ์—ฌ๋Ÿฌ ์ข…์†๊ด€๊ณ„๋ฅผ ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜์— ํ‘œํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ํ˜„์ƒ ๊ฐฑ์‹  ์ด์ƒ, ์‚ฝ์ž… ์ด์ƒ, ์‚ญ์ œ ์ด์ƒ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐฑ์‹  ์ด์ƒ (Modification Anomaly) : ๋ฐ˜๋ณต๋œ ๋ฐ์ดํ„ฐ ์ค‘์— ์ผ๋ถ€๋ฅผ ๊ฐฑ์‹  ํ•  ์‹œ ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์‚ฝ์ž… ์ด์ƒ (Insertion Anomaly) : ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•˜์ง€ ์•Š๊ณ ์„œ๋Š” ์–ด๋–ค ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์‚ญ์ œ ์ด์ƒ (Deletion Anomaly) : ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ ์„œ๋Š” ์–ด๋–ค ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด์ƒ ํ˜„์ƒ์€ ์ข…์†๊ด€๊ณ„๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆด๋ ˆ์ด์…˜์œผ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ๋ฐฉ์ง€ํ• .. 2021. 4. 11.