B-tree (Balanced Tree)

์ž‘์„ฑ์ผ2022-01-04

B-tree๋ž€?

B-tree
B-tree ์ž๋ฃŒ๊ตฌ์กฐ

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

B-tree๋Š” ์ฐจ์ˆ˜(Degree)๋ฅผ ๊ฐ€์ง€๋ฉฐ ์ด ๊ฐ’์— ๋”ฐ๋ผ ๊ตฌ์„ฑ ์ •๋ณด๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ฌ๋ผ์ง„๋‹ค:

degree: 4์ธ ๊ฒฝ์šฐ

  • ์ตœ๋Œ€ ์ž์‹ ์ˆ˜: 4
  • ์ตœ์†Œ ์ž์‹ ์ˆ˜: (4 + 1) / 2 = 2
  • ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜: 4 - 1 = 3
B-tree๋Š” ์ฐจ์ˆ˜(m)์— ๋”ฐ๋ผ logmN์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ •์˜

Knuth ์ •๋ฆฌ์— ๋”ฐ๋ผ, m ์ฐจ B-tree๋Š” ๋‹ค์Œ์˜ ์†์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ํŠธ๋ฆฌ์ด๋‹ค.

  1. ๊ฐ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ m ๊ฐœ์˜ ์ž์‹์„ ๊ฐ–๋Š”๋‹ค.
  2. ๋ฃจํŠธ์™€ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๊ฐ ๋…ธ๋“œ๋Š” ์ตœ์†Œ โŒˆm/2โŒ‰ ๊ฐœ์˜ ์ž์‹์„ ๊ฐ–๋Š”๋‹ค.
  3. ๋ฃจํŠธ๋…ธ๋“œ๋Š” ๋ฆฌํ”„๋…ธ๋“œ๊ฐ€ ์•„๋‹Œํ•œ ์ตœ์†Œ ๋‘๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค.
  4. ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋Š” ๋™์ผํ•œ ๋ ˆ๋ฒจ์— ์กด์žฌํ•œ๋‹ค.
  5. k ๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋Š” k-1 ๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ฐ ๋‚ด๋ถ€ ๋…ธ๋“œ์˜ ํ‚ค๋Š” ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ถ„๋ฆฌ๊ฐ’์œผ๋กœ ์ž‘์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋‚ด๋ถ€ ๋…ธ๋“œ๊ฐ€ 3๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด, 2๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ๋งŒ ํ•œ๋‹ค: a1 ์™€ a2.
์ขŒ์ธก ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ’์€ a1 ๋ณด๋‹ค ์ž‘๊ณ , ์ค‘์•™ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ’์€ a1 ์™€ a2 ์‚ฌ์ด์— ์žˆ์œผ๋ฉฐ, ์šฐ์ธก ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ’์€ a2 ๋ณด๋‹ค ํฌ๋‹ค.

๋‚ด๋ถ€ ๋…ธ๋“œ

๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” ๋ฃจํŠธ๋…ธ๋“œ์™€ ๋ฆฌํ”„๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ์ด๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์‹ ํฌ์ธํ„ฐ์™€ ํ‚ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ •๋ ฌ ๋ ์–ด ํ‘œํ˜„๋œ๋‹ค. ๊ฐ ๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ U ๊ฐœ, ์ตœ์†Œ L ๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ํ‚ค์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ ์ž์‹๋…ธ๋“œ(L-1 ์—์„œ U-1 ์‚ฌ์ด์˜ ํ‚ค ๊ฐœ์ˆ˜) ๊ฐœ์ˆ˜ -1 ์ด๋‹ค. U ๋Š” 2L ๋˜๋Š” 2L - 1์ค‘์— ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ ๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” ์ตœ์†Œํ•œ ์ ˆ๋ฐ˜ ์ด์ƒ ์ฑ„์›Œ์ง„๋‹ค. U ์™€ L ์‚ฌ์ด์˜ ๊ด€๊ณ„๋Š” ๋‹ค์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • ํ•ฉ๋ฒ•๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ฒฐํ•ฉ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋งŒ ์ฑ„์›Œ์ง„ ๋‘๊ฐœ์˜ ๋…ธ๋“œ
  • ๋‘๊ฐœ์˜ ํ•ฉ๋ฒ•๋…ธ๋“œ๋กœ ๋ถ„๋ฆฌ๋  ์ˆ˜์žˆ๋Š” ํ•œ๊ฐœ์˜ ๊ฝ‰์ฐฌ ๋…ธ๋“œ (๋งŒ์•ฝ ํ•œ๊ฐœ์˜ ํ‚ค๋ฅผ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์‚ฝ์ž…ํ• ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋ฉด)
