B-Tree

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ผ์ข…
  • ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ์ตœ๋Œ€ ์ˆซ์ž๊ฐ€ 2๋ณด๋‹ค ํฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ

png

1. ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ

  • ์ง€๊ธˆ๊นŒ์ง€ ๋‹ค๋ฃฌ ์ž๋ฃŒ๊ตฌ์กฐ -> ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋Š” ๋ฐ์ดํ„ฐ
  • ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” DB์™€ ํŒŒ์ผ์‹œ์Šคํ…œ์€ ๋น…์˜ค ์˜๋ฏธ ์—†์–ด์ง
  • ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ HWํŠน์„ฑ๊ณผ ์ž˜ ๋งž๋ฌผ๋ ค ๋ณ€ํ˜•ํ•œ๋‹ค๋ฉด ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜๋กœ ์‚ฝ์ž…, ํƒ์ƒ‰, ์‚ญ์ œ ์‹œ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ฐ€๋Šฅ

png

  • โ€œDB์— ์ ‘๊ทผํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ๋ผโ€
    • ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ์‹œ HDD์—์„œ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜จ ํ›„ ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ
    • ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„
    • DB๋Š” ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ๋ฟ HDD๊ฐ€ ๊ฐ–๋Š” HW์  ํ•œ๊ณ„๋ฅผ ๋›ฐ์–ด๋„˜๋Š” ๊ฒƒ์€ ์•„๋‹˜
  • DB๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ํƒ์ƒ‰, ์‚ญ์ œ ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ
    • B ํŠธ๋ฆฌ
    • B+ ํŠธ๋ฆฌ

2. B ํŠธ๋ฆฌ

  • m-way ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์ผ์ข…
    • m: ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ž์‹ ๊ฐœ์ˆ˜
    • BST
      • 2-way ํƒ์ƒ‰ ํŠธ๋ฆฌ
      • ์ž์‹์€ ๋‘˜์ด์ง€๋งŒ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๋Š” ํ‚ค๋Š” ํ•˜๋‚˜
    • m-1๋Š” ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜

1) key

  • ๋…ธ๋“œ์— ํ‚ค๊ฐ€ ํ•˜๋‚˜์ผ ๋•Œ์™€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ ์ฐจ์ด

png

  • m์ด ์ปค์ง€๋ฉด์„œ ํŠธ๋ฆฌ ๋†’์ด๊ฐ€ ์ค„์–ด๋“ฌ
    • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํšŸ์ˆ˜๊ฐ€ ์ค„์—ˆ๋‹ค๋Š” ๋œป
  • ๋น„๊ต ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” ๋Š˜์–ด๋‚จ
  • ๊ฒฐ๊ตญ ์„ฑ๋Šฅ์€ ๋น„์Šทํ•˜์ง€ ์•Š๋‚˜?
    • ์•„๋‹˜
    • ์ด ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ HDD์— ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ
    • ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ฌ ๋•Œ 40ํด๋Ÿญ ์†Œ์š” / HDD์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ฌ ๋•Œ 50๋งŒ ํด๋Ÿญ ์†Œ์š”

2) ๊ฒฐ๋ก 

  • HDD์— ์ƒ์ฃผํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์„ค๊ณ„ํ•˜๋ ค๋ฉด ํ•œ ๋…ธ๋“œ์— ์ตœ๋Œ€ํ•œ ๋งŽ์€ ํ‚ค๋ฅผ ๋‹ด์•„ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์•ผ ํ•จ
  • ๊ทธ๋ ‡๋‹ค๊ณ  ๋…ธ๋“œ ํฌ๊ธฐ ๋ฌด์ž‘์ • ๋Š˜๋ฆด ์‹œ ํ•œ๋ฒˆ์— ํ•œ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๊ฒŒ ๋จ

3) m-way ํƒ์ƒ‰ ํŠธ๋ฆฌ

  • ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ์ตœ๋Œ€ m๊ฐœ ๊ฐ€์ง„๋‹ค.
  • ํ•œ ๋…ธ๋“œ์—์„œ key๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.
  • ์–ด๋–ค ํ‚ค K์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ํ‚ค๋Š” K๋ณด๋‹ค ์ž‘๋‹ค.
  • ์–ด๋–ค ํ‚ค K์˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ํ‚ค๋Š” K๋ณด๋‹ค ํฌ๋‹ค.
  • ์„œ๋ธŒํŠธ๋ฆฌ๋„ m-way ํƒ์ƒ‰ ํŠธ๋ฆฌ์ด๋‹ค.

png

  • 2 <= ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์„œ๋ธŒํŠธ๋ฆฌ ๊ฐœ์ˆ˜ <= m
  • math.ceil(m/2) <= ๋ฃจํŠธ๋ฅผ ์ œ์™ธํ•œ ๋…ธ๋“œ์˜ ์„œ๋ธŒ ํŠธ๋ฆฌ ๊ฐœ์ˆ˜ <= m
  • math.ceil(m/2)-1 <= ๋ฃจํŠธ๋ฅผ ์ œ์™ธํ•œ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐœ์ˆ˜ <= m-1
  • ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋Š” ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ๋‹ค.

3. ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ

1) ์‚ฝ์ž…

  • ์•„๋ฌด ๊ฒƒ๋„ ์—†์—ˆ์„ ๋•Œ ์ตœ์ดˆ ๋ ˆ์ฝ”๋“œ 1 ์‚ฝ์ž…
    • ์ฒซ ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž…๋˜๋ฉด ํ‚ค 1์„ ๊ฐ€์ง„ ๋ฃจํŠธ๋…ธ๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง
    • ๋ฃจํŠธ ๋…ธ๋“œ ์ด์ž ๋ฆฌํ”„ ๋…ธ๋“œ
  • ๋‘ ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž…
    • ํ‚ค 2๊ฐ€ ๋ฃจํŠธ ๋…ธ๋“œ์— ์ถ”๊ฐ€

png

  • split
    • ๋…ธ๋“œ ๋์— 3 ์‚ฝ์ž… ์‹œ ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜๋ฅผ ๋„˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ถ„๋ฆฌ์‹œ์ผœ์•ผ ํ•จ
    • ๊ฐ€์šด๋ฐ ํ‚ค 2๋ฅผ ์ƒˆ๋กœ์šด ๋…ธ๋“œ์— ์‚ฝ์ž…ํ•˜์—ฌ ๋ถ€๋ชจ๋กœ ์˜ฌ๋ฆผ
    • ํ‚ค 1์ด ์žˆ๋Š” ๋…ธ๋“œ๋Š” ํ‚ค 2๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋กœ ๋งŒ๋“ฌ
    • ํ‚ค 3์ด ์žˆ๋Š” ๋…ธ๋“œ๋Š” ํ‚ค 2๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋กœ ๋งŒ๋“ฌ
    • ์ตœ์ข…์ ์œผ๋กœ ํŠธ๋ฆฌ ๋†’์ด ๋†’์•„์ง

png

  • ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ split
    • ํ‚ค 5๊ฐ€ ์‚ฝ์ž…๋˜๋ฉด ํ‚ค 4 ๋’ค์— ํ‚ค 5 ์ถ”๊ฐ€ -> ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜ ๋„˜๊น€
    • ๋…ธ๋“œ์—์„œ ๊ฐ€์šด๋ฐ ํ‚ค ๊ฐ’์ธ 4๊ฐ€ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์˜ฌ๋ผ๊ฐ€ ํ‚ค 2๋’ค์— ์‚ฝ์ž…
    • ํ‚ค 3์€ ํ‚ค 4์˜ ์™ผ์ชฝ ์ž์‹์ด๋˜๊ณ  ํ‚ค 5๋Š” ํ‚ค 4์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์ด ๋จ
    • ๋ฐ์ดํ„ฐ ์—ฐ์† ์ถ”๊ฐ€ ์‹œ ๋ถ€๋ชจ๋…ธ๋“œ๋„ ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜ ๋„˜๊ธธ ๊ฒฝ์šฐ ๋ถ€๋ชจ ๋…ธ๋“œ๋„ ์—ฐ์‡„์  split ์ง„ํ–‰

png

2) ์‚ญ์ œ

  • B ํŠธ๋ฆฌ์—์„œ ํ‚ค ์‚ญ์ œ๋Š” ํ–ฅ์ƒ ๋ฆฌํ”„๋…ธ๋“œ์—์„œ ์ง„ํ–‰
  • ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ์—์„œ ํ‚ค ์‚ญ์ œํ•ด์•ผ ํ•  ์‹œ ๋Œ€์ฒด ํ‚ค๋ฅผ ๋ฐ”๊พผ ํ›„ ์‚ญ์ œ ์ง„ํ–‰

png

  • ์œ„์˜ ๋…ธ๋“œ์—์„œ ํ‚ค 6์„ ์‚ญ์ œํ•œ๋‹ค๊ณ  ๊ฐ€์ •
    • ํ‚ค 6์ด ์žˆ๋Š” ๋…ธ๋“œ๋Š” ๋ฆฌํ”„๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋Œ€์ฒด ํ‚ค๋ฅผ ์ฐพ์•„์•ผํ•จ
    • ๋Œ€์ฒด ํ‚ค๋Š” ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ํ‚ค์ธ 5๊ฐ€ ๋จ (๋” ํฐ ํ‚ค ์žˆ์œผ๋ฉด ๊ทธ ํ‚ค๊ฐ€ ๋Œ€์ฒด ํ‚ค๊ฐ€ ๋จ)
    • ๊ทธ ํ›„ ํ‚ค 6 ๋…ธ๋“œ ์‚ญ์ œ
    • ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋œ๋‹ค.

