[CS] B Tree & B+ Tree

giggleยท2023๋…„ 8์›” 27์ผ
0

๐Ÿ“Œ B Tree๋ž€?

์ขŒ์šฐ ๊ท ํ˜•์„ ๋งž์ถ”์–ด ํŠธ๋ฆฌ์˜ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐœ์„ ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ผ์ข…์œผ๋กœ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด์„œ, ๋” ๋งŽ์€ ์ˆ˜์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ์ผ๋ฐ˜ํ™” ์‹œํ‚จ ๊ฒƒ์ด B-Tree์ž…๋‹ˆ๋‹ค.

B Tree ๊ทœ์น™

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

B Tree ์‚ฝ์ž…

  • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ key๋ฅผ ์‚ฝ์ž…ํ•  ๋‹จ๋ง(๋ฆฌํ”„) ๋…ธ๋“œ ์ฐพ๊ธฐ
  • ์ฐพ์€ ๋…ธ๋“œ์˜ ๊ณต๊ฐ„์— ์—ฌ์œ ๊ฐ€ ์žˆ์œผ๋ฉด ํ‚ค๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๋๋‚ธ๋‹ค
  • ์ฐพ์€ ๋…ธ๋“œ์˜ ๊ณต๊ฐ„์— ์—ฌ์œ ๊ฐ€ ์—†์œผ๋ฉด, ํ˜•์ œ ๋…ธ๋“œ๋ฅผ ์‚ดํŽด ๊ณต๊ฐ„์˜ ์—ฌ์œ ๊ฐ€ ์žˆ์œผ๋ฉด ํ˜•์ œ ๋…ธ๋“œ์— ํ‚ค๋ฅผ ํ•˜๋‚˜ ๋„˜๊ธด๋‹ค
  • ํ˜•์ œ ๋…ธ๋“œ์˜ ๊ณต๊ฐ„์—๋„ ์—ฌ์œ ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ๋ฅผ ๋‘๊ฐœ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค. ๋ถ„๋ฆฌ ์ž‘์—…์€ ๋ถ€๋ชจ ๋…ธ๋“œ์—์„œ์˜ ์‚ฝ์ž… ์ž‘์—…์„ ํฌํ•จํ•œ๋‹ค.

B Tree ์‚ญ์ œ

  • ์‚ญ์ œํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ key(x)๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค
  • ์ฐพ์€ ๋…ธ๋“œ๊ฐ€ ๋‹จ๋ง(๋ฆฌํ”„) ๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๋ฉด, x์˜ ์งํ›„์›์†Œ์ธ y๋ฅผ ๊ฐ€์ง„ ๋ฆฌํ”„๋…ธ๋“œ๋ฅผ ์ฐพ์•„์™€ x์™€ y๋ฅผ ๋งž๋ฐ”๊พผ๋‹ค
  • ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ x๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค
  • x ์ œ๊ฑฐ ํ›„ ๋…ธ๋“œ์— ์–ธ๋”ํ”Œ๋กœ์šฐ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ ์ ˆํžˆ ํ•ด์†Œํ•œ๋‹ค

๐Ÿ“Œ B+ Tree๋ž€?

๋ฐ์ดํ„ฐ์˜ ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•œ ์ธ๋ฑ์Šค ์—ญํ• ๋งŒ ํ•˜๋Š” ๋น„๋‹จ๋ง ๋…ธ๋“œ(not Leaf)๊ฐ€ ์ถ”๊ฐ€๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.
(๊ธฐ์กด์˜ B-Tree์™€ ๋ฐ์ดํ„ฐ์˜ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„๋œ ์ƒ‰์ธ๊ตฌ์กฐ) B-Tree์˜ ๋ณ€ํ˜• ๊ตฌ์กฐ๋กœ, index ๋ถ€๋ถ„๊ณผ Leaf ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์ˆœ์ฐจ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ๋ถ€๋ถ„์˜ key ๊ฐ’์€ Leaf์— ์žˆ๋Š” key ๊ฐ’์„ ์ง์ ‘ ์ฐพ์•„๊ฐ€๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

B+ Tree ํŠน์ง•

  • ๋ฐ์ดํ„ฐ์˜ ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•œ ์ธ๋ฑ์Šค ์—ญํ• ๋งŒ ํ•˜๋Š” ๋…ธ๋“œ๊ฐ€ ์ถ”๊ฐ€๋กœ ์žˆ์Œ
  • ๋ชจ๋“  key, data๊ฐ€ ๋ฆฌํ”„๋…ธ๋“œ์— ๋ชจ์—ฌ์žˆ์Œ
  • ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์žฌ๊ฒ€์‚ฌ ์‹œ ๋ฆฌํ”„๋…ธ๋“œ์—์„œ ์„ ํ˜• ๊ฒ€์ƒ‰์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ฐ์†Œ
  • ๋ฆฌํ”„๋…ธ๋“œ์˜ ๋ถ€๋ชจ key๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ key๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Œ
  • Key ๊ฐ’์— ๋Œ€ํ•œ HDD ์•ก์„ธ์Šค ์ฃผ์†Œ ์—†์Œ โ†’ ๋ธ”๋Ÿญ ์‚ฌ์ด์ฆˆ ๋” ๋งŽ์ด ์ด์šฉ ๊ฐ€๋Šฅ
  • Leaf ๋…ธ๋“œ๋ผ๋ฆฌ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ โ†’ ๋ฒ”์œ„ ํƒ์ƒ‰์— ์œ ๋ฆฌ
  • ์ตœ์ƒ์˜ ์ผ€์ด์Šค์˜ ๊ฒฝ์šฐ ๋ฃจํŠธ์—์„œ ๋๋‚  ์ˆ˜ ์žˆ๋Š” B-Tree์™€ ๋‹ฌ๋ฆฌ, ๋ฌด์กฐ๊ฑด Leaf๊นŒ์ง€ ๊ฐ€๋ด์•ผ ํ•จ

๐Ÿ“Œ B-Tree & 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 ๋…ธ๋“œ์—์„œ๋งŒ ์ด๋ฃจ์–ด์ง

์ฐธ๊ณ 


ํ”ผ๋“œ๋ฐฑ ๋ฐ ๊ฐœ์„ ์ ์€ ๋Œ“๊ธ€์„ ํ†ตํ•ด ์•Œ๋ ค์ฃผ์„ธ์š”๐Ÿ˜Š

profile
๋ฐฐ์›€์„ ๊ธ€๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€