ํ•ฉ๋ฒ•๋…ธ๋“œ๋ž€ ํ‚ค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ์†Œ ์ด์ƒ์ด๋ฉฐ ์ตœ๋Œ€ ์ดํ•˜์ธ ๋…ธ๋“œ๋ฅผ ๋งํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์†์„ฑ์€ B-tree์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  B-tree ์†์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ๋ฅผ ์กฐ์ •ํ•œ๋‹ค.

๋ฃจํŠธ ๋…ธ๋“œ

  • ๋ฃจํŠธ๋…ธ๋“œ์˜ ์ž์‹ ๊ฐœ์ˆ˜๋Š” ๋‚ด๋ถ€๋…ธ๋“œ์™€ ๋™์ผํ•œ ์ƒํ•œ์€ ์žˆ์ง€๋งŒ, ํ•˜ํ•œ์€ ์—†๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ์ „์ฒด ํŠธ๋ฆฌ์— ํ‚ค์˜ ๊ฐœ์ˆ˜๊ฐ€ L-1 ๋ณด๋‹ค ์ ์„ ๋•Œ, ๋ฃจํŠธ๋…ธ๋“œ๋Š” ์ž์‹๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋‹จ์ผ ๋…ธ๋“œ์ธ ์ƒํ™ฉ์ด๋‹ค.

๋ฆฌํ”„ ๋…ธ๋“œ

  • Knuth ์šฉ์–ด๋กœ "๋ฆฌํ”„" ๋…ธ๋“œ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด / ์ฒญํฌ์ด๋‹ค. ๋‹ค๋ฅธ ์ €์ž๋“ค์ด ๋งํ•˜๋Š” "๋ฆฌํ”„"๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ ๋ฐ”๋กœ ์œ„์—์žˆ๋Š” ๋‚ด๋ถ€ ๋…ธ๋“œ์— ํ•ด๋‹น:
    • ์ด ๋…ธ๋“œ ๋“ค์€ ํ‚ค(์ตœ๋Œ€ m-1, ๋ฃจํŠธ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ตœ์†Œ m/2 -1๊ฐœ)์™€ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด/์ฒญํฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋งŒ ์ €์žฅ
ํ˜„๋Œ€์˜ B-tree๋Š” ์ด Knuth ์ •๋ฆฌ์—์„œ ๋ฐœ์ „ํ•˜์˜€๋‹ค.

๋…ธ๋“œ (Node)

B-tree์˜ ๋…ธ๋“œ
B-Tree์˜ ๋…ธ๋“œ

๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ๋“ค์˜ ํฌ์ธํ„ฐ๋“ค๊ณผ ํ‚ค๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด๋ฏธ์ง€์—์„œ ๋ณด์ด๋Š” p1, p2...pn์€ ์ž์‹๋…ธ๋“œ ๋“ค์˜ ํฌ์ธํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. s1, s2, s3๋Š” ํ‚ค๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ, ํ‚ค๋“ค์ค‘์—์„œ ๋น„๊ต๋ฅผ ํ•˜๊ณ  ์‚ฌ์ž‡ ๊ฐ’์ด๋ผ๋ฉด ํ•ด๋‹น ๋ฒ”์œ„์˜ ์ž์‹๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.

๋…ธ๋“œ์˜ ๊ตฌ์กฐ

๋‹ค๋ฅธ ํŠธ๋ฆฌ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ B-tree๋„ ์„ธ๊ฐ€์ง€ ํƒ€์ž…์˜ ๋…ธ๋“œ๋“ค๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋‹ค: ๋ฃจํŠธ, ๋‚ด๋ถ€, ๋ฆฌํ”„.

๋…ธ๋“œ์˜ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • K: B-tree์˜ ๊ฐ ๋…ธ๋“œ์—๋Œ€ํ•œ ๊ฒ€์ƒ‰ ํ‚ค์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜. (์ด ๊ฐ’์€ ์ „์ฒด ํŠธ๋ฆฌ์—์„œ ๋™์ผํ•˜๋‹ค)
  • pti: ํ•˜์œ„ํŠธ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์ž์‹๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ.
  • pri: ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ.
  • ki: 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋…ธ๋“œ์ธ๋ฑ์Šค i์˜ ๊ฒ€์ƒ‰ํ‚ค.

