Skip to content

Latest commit

ย 

History

History
94 lines (54 loc) ยท 3.46 KB

File metadata and controls

94 lines (54 loc) ยท 3.46 KB

B Tree & B+ Tree


์ด์ง„ ํŠธ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ถ€๋ชจ๊ฐ€ ๋‘ ๊ฐœ์˜ ์ž์‹๋ฐ–์— ๊ฐ€์ง€์งˆ ๋ชปํ•˜๊ณ , ๊ท ํ˜•์ด ๋งž์ง€ ์•Š์œผ๋ฉด ๊ฒ€์ƒ‰ ํšจ์œจ์ด ์„ ํ˜•๊ฒ€์ƒ‰ ๊ธ‰์œผ๋กœ ๋–จ์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๊ฐ„๊ฒฐํ•จ๊ณผ ๊ท ํ˜•๋งŒ ๋งž๋‹ค๋ฉด ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ๋ชจ๋‘ O(logN)์˜ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ์žฅ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ๊ฐœ์„ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋‹ค.


B Tree


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ผ์ข…์ด๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด์„œ, ๋” ๋งŽ์€ ์ˆ˜์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ์ผ๋ฐ˜ํ™” ์‹œํ‚จ ๊ฒƒ์ด B-Tree


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

๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ, ๊ฒ€์ƒ‰ ๊ตฌ์กฐ์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์€ ์ƒ๋‹นํžˆ ํฐ ์žฅ์ ์ด๋‹ค.

๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋ธ”๋Ÿญ ๋‹จ์œ„๋กœ ์ž…์ถœ๋ ฅํ•˜๋Š” ํ•˜๋“œ๋””์Šคํฌ or SSD์— ์ €์žฅํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ!

ex) ํ•œ ๋ธ”๋Ÿญ์ด 1024 ๋ฐ”์ดํŠธ๋ฉด, 2๋ฐ”์ดํŠธ๋ฅผ ์ฝ์œผ๋‚˜ 1024๋ฐ”์ดํŠธ๋ฅผ ์ฝ์œผ๋‚˜ ๋˜‘๊ฐ™์€ ์ž…์ถœ๋ ฅ ๋น„์šฉ ๋ฐœ์ƒ. ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ 1024๋ฐ”์ดํŠธ๋กœ ๊ฝ‰ ์ฑ„์›Œ์„œ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ž…์ถœ๋ ฅ์— ์žˆ์–ด์„œ ํšจ์œจ์ ์ธ ๊ตฌ์„ฑ์„ ๊ฐ–์ถœ ์ˆ˜ ์žˆ๋‹ค.

โ†’ B-Tree๋Š” ์ด๋Ÿฌํ•œ ์žฅ์ ์„ ํ† ๋Œ€๋กœ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ์ธ๋ฑ์Šค ์ €์žฅ ๋ฐฉ๋ฒ•์œผ๋กœ ์• ์šฉํ•˜๊ณ  ์žˆ์Œ

๊ทœ์น™
  • ๋…ธ๋“œ์˜ ์ž๋ฃŒ์ˆ˜๊ฐ€ N์ด๋ฉด, ์ž์‹ ์ˆ˜๋Š” N+1์ด์–ด์•ผ ํ•จ
  • ๊ฐ ๋…ธ๋“œ์˜ ์ž๋ฃŒ๋Š” ์ •๋ ฌ๋œ ์ƒํƒœ์—ฌ์•ผํ•จ
  • ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ์ ์–ด๋„ 2๊ฐœ ์ด์ƒ์˜ ์ž์‹์„ ๊ฐ€์ ธ์•ผํ•จ
  • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ ์–ด๋„ M/2๊ฐœ์˜ ์ž๋ฃŒ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•จ
  • ์™ธ๋ถ€ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋Š” ๋ชจ๋‘ ๊ฐ™์Œ.
  • ์ž…๋ ฅ ์ž๋ฃŒ๋Š” ์ค‘๋ณต ๋  ์ˆ˜ ์—†์Œ


B+ Tree


๋ฐ์ดํ„ฐ์˜ ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•œ ์ธ๋ฑ์Šค ์—ญํ• ๋งŒ ํ•˜๋Š” ๋น„๋‹จ๋ง ๋…ธ๋“œ(not Leaf)๊ฐ€ ์ถ”๊ฐ€๋กœ ์žˆ์Œ

(๊ธฐ์กด์˜ B-Tree์™€ ๋ฐ์ดํ„ฐ์˜ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„๋œ ์ƒ‰์ธ๊ตฌ์กฐ)


B-Tree์˜ ๋ณ€ํ˜• ๊ตฌ์กฐ๋กœ, index ๋ถ€๋ถ„๊ณผ leaf ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์ˆœ์ฐจ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ธ๋ฑ์Šค ๋ถ€๋ถ„์˜ key ๊ฐ’์€ leaf์— ์žˆ๋Š” key ๊ฐ’์„ ์ง์ ‘ ์ฐพ์•„๊ฐ€๋Š”๋ฐ ์‚ฌ์šฉํ•จ.


์žฅ์ 

๋ธ”๋Ÿญ ์‚ฌ์ด์ฆˆ๋ฅผ ๋” ๋งŽ์ด ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ (key ๊ฐ’์— ๋Œ€ํ•œ ํ•˜๋“œ๋””์Šคํฌ ์•ก์„ธ์Šค ์ฃผ์†Œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ)

leaf ๋…ธ๋“œ๋ผ๋ฆฌ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์„œ ๋ฒ”์œ„ ํƒ์ƒ‰์— ๋งค์šฐ ์œ ๋ฆฌํ•จ

๋‹จ์ 

B-tree์˜ ๊ฒฝ์šฐ ์ตœ์ƒ ์ผ€์ด์Šค์—์„œ๋Š” ๋ฃจํŠธ์—์„œ ๋๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ, B+tree๋Š” ๋ฌด์กฐ๊ฑด leaf ๋…ธ๋“œ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€๋ด์•ผ ํ•จ




B-Tree & B+ Tree

B-tree๋Š” ๊ฐ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ

B+tree๋Š” index ๋…ธ๋“œ์™€ leaf ๋…ธ๋“œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ €์žฅ๋จ

(๋˜ํ•œ, leaf ๋…ธ๋“œ๋Š” ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์„œ ์ž„์˜์ ‘๊ทผ์ด๋‚˜ ์ˆœ์ฐจ์ ‘๊ทผ ๋ชจ๋‘ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•จ)


B-tree๋Š” ๊ฐ ๋…ธ๋“œ์—์„œ key์™€ data ๋ชจ๋‘ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ณ , data๋Š” disk block์œผ๋กœ ํฌ์ธํ„ฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ

B+tree๋Š” ๊ฐ ๋…ธ๋“œ์—์„œ key๋งŒ ๋“ค์–ด๊ฐ. ๋”ฐ๋ผ์„œ data๋Š” ๋ชจ๋‘ leaf ๋…ธ๋“œ์—๋งŒ ์กด์žฌ

B+tree๋Š” add์™€ delete๊ฐ€ ๋ชจ๋‘ leaf ๋…ธ๋“œ์—์„œ๋งŒ ์ด๋ฃจ์–ด์ง


์ฐธ๊ณ ์ž๋ฃŒ : ๋งํฌ