Skip to content

Commit

Permalink
feat: [DB] Index ์ •๋ฆฌ (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
KkomSang authored Jan 20, 2025
1 parent 977af7b commit fb71f94
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions DB/Index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## Index
### ์ธ๋ฑ์Šค(index, ์ƒ‰์ธ)

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ธ๋ฑ์Šค๋Š” ์ถ”๊ฐ€์ ์ธ ์“ฐ๊ธฐ ์ž‘์—…๊ณผ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์‹ ์†ํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
- ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” full scan์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํฌํ•จํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋•Œ ์ƒ‰์ธ ํŒŒ์ผ์€ ์› ํŒŒ์ผ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ์ž‘์•„์•ผํ•œ๋‹ค.
- ์ธ๋ฑ์Šค๋Š” ์ƒ์„ฑ ์‹œ ์ •๋ ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ๋œ ์ฃผ์†Œ์ฒด๊ณ„๋‹ค.
- ์ƒ‰์ธ์—๋Š” ์ •๋ ฌ ์ƒ‰์ธ๊ณผ ํ•ด์‰ฌ ์ƒ‰์ธ์ด ์žˆ๋‹ค.
- ์ •๋ ฌ ์ƒ‰์ธ: ์ƒ‰์ธ ๋ ˆ์ฝ”๋“œ๊ฐ€ ํƒ์ƒ‰ํ‚ค ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
- ํ•ด์‰ฌ ์ƒ‰์ธ: ํƒ์ƒ‰ํ‚ค๋ฅผ ์ •๋ ฌํ•˜์ง€ ์•Š๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
- ์ •๋ ฌ ์ƒ‰์ธ์€ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๊ธฐ์— ๋ฒ”์œ„ ์งˆ์˜ ์ฒ˜๋ฆฌ์— ํšจ์œจ์ ์ด๋‚˜, ๋ฐ˜๋Œ€๋กœ ํ•ด์‰ฌ ์ƒ‰์ธ์€ ๋ฒ”์œ„ ์งˆ์˜๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ง€์›ํ•˜์ง€ ๋ชปํ•จ
- ๋ฐ์ดํ„ฐ:์ฑ…์˜ ๋‚ด์šฉ, ์ธ๋ฑ์Šค:์ฑ…์˜ ๋ชฉ์ฐจ, ๋ฐ์ดํ„ฐ ์ฃผ์†Œ:์ฑ…์˜ ํŽ˜์ด์ง€

### ์ธ๋ฑ์Šค ๊ด€๋ฆฌ

- DBMS๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ •๋ ฌ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด์•ผ ๋น ๋ฅธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅ
- INSERT: ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์ถ”๊ฐ€
- DELETE: ์‚ญ์ œํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œ ๋Œ€์‹  **์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ ์ฒ˜๋ฆฌ**
- UPDATE: ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ **์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ ์ฒ˜๋ฆฌ** & **๊ฐฑ์‹ ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์ถ”๊ฐ€**

### ์ธ๋ฑ์Šค์˜ ์žฅ์ 

- ํ…Œ์ด๋ธ” ์กฐํšŒ ์†๋„์™€ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
- ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ์ „๋ฐ˜์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Œ
- ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ปฌ๋Ÿผ์˜ ์œ ์ผ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ
- JOIN, ORDER BY, GROUP BY, WHERE ์ ˆ ๋“ฑ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

### ์ธ๋ฑ์Šค์˜ ๋‹จ์ 

- ์ถ”๊ฐ€์ ์ธ ์ €์žฅ๊ณต๊ฐ„์ด ํ•„์š”
- ์ธ๋ฑ์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ์ž‘์—… ํ•„์š”
- ์ธ๋ฑ์Šค๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Œ(์—ญํšจ๊ณผ)
- ex) INSERT, DELETE, UPDATE๊ฐ€ ๋นˆ๋ฒˆํ•œ ์†์„ฑ์— ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ธ๋ฑ์Šค์˜ ํฌ๊ธฐ๊ฐ€ ๋น„๋Œ€ํ•ด์ ธ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ ์ €ํ•˜, ์™œ๋ƒํ•˜๋ฉด ๊ธฐ์กด ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๊ณ (์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ ์ฒ˜๋ฆฌ) ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ

๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋Š” INSERT, DELETE, UPDATE๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

### ์ธ๋ฑ์Šค ์ž๋ฃŒ๊ตฌ์กฐ

- ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)
- ์ปฌ๋Ÿผ์˜ ๊ฐ’๊ณผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ (key, value)์˜ ํ•œ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
- ํ‚ค๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ ํ›„, ํ•ด๋‹น ํ•ด์‹œ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ฐพ์•„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹
- O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅ
- ๋‹ค๋งŒ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ์— ๋”ฐ๋ผ ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ, ๋˜ํ•œ ๋“ฑํ˜ธ(=) ์—ฐ์‚ฐ์—๋งŒ ํŠนํ™”๋˜์–ด ์žˆ์–ด ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ(<,>)์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ ํ•ฉ x
- B-Tree
- O(logN)์˜ ์‹œ๊ฐ„๋ณต์žก๋„
- ๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ(๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ๋ฆฌํ”„๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ผ์ •ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ), ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
- ๊ฐ ๋…ธ๋“œ ๋‚ด ๋ฐ์ดํ„ฐ๋“ค์€ ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ
- ํ•œ ๋…ธ๋“œ์— ์—ฌ๋Ÿฌ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ , ํ‚ค์— ๋Œ€์‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋„ ๊ฐ€์ง(๋…ธ๋“œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ๊ฐ€์ง)
- B+Tree
- O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„
- B-Tree์˜ ๋ณ€ํ˜• ๊ตฌ์กฐ, Root Node/ Internal Node/Leaf Node๋กœ ๊ตฌ์„ฑ๋œ ๊ณ„์ธต ๊ตฌ์กฐ
- ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ๋งŒ ์ €์žฅ! ๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ธ๋ฑ์Šค๋งŒ ์ €์žฅ
- ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ‚ค๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ ์œ ์ง€โ‡’ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด๋‚˜ ์ˆœ์ฐจ ๊ฒ€์ƒ‰์— ํšจ์œจ์ 
- B-Tree vs B+Tree

| B-Tree | B+Tree |
| --- | --- |
| ๋ชจ๋“  ๋…ธ๋“œ์— ํ‚ค์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•จ๊ป˜ ์ €์žฅ | internal ๋…ธ๋“œ์— ํ‚ค๋งŒ ์ €์žฅ, ๋ฆฌํ”„ ๋…ธ๋“œ์— ํ‚ค์™€ ๋ฐ์ดํ„ฐ ์ €์žฅ |
| leaf ๋…ธ๋“œ๋ผ๋ฆฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์•„ internal ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ leaf ๋…ธ๋“œ๋กœ ์ด๋™ ๊ฐ€๋Šฅ | leaf ๋…ธ๋“œ๋ผ๋ฆฌ ์„œ๋กœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด internal ๋…ธ๋“œ๋ฅผ ํ†ตํ•˜์ง€ ์•Š๊ณ  ํ˜•์ œ ๋…ธ๋“œ๋กœ ์ด๋™ ๊ฐ€๋Šฅ |
| ๋ฒ”์œ„ ์ฟผ๋ฆฌ ์ˆ˜ํ–‰ ์‹œ ๋ฃจํŠธ๋ถ€ํ„ฐ ๋ฆฌํ”„๊นŒ์ง€ ํŠธ๋ฆฌ ๋‚ด๋ถ€๋ฅผ ์ด๋™ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์กฐํšŒํ•ด์•ผ ํ•จ | ๋ฐ์ดํ„ฐ๋Š” ๋ฆฌํ”„์—๋งŒ ์กด์žฌํ•˜๋ฏ€๋กœ ๋ฆฌํ”„ ๋…ธ๋“œ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ฐ€๋Šฅ |
| ์ˆœ์ฐจ ํƒ์ƒ‰์ด๋‚˜ ์ •๋ ฌ ์‹œ ์ถ”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•„์š” | ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ์ˆœ์ฐจ ํƒ์ƒ‰ ๊ฐ€๋Šฅ, ํ‚ค๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ |

0 comments on commit fb71f94

Please sign in to comment.