B-tree์—์„œ๋Š” ๋…ธ๋“œ์—๋Œ€ํ•ด ๋‹ค์Œ์˜ ์†์„ฑ๋“ค์ด ๊ด€๋ฆฌ๋œ๋‹ค.

  • B-tree๋‚ด ki(ํ‚ค)๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด *ki-1*๋Š” ์กด์žฌ. (์˜ค๋ฆ„ ์ฐจ์ˆœ ์ •๋ ฌ์— ๋Œ€ํ•œ ๊ท ํ˜• ๊ด€๋ฆฌ๋ฅผ ์˜๋ฏธ)
  • ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋Š” ๋™์ผํ•œ ์กฐ์ƒ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง„๋‹ค.(ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ด€๋ฆฌ๋ฅผ ์˜๋ฏธ)

B-tree์—์„œ ๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” ๋‹ค์Œ์˜ ํ˜•์‹์„ ๊ฐ–๋Š”๋‹ค:

๋‚ด๋ถ€๋…ธ๋“œ ๊ตฌ์กฐ
pt0 k0 pt1 pr0 k1 pt2 pr1 ... kK-1 ptK prK-1
k0 ์กด์žฌ ์‹œ pt0 ki-1 , ki ์กด์žฌ ์‹œ pti ki-1 ์กด์žฌ, ki ๋ฏธ์กด์žฌ ์‹œ pti ki , ki-1 ๋ฏธ์กด์žฌ ์‹œ pti ki ์กด์žฌ ์‹œ pri ki ๋ฏธ์กด์žฌ ์‹œ pri
k0 ๋ณด๋‹ค ์ž‘์€ ํ‚ค๋“ค์„ ๊ฐ€์ง„ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ki-1 ๋ณด๋‹ค ํฌ๊ณ  ki ๋ณด๋‹ค ์ž‘์€ ํ‚ค๋“ค์„ ๊ฐ€์ง„ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ki-1 ๋ณด๋‹ค ํฐ ํ‚ค๋“ค์„ ๊ฐ€์ง„ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์—ฌ๊ธฐ์„œ pti ๋Š” ๋น„์–ด์žˆ๋‹ค. ki ์™€ ๊ฐ™์€ ๊ฐ’์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์—ฌ๊ธฐ์„œ pti ๋Š” ๋น„์–ด์žˆ๋‹ค.
B-tree ๋…ธ๋“œ ๋‚ด ๊ฒ€์ƒ‰
B-tree ๋…ธ๋“œ ๋‚ด ๊ฒ€์ƒ‰

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

์ค‘์•™ ์ธ๋ฑ์Šค๋Š” ๊ฐ ์ธ๋ฑ์Šค์˜ (์‹œ์ž‘ + ๋) / 2๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.

(์‹œ์ž‘: 0, ์ค‘์•™: 1, ๋: 3)
์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์‹œ์ž‘: 0, ๋: 3์ด๋ผ๋ฉด ์ค‘์•™์€ (0 + 3) / 2 = 1์ด ๋œ๋‹ค. ์ด ๊ณต์‹์œผ๋กœ ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์งˆ ๋•Œ ๋งˆ๋‹ค ์ค‘์•™์ด ๋ฐ”๋€๋‹ค.
์ค‘์•™ ๊ฐ’์ด ์ •ํ•ด์ง€๋ฉด, ๋น„๊ต๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ค‘์•™ < ์ฐพ๋Š” ๊ฐ’์ด๋ผ๋ฉด, ์‹œ์ž‘ ํฌ์ธํ„ฐ๋Š” ์ค‘์•™ +1: 2๊ฐ€ ๋œ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์ฐพ๋Š” ๊ฐ’ < ์ค‘์•™์ด๋ผ๋ฉด, ๋ ํฌ์ธํ„ฐ๋Š” ์ค‘์•™ -1: 1์ด ๋œ๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์‹œ (2 + 3) / 2 = 2๊ฐ€ ์ค‘์•™์ด ๋˜๊ณ  ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค.
(์‹œ์ž‘: 2, ์ค‘์•™: 2, ๋: 3)
์ด๋•Œ ์ฐพ๋Š” ๊ฐ’ < ์ค‘์•™(2)์ด๋ผ๋ฉด ์‹œ์ž‘(2)๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— 44์™€ 79์‚ฌ์ด์˜ ํฌ์ธํ„ฐ๋กœ ๋‹ค์Œ ์ž์‹๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๊ณ , ์ค‘์•™(2) < ์ฐพ๋Š” ๊ฐ’ ์ด๋ผ๋ฉด ๋˜๋‹ค์‹œ ์‹œ์ž‘ ํฌ์ธํ„ฐ๋ฅผ ์ค‘์•™ +1: 3์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋งŒ์•ฝ ์ค‘์•™ ๊ฐ’๊ณผ ๋น„๊ตํ•  ๋•Œ ๊ฐ™๋‹ค๋ฉด, ํ•ด๋‹น ๊ฐ’ ํƒ์ƒ‰์— ์„ฑ๊ณตํ•œ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฃจํŠธ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰์ด ์ด๋ฃจ์–ด ์ง€๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌ๋œ๋‹ค.

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

