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

๐Ÿ’กCS/Database4

[Database] ์ธ๋ฑ์Šค (Index) ์ธ๋ฑ์Šค๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ (ํŠน์ • ์ปฌ๋Ÿผ์„ ๋ณต์‚ฌํ•ด์„œ ์ •๋ ฌํ•ด ๋‘”๋‹ค!) ex) ์šฐ๋ฆฌ๊ฐ€ ์ฑ…์—์„œ ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ์ฐพ๋Š”๋‹ค๊ณ  ํ•˜๋ฉด, ์ฑ…์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ์€ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฑ…์˜ ์ €์ž๋“ค์€ ๋ณดํ†ต ์ฑ…์˜ ๋งจ ๋’ค์— ์ƒ‰์ธ์„ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ index๋Š” ์ฑ…์˜ ์ƒ‰์ธ๊ณผ ๊ฐ™๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. ์ธ๋ฑ์Šค์˜ ๊ด€๋ฆฌ DBMS๋Š” index๋ฅผ ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด์•ผ ์›ํ•˜๋Š” ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ์ปฌ๋Ÿผ์— INSERT, UPDATE, DELETE๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค๋ฉด, ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ.. 2023. 6. 16.
[Database] ํŠธ๋žœ์ ์…˜ (Transaction) ํŠธ๋žœ์ ์…˜์ด๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ๋‹จ์œ„ ๋˜๋Š” ํ•œ๊บผ๋ฒˆ์— ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•  ์ผ๋ จ์˜ ์—ฐ์‚ฐ๋“ค ํŠธ๋žœ์ ์…˜์˜ ์„ฑ์งˆ (ACID) Atomicity (์›์ž์„ฑ) - All or Nothing - ํŠธ๋žœ์žญ์…˜์€ "์ „๋ถ€ ์„ฑ๊ณต"ํ•˜๊ฑฐ๋‚˜ "์ „๋ถ€ ์‹คํŒจ"ํ•˜๋Š” ์›์ž์ ์ธ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. - ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์€ ๋ชจ๋‘ ์„ฑ๊ณตํ•ด์•ผ๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ , ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ „ ์ƒํƒœ๋กœ ๋กค๋ฐฑ(ํŠธ๋žœ์ ์…˜ ์ „๋ถ€ ์ทจ์†Œ)๋œ๋‹ค. Consistency (์ผ๊ด€์„ฑ) - ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ „๊ณผ ์ˆ˜ํ–‰ ํ›„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋™์ผํ•œ ๊ทœ์น™๊ณผ ์ œ์•ฝ์กฐ๊ฑด์„ ๋”ฐ๋ฅด๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ฐ„์— ์ผ์น˜์„ฑ์ด ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ex) ์€ํ–‰ ์†ก๊ธˆ ๊ธฐ๋Šฅ์—์„œ ํŠธ๋žœ์ ์…˜ ์ˆ˜ํ–‰ ์ด์ „์˜ ์†ก๊ธˆ์ž์™€ ์ˆ˜๊ธˆ์ž์˜ ์ž”์•ฑ ํ•ฉ์ด.. 2023. 6. 16.
[Database] ์ •๊ทœํ™”(Normalization) ์ •๊ทœํ™”๋ž€? Attribute ๊ฐ„์˜ ์ข…์†์„ฑ์œผ๋กœ ์ธํ•œ ์ด์ƒํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์„ ๋ถ„ํ•ดํ•˜์—ฌ ์žฌ๋””์ž์ธํ•จ์œผ๋กœ์จ ์ด์ƒํ˜„์ƒ์„ ์—†์• ๋Š” ๊ณผ์ • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ๋ฐฉ์ง€, ๋ฌด๊ฒฐ์„ฑ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ •๊ทœํ™”๊ฐ€ ์ƒ๊ฒจ๋‚œ ๋ฐฐ๊ฒฝ ํ•œ ๋ฆด๋ ˆ์ด์…˜(Relation)์— ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ์˜ ์†์„ฑ์„ ํ˜ผํ•ฉํ•˜๋ฉด ์ •๋ณด๊ฐ€ ์ค‘๋ณต ์ €์žฅ๋˜๋ฉฐ ์ €์žฅ ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค. ๋˜ ์ค‘๋ณต๋œ ์ •๋ณด๋กœ ์ธํ•ด '์ด์ƒ ํ˜„์ƒ'์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ทœํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด๋‹ค. ์ •๊ทœํ™”์˜ 3๊ฐ€์ง€ ์›์น™ - ์ •๋ณด์˜ ๋ฌด์†์‹ค : ๋ถ„ํ•ด๋œ ๋ฆด๋ ˆ์ด์…˜์ด ํ‘œํ˜„ํ•˜๋Š” ์ •๋ณด๋Š” ๋ถ„ํ•ด๋˜๊ธฐ ์ „์˜ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค. - ์ตœ์†Œ ๋ฐ์ดํ„ฐ ์ค‘๋ณต : ์ด์ƒ ํ˜„์ƒ์„ ์ œ๊ฑฐ, ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ์ตœ์†Œํ™” - ๋ถ„๋ฆฌ์˜ ์›์น™ : ํ•˜๋‚˜์˜ ๋…๋ฆฝ๋œ ๊ด€๊ณ„์„ฑ์€ ํ•˜๋‚˜์˜ ๋…๋ฆฝ๋œ ๋ฆด๋ ˆ์ด์…˜์œผ๋กœ ๋ถ„๋ฆฌํ•ด.. 2023. 6. 16.
์ปค๋„ฅ์…˜ ํ’€(Connection Pool)์ด๋ž€? DBCP (Database Connection Pool)์ด๋ž€? ๋ฌธ์ œ์ƒํ™ฉ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ Connection์ด ์ƒ์„ฑ๋œ๋‹ค๋ฉด ์ˆ˜๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ๋ฏธ๋ฆฌ ์ผ์ • ๊ฐœ์ˆ˜์˜ Connection์„ ๋งŒ๋“ค์–ด Pool์— ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด Connection์„ ์ œ๊ณตํ•˜๊ณ  ์‚ฌ์šฉ์ž์™€์˜ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋œ๋‹ค๋ฉด Pool์— ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ Connection Pool - ์—ฌ๋Ÿฌ DB Connection์„ ํ•˜๋‚˜์˜ Pool์— ๋ชจ์•„ ๊ด€๋ฆฌ - DB Connection ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•œ ํ›„ Pool์— ๋ณด๊ด€ํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉ - ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” Connection์ด ์—†๋‹ค๋ฉด Connection ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋  ๋•Œ๊นŒ์ง€ ํด๋ผ.. 2023. 4. 5.