๐Ÿ“š CS [ComputerScience]/๐Ÿ“š CS ๋ฉด์ ‘

๐Ÿ“š [CS๋ฉด์ ‘] ์›น ๋ฉด์ ‘ ์งˆ๋ฌธ [6] [Data Base]

Dbswnstjd 2024. 2. 4. 18:06

1.  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ํŠน์ง• ?

1. ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ์„ฑ (Real-Time Accessibility) - ๋น„์ •ํ˜•์ ์ธ ์งˆ์˜์— ๋Œ€ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์— ์˜ํ•œ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ

2. ์ง€์†์ ์ธ ๋ณ€ํ™” (Continuous Evolution) - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋Š” ๋™์ . ์ฆ‰, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…(Insert), ์‚ญ์ œ(Delete), ๊ฐฑ์‹ (Update)์œผ๋กœ ํ•ญ์ƒ ์ตœ์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•จ

3. ๋™์‹œ ๊ณต์šฉ (Concurrent Sharing) - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ์‘์šฉ์ž๋“ค์„ ์œ„ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๊ฐ™์€ ๋‚ด์šฉ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

4. ๋‚ด์šฉ์— ์˜ํ•œ ์ฐธ์กฐ (Content Reference) - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ๋‚˜ ์œ„์น˜์— ์˜ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์œผ๋กœ ์ฐพ์Œ

 

2.  DDL, DML, DCL ์ด๋ž€ ?

- DDL (Data Definition Language) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ์–ธ์–ด ( alter, create, drop) 

- DML (Data Manipulation Langauge) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ์ž๋ฃŒ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ๊ฐฑ์‹ , ์‚ญ์ œ๋ฅผ ์œ„ํ•œ ์–ธ์–ด ( select, insert, update, delete)

- DCL (Data Control Language) : ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€, ๋ณ‘์ƒ ์ˆ˜ํ–‰ ์ œ์–ด, ๋ณดํ˜ธ์™€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์–ธ์–ด ( commit, rollback, grant, revoke)

 

3.  SELECT ์ฟผ๋ฆฌ์˜ ์ˆ˜ํ–‰ ์ˆœ์„œ ?

FROM, ON, JOIN -> WHERE, GROUP BY, HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT

1. FROM - ๊ฐ ํ…Œ์ด๋ธ”์„ ํ™•์ธ

2. ON - JOIN ์กฐ๊ฑด์„ ํ™•์ธ

3. JOIN - JOIN์ด ์‹คํ–‰๋˜์–ด ๋ฐ์ดํ„ฐ๊ฐ€ SET์œผ๋กœ ๋ชจ์•„์ง€๊ฒŒ ๋œ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋„ ํ•จ๊ป˜ ํฌํ•จ๋˜์–ด ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค.

4. WHERE - ๋ฐ์ดํ„ฐ์…‹์„ ํ˜•์„ฑํ•˜๊ฒŒ ๋˜๋ฉด WHERE์˜ ์กฐ๊ฑด์ด ๊ฐœ๋ณ„ ํ–‰์— ์ ์šฉ๋œ๋‹ค. WHERE์ ˆ์˜ ์ œ์•ฝ ์กฐ๊ฑด์€ FROM์ ˆ๋กœ ๊ฐ€์ ธ์˜จ ํ…Œ์ด๋ธ”์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

5. GROUP BY - WHERE์˜ ์กฐ๊ฑด ์ ์šฉ ํ›„ ๋‚˜๋จธ์ง€ ํ–‰์€ GROUP BY์ ˆ์— ์ง€์ •๋œ ์—ด์˜ ๊ณตํ†ต ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”๋œ๋‹ค. ์ฟผ๋ฆฌ์— ์ง‘๊ณ„ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

6. HAVING - GROUP BY์ ˆ์ด ์ฟผ๋ฆฌ์— ์žˆ์„ ๊ฒฝ์šฐ HAVING ์ ˆ์˜ ์ œ์•ฝ์กฐ๊ฑด์ด ๊ทธ๋ฃนํ™”๋œ ํ–‰์— ์ ์šฉ๋œ๋‹ค.

7. SELECT - SELECT์— ํ‘œํ˜„๋œ ์‹์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์ ์šฉ๋œ๋‹ค.

8. DISTINCT - ํ‘œํ˜„๋œ ํ–‰์—์„œ ์ค‘๋ณต๋œ ํ–‰์˜ ์‚ญ์ œ 

9. ORDER BY - ์ง€์ •๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ง€์ •

10. LIMIT - LIMIT์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ํ–‰๋“ค์€ ์ œ์™ธ๋˜์–ด ์ถœ๋ ฅ

 

4.  Index ๋ž€ ,  ์žฅ๋‹จ์ ์€ ?

- Index๋ž€ ํ…Œ์ด๋ธ”์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ FTS(Full Table Scan)๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์ธ๋ฑ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ์ž๋ฃŒ์˜ ํ…Œ์ด๋ธ”์„ ์—‘์„ธ์Šค ํ•˜๋Š” ๋ฐฉ๋ฒ• [ DB๋ฅผ ์ฑ…์— ๋น„์œ ํ•˜์ž๋ฉด ๋ฐ์ดํ„ฐ๋Š” ์ฑ…์˜ ๋‚ด์šฉ์ด๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ๋Š” index ๋ชฉ๋ก์— ์žˆ๋Š” ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ์ผ ๊ฒƒ ]

์ธ๋ฑ์Šค๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ๋น ๋ฅด์ง€๋งŒ, ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ, ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค. 

- ์ฆ‰, ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜๊ณ  ๊ทธ๋Œ€์‹  ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋Šฅ

 

DBMS๋Š” Index๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š”์ง€ (Index ์ž๋ฃŒ๊ตฌ์กฐ) ?

- B+Tree ์ธ๋ฑ์Šค ์ž๋ฃŒ๊ตฌ์กฐ 

์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ B-Tree๋ฅผ ๊ฐœ์„ ์‹œํ‚จ ์ž๋ฃŒ๊ตฌ์กฐ, BTree ๋ฆฌํ”„๋…ธ๋“œ๋“ค์„ LinkedList๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ˆœ์ฐจ ๊ฒ€์ƒ‰์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”๋ณด๋‹ค ๋‚˜์œ O(log2N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

 

- ํ•ด์‹œ ํ…Œ์ด๋ธ”

์นผ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋œ ํ•ด์‹œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„, ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ด๋ผ ๊ฒ€์ƒ‰์ด ๋งค์šฐ ๋น ๋ฆ„, ๋ถ€๋“ฑํ˜ธ์™€ ๊ฐ™์€ ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ์ˆœ์ฐจ ๊ฒ€์ƒ‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