๋ฐ์ดํ„ฐ ์‚ฝ์ž…

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

์ผ๋ฐ˜ ์ ์ธ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

๊ฐ’ 11์ด ์ถ”๊ฐ€ ๋˜๋ฉด, ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ๋น„๊ตํ•˜์—ฌ ๋ ํฌ์ธํ„ฐ๋ฅผ ์ฐพ์•„ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.
2๋ฒˆ ํฌ์ธํ„ฐ๋กœ ์ด๋™

์œ„์˜ ๊ตฌ์กฐ์—์„œ ๊ฐ’ 11์ด ์ถ”๊ฐ€๋˜๋ฉด ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ๋Š” ์‚ฝ์ž… ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด ๊ฒ€์ƒ‰์—์„œ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•๋Œ€๋กœ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ์ด๋™ํ•  ํฌ์ธํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.

๋ฆฌํ”„๋…ธ๋“œ๊นŒ์ง€ ์ด๋™ํ•˜์—ฌ ์‚ฝ์ž… ์œ„์น˜๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ ํ•ด๋‹น ์œ„์น˜์— ์‚ฝ์ž…๋œ๋‹ค.
๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€ ์ด๋™ ๋ฐ ์‚ฝ์ž…

์ž์‹๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๋กœ ์ด๋™๋œ ๋’ค, ๊ธฐ์กด์˜ ํ‚ค๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ์‚ฝ์ž…ํ•  ์œ„์น˜๋ฅผ ์ฐพ๊ณ  ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜๋ฅผ ๋„˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ทธ ์ž๋ฆฌ๋กœ ์‚ฝ์ž…๋œ๋‹ค.

๋ฐ์ดํ„ฐ ์ถ”๊ฐ€์— ๋Œ€ํ•œ ๋…ธ๋“œ ํ™•์žฅ

๊ฐ’ 12๊ฐ€ ์ถ”๊ฐ€ ๋˜๋ฉด ์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ์ด๋™ํ•  ํฌ์ธํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
2๋ฒˆ ํฌ์ธํ„ฐ๋กœ ์ด๋™

๊ฐ’ 12๊ฐ€ ์ถ”๊ฐ€ ๋˜๋ฉด ์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ์ด๋™ํ•  ํฌ์ธํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.

์‚ฝ์ž… ์œ„์น˜๋ฅผ ์ฐพ์•˜์ง€๋งŒ 12๊ฐ€ ์‚ฝ์ž…๋˜๋ฉด ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜ ์œ„๋ฐ˜์ด๋ฏ€๋กœ ๋…ธ๋“œ๋ฅผ ๋ถ„ํ• ํ•œ๋‹ค.
์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜ ์œ„๋ฐ˜! ๋…ธ๋“œ ๋ถ„ํ• 

๊ธฐ์กด [8, 9, 10, 11]์—์„œ 12๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด [8 ,9, 10, 11, 12]๊ฐ€ ๋˜์–ด ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜๋ฅผ ์œ„๋ฐ˜ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” ์ค‘๊ฐ„ ๊ฐ’(10)์„ ๊ธฐ์ค€์œผ๋กœ ๋…ธ๋“œ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ, ์ค‘๊ฐ„๊ฐ’์˜ ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ [8, 9] ๋…ธ๋“œ์— ์—ฐ๊ฒฐ, ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ [11, 12] ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฐ„ ๊ฐ’10์€ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์—ฌ, ๋ถ€๋ชจ๋…ธ๋“œ์—์„œ๋„ ์‚ฝ์ž…์„ ์‹œ๋„ํ•œ๋‹ค.

