๋ฉด์ ‘ ๋Œ€๋น„ ์˜ˆ์ƒ ์งˆ๋ฌธ (Database & ์šด์˜์ฒด์ œ ์ผ๋ถ€)

2024. 1. 11. 17:01ใ†๋ฉด์ ‘ ์ค€๋น„/๋ฉด์ ‘ ์Šคํ„ฐ๋””

24.01.03 ์ผ์ž๋กœ ์ง„ํ–‰๋œ ๋ฉด์ ‘ ์Šคํ„ฐ๋””์—์„œ ๋‚˜์™”๋˜ ๋‚ด์šฉ์„ ์•„์นด์ด๋น™ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. 

์šด์˜์ฒด์ œ


1. ๋ ˆ์ง€์Šคํ„ฐ์™€ CPU ์บ์‹œ๋ฅผ ๋น„๊ตํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ๋‚ด์— ์กด์žฌํ•˜๋Š” ์ผ์ข…์˜ ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ, ์ปดํ“จํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ์ €์žฅ ๊ณต๊ฐ„๋“ค ์ค‘ ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋„๋ฅผ ์ž๋ž‘ํ•˜๋‚˜ ๋ฐ˜๋Œ€๊ธ‰๋ถ€๋กœ ์šฉ๋Ÿ‰์ด ๊ฐ€์žฅ ์ž‘๋‹ค. ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” ํ˜„์žฌ CPU๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜ํ–‰ ์ค‘์ธ ์—ฐ์‚ฐ์— ์ง์ ‘์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์ด ์ €์žฅ๋œ๋‹ค. ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ๊ฐ€๊น๊ณ  ๊ฐ€์žฅ ๋น ๋ฅธ ๊ณณ์— ์ ์žฌ๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค. ๋˜ํ•œ ์šด์˜์ฒด์ œ์— ์ผ๋ฐ˜์ ์œผ๋กœ ํ‘œ๊ธฐ๋˜๋Š” 32๋น„ํŠธ๋‚˜ 64๋น„ํŠธ์˜ ์ˆซ์ž๋Š” ๋ ˆ์ง€์Šคํ„ฐ์˜ ํฌ๊ธฐ์ด๊ณ  ์ด ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ์—ฐ์‚ฐ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.

 

CPU ์บ์‹œ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ CPU ๋‚ด ์กด์žฌํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„์ด์ง€๋งŒ, ๋ ˆ์ง€์Šคํ„ฐ๋ณด๋‹ค๋Š” ๋Š๋ฆฌ๊ณ  ๋Œ€์‹  ํฌ๊ธฐ๊ฐ€ ๋” ํฌ๋‹ค. ๋‹ค๋งŒ ๋ ˆ์ง€์Šคํ„ฐ์— ๋น„๊ตํ–ˆ์„ ๋•Œ ๋” ๋Š๋ฆฐ ๊ฒƒ์ด์ง€ CPU ์บ์‹œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ S-RAM์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— D-RAM์„ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋น„ํ•˜๋ฉด ์„ฑ๋Šฅ์ ์œผ๋กœ ํ›จ์”ฌ ์šฐ์›”ํ•˜๋‹ค. CPU ์บ์‹œ๋Š” ๋‹ค์‹œ L1, L2, L3 ๋“ฑ์œผ๋กœ ๋‚˜๋‰˜๊ณ  ์ˆซ์ž๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ์€ ๊ฐ์†Œํ•˜์ง€๋งŒ ์šฉ๋Ÿ‰์ด ์ปค์ง„๋‹ค. CPU ์บ์‹œ๋Š” ์ผ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค ์ค‘ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ ์žฌํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

2. ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„ ๋‚ด ์ฝ”๋“œ ์˜์—ญ์€ ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ OS ๋ ˆ๋ฒจ์—์„œ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

MMU๊ฐ€ ํ•ด๋‹น ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. MMU๋Š” ์ด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ๋งคํ•‘์„ ์ง€์›ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ์ž ํ• ๋‹น๋œ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋„˜์–ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์นจ๋ฒ”ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

Database