png

  • m=3 ์ธ 3-way ํŠธ๋ฆฌ๋Š” ์ตœ์†Œํ•œ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ 2๊ฐœ๋Š” ์žˆ์–ด์•ผ ํ•จ
    • ์„œ๋ธŒํŠธ๋ฆฌ ํŠน์„ฑ ๊นจ์ง
  • donate (ํšŒ์ „ ์—ฐ์‚ฐ)
    • ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์— ๋…ธ๋“œ์˜ ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜๋ฅผ ์ถฉ์กฑํ•œ ํ›„ ๋‚จ๋Š” ํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ์งˆ์˜ (์—ฌ๊ธฐ์„œ๋Š” ํ‚ค๊ฐ€ 2๊ฐœ์ด์ƒ์ธ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š”์ง€)
    • ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค๊ฐ€ 7๊ณผ 8 ๋‘ ๊ฐœ๊ฐ€ ์žˆ์–ด์„œ ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ ํ•œ ๊ฐœ๋ฅผ ๋นผ๋„ ํ•œ ๊ฐœ๊ฐ€ ๋‚จ๋Š”๋‹ค -> ๋นˆ ๋…ธ๋“œ๋กœ donate ๊ฐ€๋Šฅ
    • ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ์ž‘์€ ํ‚ค 7์„ ๋นˆ ๋…ธ๋“œ๋กœ ๋ฐ”๋กœ ์ฃผ๋ฉด ํŠธ๋ฆฌ ๊ทœ์น™ ๊นจ์ง
      • ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค 5๊ฐ€ ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ๋กœ ๊ฐ€๊ณ  7์ด ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ๊ฐ„๋‹ค.
    • ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋œ๋‹ค.

png

png

  • ํ‚ค 5 ์‚ญ์ œ ์‹œ
    • ํ‚ค 7์˜ ๋…ธ๋“œ ์„œ๋ธŒ ํŠธ๋ฆฌ 1๊ฐœ -> ์„œ๋ธŒ ํŠธ๋ฆฌ ํŠน์„ฑ ์œ„๋ฐ˜
    • donate ๋ถˆ๊ฐ€
  • merge
    • ํ•ด๋‹น ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ (๋˜๋Š” ์™ผ์ชฝ) ์ž์‹๋…ธ๋“œ์— ์žˆ๋Š” ํ‚ค ๊ฐ’๊ณผ ๋ถ€๋ชจ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์„ ๋ชจ์œผ๋Š” ์ž‘์—…
    • ๊ณต๋ฐฑ์ด ๋œ ๋…ธ๋“œ๋Š” ์ œ๊ฑฐ
    • ํŠธ๋ฆฌ๊ตฌ์กฐ ๋ณ€๊ฒฝ๋จ

png

  • ํ‚ค 7๊ณผ ํ‚ค 8์„ ๊ฐ€์ง„ ๋…ธ๋“œ๊ฐ€ ๋ณ‘ํ•ฉ๋จ
    • ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๋นˆ ๋…ธ๋“œ - donate ๋ถˆ๊ฐ€๋Šฅ, ๋‹ค์‹œ merge
    • ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค 4๊ฐ€ ํ‚ค 2๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ์˜ ๋งˆ์ง€๋ง‰์— ์‚ฝ์ž…

png

4. B+ ํŠธ๋ฆฌ

  • BํŠธ๋ฆฌ์˜ ๋ณ€ํ˜•์œผ๋กœ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” B+ํŠธ๋ฆฌ๋กœ ๊ตฌํ˜„๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

png

  • ๋…ธ๋“œ๋Š” ์ธ๋ฑ์Šค ๋…ธ๋“œ์™€ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ
    • ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ๋‹ค ๋ฐ์ดํ„ฐ ๋…ธ๋“œ. ์ฆ‰, ๋ฆฌํ”„๋…ธ๋“œ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์ด ๋‹ด๊ฒจ์žˆ์Œ
  • ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๊ฐ€ ์ด์ค‘์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ์Œ
    • BํŠธ๋ฆฌ๋Š” ์˜†์— ์žˆ๋Š” ๋ฆฌํ”„๋…ธ๋“œ ๊ฒ€์‚ฌํ• ๋•Œ ๋‹ค์‹œ ๋ฃจํŠธ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฒ€์‚ฌ
    • B+ ํŠธ๋ฆฌ๋Š” ๋ฆฌํ”„๋…ธ๋“œ์—์„œ ์„ ํ˜•๊ฒ€์‚ฌ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • ์ธ๋ฑ์Šค ๋…ธ๋“œ์˜ ํ‚ค๋“ค์ด ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์—์„œ ์ค‘๋ณตํ•ด์„œ ๋‚˜ํƒ€๋‚จ
    • ํ•ด๋‹น ํ‚ค์˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ํ‚ค๊ฐ€ ์žˆ์–ด์•ผ ํ•  ๊ณณ์— ํ•ด๋‹น ํ‚ค๊ฐ€ ์ค‘๋ณต๋˜์–ด ๋‚˜ํƒ€๋‚จ
    • ์ธ๋ฑ์Šค ๋…ธ๋“œ๋ผ๋ฆฌ๋Š” ์ค‘๋ณต X

5. index

https://velog.io/@syleemk/%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B8%EB%8D%B1%EC%8A%A4