๋งŒ์•ฝ ๋ถ€๋ชจ๋…ธ๋“œ์—์„œ๋„ ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด, ๋ถ€๋ชจ๋…ธ๋“œ๋„ ๋ถ„ํ• ํ•˜์—ฌ ์ค‘๊ฐ„๊ฐ’์„ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๊ณ , ๋ถ€๋ชจ๋…ธ๋“œ์˜ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์—ฌ ์‚ฝ์ž…์„ ์‹œ๋„ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ B-tree๋Š” ๋Ÿฐํƒ€์ž„์— ์ฐจ์ˆ˜๋ฅผ ์ˆ˜์ •ํ• ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•ด๋‹น ์ฐจ์ˆ˜์˜ ํŠธ๋ฆฌ๊ฐ€ ๊ฐ€์งˆ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ‚ค์˜ ๊ฐœ์ˆ˜์— ๋„๋‹ฌํ•œ๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ์ฐจ์ˆ˜์˜ B-tree๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œํ‚จ๋‹ค.

๋ฐ์ดํ„ฐ ์‚ญ์ œ

์•ž์„œ ์„ค๋ช…ํ•œ m์ฐจ B-tree์˜ ๋…ธ๋“œ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ตœ๋Œ€ ์ž์‹ ์ˆ˜: m
  • ์ตœ์†Œ ์ž์‹ ์ˆ˜: m / 2
  • ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜: m - 1
์‚ญ์ œ๋Š” ์‚ฝ์ž…๊ณผ ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์‚ญ์ œ๊ฐ€ ๋  ๋•Œ๋งˆ๋‹ค ์œ„ ๊ทœ์น™์„ ํ™•์ธํ•˜๋ฉฐ ์ด์— ๋”ฐ๋ฅธ ์žฌ๋ถ„์žฌ๋‚˜ ๋ณ‘ํ•ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ œ์•ฝ์— ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ๋‹ค๋ฉด ์‚ญ์ œํ›„ ๋ณ„๋‹ค๋ฅธ ์กฐ์น˜๊ฐ€ ์—†๋‹ค. ๋ฐ์ดํ„ฐ ์‚ญ์ œ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ ํ• ์ˆ˜ ์žˆ๋Š” ์กฐ์น˜๋Š” ๋ณ‘ํ•ฉ๊ณผ ์žฌ๋ถ„๋ฐฐ๊ฐ€ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ์‚ญ์ œ์— ๋Œ€ํ•œ ์žฌ๋ถ„๋ฐฐ

์žฌ๋ถ„๋ฐฐ๋Š” ํ˜•์ œ ๋…ธ๋“œ์ค‘ ํ‚ค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์—ฌ์œ  ์žˆ์„ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
์žฌ๋ถ„๋ฐฐ๋Š” ํ˜•์ œ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

ํ‚ค๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ ๊ทœ์น™์— ์œ„๋ฐฐ ๋˜์—ˆ๋‹ค๋ฉด, ํ˜•์ œ ๋…ธ๋“œ์— ์—ฌ์œ ๊ฐ€ ์žˆ์„ ๋•Œ ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์˜ˆ๋ฅผ ์ฒซ๋ฒˆ์งธ b-tree๋Š” Node 3์˜ 6๋ฒˆ ํ‚ค๊ฐ€ ์‚ญ์ œ ๋˜๋”๋ผ๋„, Node 4์— ํ‚ค๊ฐ€ ์—ฌ์œ (2 < 3) ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
๋ฐ˜๋Œ€๋กœ ๋‘๋ฒˆ์งธ b-tree๋Š” Node 3์˜ 6๋ฒˆ ํ‚ค๊ฐ€ ์‚ญ์ œ ๋˜๋”๋ผ๋„, Node 2์™€ Node 4์— ํ‚ค๊ฐ€ ์—ฌ์œ (2 < 2)์—†๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

4์ฐจ b-tree๋ผ๋ฉด ์‚ญ์ œ ๋˜๋Š” ๋…ธ๋“œ์˜ ํ˜•์ œ๋…ธ๋“œ๊ฐ€ ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ 2์ดํ•˜ ๋ผ๋ฉด ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์—ฌ ๋ณ‘ํ•ฉ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