1. ํ‚ค์˜ ์˜๋ฏธ์™€ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ‚ค๋ž€ ํŠœํ”Œ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ ํ˜น์€ ์†์„ฑ๋“ค์˜ ์กฐํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.

์ด ๋•Œ ํ‚ค๊ฐ€ ์œ ์ผ์„ฑ์„ ๋งŒ์กฑํ•˜๋ฉด ์Šˆํผํ‚ค๊ฐ€ ๋˜๊ณ , ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋ฉด ์ด๋Š” ํ›„๋ณดํ‚ค๊ฐ€ ๋œ๋‹ค.

ํ›„๋ณดํ‚ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๋•Œ ๋‹ค๋ฅธ ๋‚˜๋จธ์ง€ ํ›„๋ณดํ‚ค๋“ค์€ ๋Œ€์ฒดํ‚ค๊ฐ€ ๋œ๋‹ค. ๊ธฐ๋ณธํ‚ค๋Š” NULL ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ, ์ค‘๋ณต ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์—†๋‹ค. ์ด๋ฅผ ๊ฐœ์ฒด๋ฌด๊ฒฐ์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํ‚ค์˜ ์ข…๋ฅ˜ ์ค‘์—” ์™ธ๋ž˜ํ‚ค๋„ ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋Š” ํ…Œ์ด๋ธ”(๋ฆด๋ ˆ์ด์…˜) ๊ฐ„ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ํŠน์ • ํ…Œ์ด๋ธ” ๋‚ด์— ์กด์žฌํ•˜๋Š” ์™ธ๋ž˜ํ‚ค๋Š” ํ•ด๋‹น ํ…Œ์ด๋ธ”์ด ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋กœ ์ธํ•ด ํ•ด๋‹น ํ…Œ์ด๋ธ” ๋‚ด ์™ธ๋ž˜ํ‚ค ์นผ๋Ÿผ์€ ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค ์นผ๋Ÿผ์— ์—†๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋ฅผ ์ฐธ์กฐ๋ฌด๊ฒฐ์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.

2. ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

์ธ๋ฑ์Šค๋ž€ ํŠน์ • ํ…Œ์ด๋ธ” ๋‚ด ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉ์ ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 

์ผ๋ฐ˜์ ์œผ๋กœ B-Tree ๊ณ„์—ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ค์ œ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ B*Tree๋ผ๊ณ  ํ•œ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•  ๊ฒฝ์šฐ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์— ์ด์ ์„ ์ฑ™๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ ๊ณผ, DML ์‹คํ–‰ ์‹œ ์ธ๋ฑ์Šค์˜ ์ •๋ ฌ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋น„์šฉ์ด ๋“ ๋‹ค๋Š” ๋‹จ์ ๋„ ์กด์žฌํ•œ๋‹ค.

3. ํŠธ๋žœ์žญ์…˜์˜ ์ •์˜์™€ ACID์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

ํŠธ๋žœ์žญ์…˜์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์˜ ๋‹จ์œ„์ด๋‹ค. ACID๋ž€ ํŠธ๋žœ์žญ์…˜์˜ ์„ฑ์งˆ์„ ๋‚˜ํƒ€๋‚ด๋Š” 4๊ฐ€์ง€ ๋‹จ์–ด์˜ ์•ž๊ธ€์ž๋งŒ์„ ๋”ฐ์„œ ๋งŒ๋“  ๋ง์ด๋‹ค. ์ด๋“ค์€ ๊ฐ๊ฐ ์›์ž์„ฑ(Atomicity), ์ผ๊ด€์„ฑ(Consistency), ๋…๋ฆฝ์„ฑ(Isolation), ์ง€์†์„ฑ(Durability)์„ ์˜๋ฏธํ•œ๋‹ค.

์›์ž์„ฑ์ด๋ž€, ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋Š” All or Nothing์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

์ผ๊ด€์„ฑ์ด๋ž€, ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ „ํ›„๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ์œ ํšจํ•œ ์ƒํƒœ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์„ฑ์งˆ์ด๋‹ค.