๋งŒ์•ฝ ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด์ด๋ผ๋ฉด ๋‹ค์Œ๊ณผ๊ฐ™์ด ์ฒ˜๋ฆฌ๋œ๋‹ค.

ํ‚ค์‚ญ์ œ ์ดํ›„ Node 3์—์„œ ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ ๊ทœ์น™ ์œ„๋ฐฐ
์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ ๊ทœ์น™ ์œ„๋ฐฐ

์œ„ ํŠธ๋ฆฌ์—์„œ 6์„ ์‚ญ์ œํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ  ๋‚˜์„œ Node 3๋Š” ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ ๊ทœ์น™์„ ์œ„๋ฐฐํ•œ๋‹ค.
์ด ๊ฒฝ์šฐ Node 4์—์„œ ํ‚ค๋ฅผ ํ•˜๋‚˜ ๊ฐ€์ ธ์™€ Node 3์— ์‚ฝ์ž…ํ•˜๋ฉด ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ ๊ทœ์น™์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

Node 4์— ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜๋ณด๋‹ค 1๊ฐœ๋” ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค๋ฅผ ๊ฐ€์ ธ์™€ ๋…ธ๋“œ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ๋ถ€๋ชจ๋…ธ๋“œ๋Š” ์žฌ๋ถ„๋ฐฐ๋œ ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
์žฌ๋ถ„๋ฐฐ๋œ ํ‚ค๋ฅผ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์ด๋™

์žฌ๋ถ„๋ฐฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์—ฌ์œ ๋กœ์šด ๋…ธ๋“œ(Node 4)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ํฌ์ธํ„ฐ์— ๋ถ™์€ ํ‚ค๋ฅผ ์ž์‹๋…ธ๋“œ๋กœ ๋‚ด๋ฆฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ชจ๋…ธ๋“œ์—์„œ๋Š” ์žฌ๋ถ„๋ฐฐ๋œ ํ‚ค๋ฅผ ์„ ๋ณ„ํ•˜๊ธฐ์œ„ํ•ด ๊ฐ€์žฅ ์ž‘์€ํ‚ค (์™ผ์ชฝ์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๋ฉด ๊ฐ€์žฅ ํฐ ํ‚ค)๋ฅผ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๋˜์–ด ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜ ๊ทœ์น™์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋ฐ์ดํ„ฐ ์‚ญ์ œ์— ๋Œ€ํ•œ ๋ณ‘ํ•ฉ

ํ‚ค๋ฅผ ์‚ญ์ œํ–ˆ์ง€๋งŒ, ํ˜•์ œ ๋…ธ๋“œ ์ค‘์—๋Š” ์—ฌ์œ ๋กœ์šด ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค.
์žฌ๋ฐฐ์น˜ํ•  ํ‚ค๊ฐ€ ์—†์Œ

์œ„์™€ ๊ฐ™์€ 4์ฐจ B-tree๊ฐ€ ์žˆ์„ ๋•Œ Node 3์˜ 6๋ฒˆ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋ฉด, Node 3๋Š” Underflow๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋•Œ Node 2์™€ Node 4๋Š” ๋ชจ๋‘ ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜๋งŒํผ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ˜•์ œ ๋…ธ๋“œ๋ฅผ ๊ณจ๋ผ ํ•ด๋‹น ํ˜•์ œ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ชจํ‚ค๋ฅผ ๊ฐ€์ ธ์™€ ๋ณ‘ํ•ฉํ•œ๋‹ค.
ํ˜•์ œ ๋…ธ๋“œ์™€ ๋ณ‘ํ•ฉ

์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ํ˜•์ œ ๋…ธ๋“œ๋ฅผ ๊ณจ๋ผ ํ•ด๋‹น ํ˜•์ œ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ชจํ‚ค๋ฅผ ๊ฐ€์ ธ์™€ ๋ณ‘ํ•ฉํ•œ๋‹ค.

์‚ญ์ œ๋  ๋Œ€์ƒ์ด ๋‚ด๋ถ€ ๋…ธ๋“œ์— ์žˆ๋‹ค๋ฉด ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€ ์ด๋™ํ•œ ๋’ค์— ์‚ญ์ œํ•œ๋‹ค.

Copyright ยฉ 2019-2025 Alloc ยท MIT License