๋…๋ฆฝ์„ฑ์ด๋ž€, ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ์™€์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ด์— ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋Š” ์„ฑ์งˆ์„ ์˜๋ฏธํ•œ๋‹ค.

์ง€์†์„ฑ์ด๋ž€, ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด ๋ณ€๊ฒฝ๋œ ๊ฒฐ๊ณผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ์ง€์†ํ•ด์„œ ๊ด€๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์„ฑ์งˆ์ด๋‹ค.

4. ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ๊ฐ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์€ ๋‚ฎ์€ ๊ฒฉ๋ฆฌ์ˆ˜์ค€ ์ˆœ์„œ๋Œ€๋กœ READ UNCOMMITED, READ COMMITED, REPEATABLE READ, SERIALIZABLE์ด ์กด์žฌํ•œ๋‹ค. 

๊ฐ€์žฅ ๋‚ฎ์€ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ธ READ UNCOMMITED๋Š” ๊ฐ ํŠธ๋žœ์žญ์…˜๋“ค์ด ์ž‘์—… ์ค‘์ธ ๋‚ด์šฉ๋“ค์ด ๋ชจ๋‘ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋กœ ์ธํ•ด ์•„์ง ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋‚ด์šฉ์ด ์กฐํšŒ๊ฐ€ ๋˜๋Š” Dirty Read ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ์ด ๋„์ค‘์— ์ปค๋ฐ‹๋˜์–ด ๋ฐ˜๋ณต์ ์ธ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๋Š” Non-Repeatable Read ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ˆ˜ํ–‰ํ•œ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์ž‘์—…์œผ๋กœ ์ธํ•ด ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ˜๋ณต์ ์ธ SELECT ๋ฌธ์—์„œ ์—†๋˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กฐํšŒ๋˜๋Š” ํ˜„์ƒ์ธ Phantom Read ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•œ๋‹ค.

๋‘๋ฒˆ์งธ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ธ READ COMMITED๋Š” ๊ฐ ํŠธ๋žœ์žญ์…˜์ด ํ…Œ์ด๋ธ” ๋‚ด ์ปค๋ฐ‹๋œ ๋‚ด์šฉ๋งŒ์„ ์ฝ์–ด๋‚ด๋Š” ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ด๋‹ค. ์ปค๋ฐ‹๋œ ๋‚ด์šฉ๋งŒ์„ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— Dirty Read ๋ฌธ์ œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ, Non-Repeatable Read์™€ Phantom Read ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•œ๋‹ค.

์„ธ๋ฒˆ์งธ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ธ REPEATABLE READ๋Š” ํ•˜์œ„ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์—์„œ ๋ฐœ์ƒํ•˜๋˜ Non-Repeatable Read ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํ•ด๋‹น ๊ฒฉ๋ฆฌ์ˆ˜์ค€์—์„œ๋Š” MVCC๋ฅผ ์ด์šฉํ•œ ์Šค๋ƒ…์ƒท์„ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ์ด๋ฏธ ์ปค๋ฐ‹์ด ๋˜์—ˆ๋”๋ผ๋„ ์ž์‹ ๋ณด๋‹ค ํŠธ๋žœ์žญ์…˜ ID๊ฐ€ ํฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด, ์ด๋ฅผ ์–ธ๋‘ ๋กœ๊ทธ์— ์œ ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ๋Š” ์ž์‹ ๋ณด๋‹ค ํŠธ๋žœ์žญ์…˜ ID๊ฐ€ ์ž‘์€ ํŠธ๋žœ์žญ์…˜์—์„œ ์ปค๋ฐ‹ํ•œ ๋‚ด์šฉ๋งŒ์„ ์ฝ๊ฒŒํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ๋‹ค๋งŒ ํ•ด๋‹น ๊ฒฉ๋ฆฌ์ˆ˜์ค€์—์„œ๋„ Phantom Read๋Š” ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ธ SERIALIZABLE์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ๋ฐฉ์ง€๋˜๋Š” ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ์œ„ํ•ด ๋™์‹œ์„ฑ์„ ๋งŽ์ด ํฌ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์ด๋‹ค.