Home > Data Structure > ๐Ÿงฉ [Data Structure] B-tree์™€ ์ฐจ์ˆ˜(Degree)๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿงฉ [Data Structure] B-tree์™€ ์ฐจ์ˆ˜(Degree)๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?
Data Structure

๐Ÿงฉ [Data Structure] B-tree์™€ ์ฐจ์ˆ˜(Degree)๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๐ŸŽ Intro.

  • B-tree(Balanced Multiway Search Tree)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งค๋‹ˆ์ง€๋จผํŠธ ์‹œ์Šคํ…œ(DBMS), ์ธ๋ฑ์Šค ๊ตฌ์กฐ ๋“ฑ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

โœ…1๏ธโƒฃ B-Tree์˜ ์ฃผ์š” ํŠน์ง•.

1๏ธโƒฃ ๊ท ํ˜• ํŠธ๋ฆฌ(Balanced Tree)

  • ๋ฃจํŠธ์—์„œ ๋ฆฌํ”„๊นŒ์ง€์˜ ๊ฒฝ๋กœ ๊ธธ์ด๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์‹œ ์ž๋™์œผ๋กœ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜์—ฌ O(log N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ๋‹ค์ง„ ๊ตฌ์กฐ(Multiway Tree)

  • ํ•œ ๋…ธ๋“œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ‚ค(Key)์™€ ์—ฌ๋Ÿฌ ์ž์‹(Child)์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ผ๋ฐ˜์ ์ธ ์ด์ง„ ํŠธ๋ฆฌ(Binary Tree)๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•˜๋ฏ€๋กœ, ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ํšจ์œจ์„ฑ

  • ํ•œ ๋…ธ๋“œ์— ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๋””์Šคํฌ I/O ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์€ ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ๋†’์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ

  • ๋ชจ๋“  ๋…ธ๋“œ๋Š” ํ‚ค(Key)๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ๊ฐ ํ‚ค๋Š” ํ•ด๋‹น ์ž์‹ ๋…ธ๋“œ ๋ฒ”์œ„์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

โœ…2๏ธโƒฃ B-Tree์˜ ๊ทœ์น™

1๏ธโƒฃ ํ‚ค(Key)์™€ ์ž์‹(Child) ๊ด€๊ณ„

  • ํ•œ ๋…ธ๋“œ์— ์ตœ๋Œ€ d-1๊ฐœ์˜ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(์—ฌ๊ธฐ์„œ d๋Š” ํŠธ๋ฆฌ์˜ ์ฐจ์ˆ˜)
    • ๋…ธ๋“œ์˜ ํ‚ค๊ฐ€ N๊ฐœ๋ผ๋ฉด, ํ•ด๋‹น ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ N+1๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ •๋ ฌ๋œ ์ƒํƒœ.

  • ๋…ธ๋“œ ๋‚ด๋ถ€์˜ ํ‚ค๋Š” ํ•ญ์ƒ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž์‹ ๋…ธ๋“œ๋Š” ๊ฐ ํ‚ค์˜ ๋ฒ”์œ„์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ํ‚ค ๊ฐœ์ˆ˜ ๋ฒ”์œ„.

  • ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ตœ์†Œ ceil(d/2)-1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ์˜ˆ์™ธ์ ์œผ๋กœ 1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4๏ธโƒฃ ๊ท ํ˜• ์œ ์ง€.

  • ํŠธ๋ฆฌ๋Š” ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ์ž๋™์œผ๋กœ ๊ท ํ˜•์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ปค์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

โœ…3๏ธโƒฃ B-Tree์˜ ๊ตฌ์กฐ.

๐Ÿ“Œ1๏ธโƒฃ ์˜ˆ์‹œ: ์ฐจ์ˆ˜(d) = 3์ธ B-Tree

  • ์ฐจ์ˆ˜(Degree)๋Š” B-Tree ๋˜๋Š” B+ Tree์—์„œ ํ•œ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ž์‹ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ๋˜ํ•œ ํ•œ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ d-1๊ฐœ์˜ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ฐจ์ˆ˜(d) = 3, ์ตœ๋Œ€๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ž์‹ ์ˆ˜ โžž 3
      • ์ฐจ์ˆ˜(d) = 3, ์ตœ๋Œ€๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค โžž 3-1 = 2

๐Ÿ“Œ2๏ธโƒฃ ํŠน์ง•

1๏ธโƒฃ ๋‚ด๋ถ€ ๋…ธ๋“œ์˜ ํ‚ค.

  • ๋ฃจํŠธ ๋…ธ๋“œ [30]์€ 1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  2๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง.

2๏ธโƒฃ ๋ฆฌํ”„ ๋…ธ๋“œ.

  • ๋ฆฌํ”„ ๋…ธ๋“œ [10, 20]์™€ [40, 50]์€ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋ฉฐ, ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†์Œ.

โœ…4๏ธโƒฃ B-Tree์˜ ์ฃผ์š” ์—ฐ์‚ฐ.

1๏ธโƒฃ ๊ฒ€์ƒ‰(Search)

  • ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๋…ธ๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰.
  • ํ‚ค๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ์ž์‹ ๋…ธ๋“œ๋กœ ๋‚ด๋ ค๊ฐ.
  • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(log N)

2๏ธโƒฃ ์‚ฝ์ž…(Insert)

    1. ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ์œ„์น˜๋ฅผ ์ฐพ์Œ(๋ฆฌํ”„ ๋…ธ๋“œ).
    1. ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€.
    1. ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ๋ถ„ํ• (Split) ์ˆ˜ํ–‰.
    1. ๋ถ„ํ• ๋œ ํ‚ค๋ฅผ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์ด๋™.
    1. ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋ถ€๋ชจ ๋…ธ๋“œ๋„ ๋ถ„ํ• (Split).

3๏ธโƒฃ ์‚ญ์ œ(Delete)

    1. ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์œ„์น˜๋ฅผ ์ฐพ์Œ.
    1. ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ ํ›„, ์–ธ๋”ํ”Œ๋กœ์šฐ(Underflow) ๋ฐœ์ƒ ์‹œ:
      • ๋ณ‘ํ•ฉ(Merge) ๋˜๋Š” ์žฌ๋ถ„๋ฐฐ(Redistribute)๋กœ ํ•ด๊ฒฐ.
    1. ํŠธ๋ฆฌ์˜ ๊ท ํ˜• ์œ ์ง€.

โœ…5๏ธโƒฃ B-Tree์˜ ์žฅ์ .

  • 1. ๋†’์€ ๊ฒ€์ƒ‰ ๋ฐ ์—…๋ฐ์ดํŠธ ์„ฑ๋Šฅ
    • ํŠธ๋ฆฌ ๋†’์ด๊ฐ€ ๋‚ฎ์•„ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  • 2. ๋””์Šคํฌ I/O ์ตœ์ ํ™”
    • ํ•œ ๋…ธ๋“œ์— ๋งŽ์€ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ๋””์Šคํฌ ์ ‘๊ทผ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 3. ๊ท ํ˜• ์œ ์ง€
    • ํ•ญ์ƒ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋ฏ€๋กœ, ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(log N)์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • 4. ์ •๋ ฌ ๋ฐ์ดํ„ฐ ์ €์žฅ
    • ํ‚ค๊ฐ€ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ, ๋ฒ”์œ„ ๊ฒ€์ƒ‰(Range Query)์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

โœ…6๏ธโƒฃ B-Tree๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ.

  • 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค
    • MySQL(InnoDB), PostSQL ๋“ฑ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • 2. ํŒŒ์ผ ์‹œ์Šคํ…œ
    • NTFS, ext4์™€ ๊ฐ™์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • 3. Key-Value ์ €์žฅ์†Œ
    • RocksDB, LevelDB ๋“ฑ์—์„œ B-Tree ๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽ Intro.

  • ์ฐจ์ˆ˜(Degree)๋Š” B-Tree ๋˜๋Š” B+ Tree์—์„œ ํ•œ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ž์‹ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์ฐจ์ˆ˜(d)๊ฐ€ ํฌ๋ฉด ํ•œ ๋…ธ๋“œ์— ๋” ๋งŽ์€ ์ž์‹์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ๋‚ฎ์•„์ง€๊ณ  ๊ฒ€์ƒ‰ ํšจ์œจ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
    • ๋ฐ˜๋Œ€๋กœ ์ฐจ์ˆ˜(d)๊ฐ€ ์ž‘์œผ๋ฉด ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž์‹ ์ˆ˜๊ฐ€ ์ ์–ด ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ…1๏ธโƒฃ B-Tree์—์„œ โ€œ์ฐจ์ˆ˜(Degree)โ€์˜ ์˜๋ฏธ.

  • B-Tree์—์„œ ์ฐจ์ˆ˜(d)๋Š” ๋…ธ๋“œ์˜ ํ‚ค(Key)์™€ ์ž์‹(Child)์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ์ค‘์š”ํ•œ ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ํ•œ ๋…ธ๋“œ์˜ ์ตœ๋Œ€ ํ‚ค(Key) ๊ฐœ์ˆ˜.

  • ํ•œ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ d-1๊ฐœ์˜ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฐจ์ˆ˜ d=4์ธ B-Tree๋ผ๋ฉด, ํ•œ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ 4-1=3๊ฐœ์˜ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ํ•œ ๋…ธ๋“œ์˜ ์ž์‹(Child) ์ˆ˜.

  • ํ•œ ๋…ธ๋“œ์˜ ํ‚ค(Key) ๊ฐœ์ˆ˜๊ฐ€ N๊ฐœ๋ผ๋ฉด, ํ•ด๋‹น ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ N+1๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฐจ์ˆ˜ d=4์ธ ๊ฒฝ์šฐ:
      • ๋…ธ๋“œ์— 3๊ฐœ์˜ ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด, ์ตœ๋Œ€ 4๊ฐœ์˜ ์ž์‹(Child)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ…2๏ธโƒฃ B-Tree์—์„œ ์ฐจ์ˆ˜(Degree)์˜ ๊ทœ์น™.

  • 1. ํ‚ค(Key) ๊ฐœ์ˆ˜์˜ ๋ฒ”์œ„:
    • ํ•œ ๋…ธ๋“œ๋Š” ์ตœ์†Œ ceil(d/2)-1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์ตœ๋Œ€ d-1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์˜ˆ: ์ฐจ์ˆ˜ d=4๋ผ๋ฉด:
        • ์ตœ์†Œ ํ‚ค ๊ฐœ์ˆ˜: ceil(4/2)-1 = 1
        • ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜: 4-1 = 3
  • 2. ์ž์‹(Child) ์ˆ˜์˜ ๋ฒ”์œ„:
    • ํ•œ ๋…ธ๋“œ๋Š” ์ตœ์†Œ ceil(d/2)๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์ตœ๋Œ€ d๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์˜ˆ: ์ฐจ์ˆ˜ d=4๋ผ๋ฉด:
        • ์ตœ์†Œ ์ž์‹ ์ˆ˜: ceil(4/2) = 2
        • ์ตœ๋Œ€ ์ž์‹ ์ˆ˜: 4

โœ…3๏ธโƒฃ ์ฐจ์ˆ˜(d)์˜ ์˜ˆ์ œ.

์˜ˆ: ์ฐจ์ˆ˜(d) = 4์ธ B-Tree

        [ 30 | 60 ]
       /     |     \
  [10, 20] [40, 50] [70, 80]
  • 1. ๋‚ด๋ถ€ ๋…ธ๋“œ:
    • ๋ฃจํŠธ ๋…ธ๋“œ [30 | 60]๋Š” ์ตœ๋Œ€ d-1 = 3๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ํ•œ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ d-1๊ฐœ์˜ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
    • ๋ฃจํŠธ ๋…ธ๋“œ [30 | 60]์€ ์ตœ์†Œ ceil(4/2)-1 = 1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ ธ์•ผํ•˜๋ฉฐ, ์ตœ๋Œ€ d-1 = 3๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ํ•œ ๋…ธ๋“œ๋Š” ์ตœ์†Œ ceil(d/2)-1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ ธ์•ผํ•˜๋ฉฐ, ์ตœ๋Œ€ d-1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
    • ์ž์‹ ๋…ธ๋“œ ์ˆ˜๋Š” ์ตœ๋Œ€ d = 4๊ฐœ.
      • ํ•œ ๋…ธ๋“œ์˜ ํ‚ค(Key) ๊ฐœ์ˆ˜๊ฐ€ N๊ฐœ๋ผ๋ฉด, ํ•ด๋‹น ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ N+1๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
    • ํ•œ ๋…ธ๋“œ๋Š” ์ตœ์†Œ ceil(4/2) = 2๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์ตœ๋Œ€ 4๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 2. ๋ฆฌํ”„ ๋…ธ๋“œ:
    • ๋ฆฌํ”„ ๋…ธ๋“œ [10, 20], [40, 50], [70, 80]์€ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ(Key)๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      • B-Tree์˜ ๊ทœ์น™ ์ค‘ โ€œ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ •๋ ฌ๋œ ์ƒํƒœโ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
        • ๋…ธ๋“œ ๋‚ด๋ถ€์˜ ํ‚ค๋Š” ํ•ญ์ƒ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
        • ์ž์‹ ๋…ธ๋“œ๋Š” ๊ฐ ํ‚ค์˜ ๋ฒ”์œ„์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
      • B-Tree์˜ ํŠน์ง• ์ค‘ โ€œ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์ €์žฅโ€์ด ์žˆ์Šต๋‹ˆ๋‹ค.
        • ๋ชจ๋“  ๋…ธ๋“œ๋Š” ํ‚ค(Key)๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
          • ๊ฐ ํ‚ค(Key)๋Š” ํ•ด๋‹น ์ž์‹ ๋…ธ๋“œ์˜ ๋ฒ”์œ„ ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 3. ํŠธ๋ฆฌ ๋†’์ด:
    • ์ฐจ์ˆ˜(d)๊ฐ€ ํฌ๋ฉด ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ์ค„์–ด๋“ค์–ด ๊ฒ€์ƒ‰์ด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.
      • ์ฐจ์ˆ˜(d)๊ฐ€ ํฌ๋ฉด ํ•œ ๋…ธ๋“œ์— ๋” ๋งŽ์€ ์ž์‹์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํŠธ๋ฆฌ์˜ ๋†’์ด โฅฅ๊ฐ€ ๋‚ฎ์•„์ง€๊ณ (๋Œ€์‹  ๋„ˆ๋น„โ‡”๊ฐ€ ๋„“์–ด์ง) ๊ฒ€์ƒ‰ ํšจ์œจ์ด ํ–ฅ์ƒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
      • ๋ฐ˜๋Œ€๋กœ ์ฐจ์ˆ˜(d)๊ฐ€ ์ž‘์œผ๋ฉด ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž์‹ ์ˆ˜๊ฐ€ ์ ์–ด ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ โ‡‘๋†’์•„์ง‘๋‹ˆ๋‹ค(๋„ˆ๋น„โ‡„๊ฐ€ ์ข์•„์ง).

โœ…4๏ธโƒฃ ์ฐจ์ˆ˜๊ฐ€ ์ž‘๊ณ  ํฐ ๊ฒฝ์šฐ์˜ ์ฐจ์ด.

1๏ธโƒฃ ์ฐจ์ˆ˜(d)๊ฐ€ ์ž‘์œผ๋ฉด:

  • ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค(Key)์™€ ์ž์‹ ์ˆ˜๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค.
  • ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ์ปค์ ธ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ์•ฝ๊ฐ„ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค(Key)์™€ ์ž์‹ ์ˆ˜๊ฐ€ ์ ์–ด ํŠธ๋ฆฌ๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์—.
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ ์ ์Œ.
    • ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค(Key)์™€ ์ž์‹ ์ˆ˜๊ฐ€ ์ ์–ด ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” ๋†’์ง€๋งŒ ๋„ˆ๋น„๋Š” ์ข๊ธฐ ๋•Œ๋ฌธ์—.

2๏ธโƒฃ ์ฐจ์ˆ˜(d)๊ฐ€ ํฌ๋ฉด:

  • ํ•œ ๋…ธ๋“œ์— ๋” ๋งŽ์€ ํ‚ค(Key)์™€ ์ž์‹์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ๋‚ฎ์•„์ ธ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.
    • ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค(Key)์™€ ์ž์‹ ์ˆ˜๊ฐ€ ๋งŽ์•„ ํŠธ๋ฆฌ๊ฐ€ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์—.
  • ๋งค๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•œ ๋…ธ๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค(Key)์™€ ์ž์‹ ์ˆ˜๊ฐ€ ๋งŽ์•„ ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” ๋‚ฎ์ง€๋งŒ ๋„ˆ๋น„๋Š” ๋„“๊ธฐ ๋•Œ๋ฌธ์—.

๐Ÿ“Œ1๏ธโƒฃ ์ฐจ์ˆ˜(d)์™€ ์˜ˆ์ œ์—์„œ์˜ ์ ์šฉ.

1๏ธโƒฃ ์ฐจ์ˆ˜(d) = 4์ธ ๊ฒฝ์šฐ

  • ์ฐจ์ˆ˜(d)๋Š” B-Tree์—์„œ ํ•œ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ž์‹ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ, ๋‚ด๋ถ€ ๋…ธ๋“œ(๋ฃจํŠธ ๋…ธ๋“œ ํฌํ•จ)์˜ ์ž์‹ ๋…ธ๋“œ ์ˆ˜๋Š” ์ตœ๋Œ€ 4๊ฐœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ํ‚ค(Key) ๊ฐœ์ˆ˜์™€ d-1 ๋ฒ•์น™

  • ํ•œ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ‚ค(Key) ๊ฐœ์ˆ˜๋Š” d-1์ž…๋‹ˆ๋‹ค.
    • ์ฐจ์ˆ˜ d=4๋ผ๋ฉด:
      • ์ตœ๋Œ€ ํ‚ค ๊ฐœ์ˆ˜ = d-1 = 3๊ฐœ
  • ๋ฃจํŠธ ๋…ธ๋“œ [30 | 60]๋Š” 2๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์ตœ๋Œ€ 3๊ฐœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ทœ์น™์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์—ฌ๊ธฐ์„œ 2๊ฐœ๋Š” โ€œํ˜„์žฌ ์ €์žฅ๋œ ํ‚ค ๊ฐœ์ˆ˜โ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 3๊ฐœ๋Š” โ€œ์ตœ๋Œ€ ์ €์žฅ ๊ฐ€๋Šฅ ํ‚ค ๊ฐœ์ˆ˜โ€์ž…๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์ž์‹ ์ˆ˜

  • ๋ฃจํŠธ ๋…ธ๋“œ๋Š” 2๊ฐœ์˜ ํ‚ค(Key)๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ, ์ตœ๋Œ€ N+1๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์—ฌ๊ธฐ์„œ N = 2(๋ฃจํŠธ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐœ์ˆ˜)๋ผ๋ฉด:
      • ์ž์‹ ๋…ธ๋“œ ์ˆ˜๋Š” N+1 = 3๊ฐœ์ž…๋‹ˆ๋‹ค.
  • ๋ฃจํŠธ ๋…ธ๋“œ [30 | 60]์˜ ์ž์‹ ๋…ธ๋“œ๋กœ [10, 20], [40, 50]. [70. 80] 3๊ฐœ์˜ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋Š” ์ฐจ์ˆ˜(d=4)์˜ ๊ทœ์น™์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๊ตฌ์„ฑ

  • ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ํ‚ค๋Š” ๊ฐ ๋…ธ๋“œ์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ์ž์‹์ด ์—†์œผ๋ฉฐ, ๋ฆฌํ”„ ๋…ธ๋“œ๋กœ:
    • [10, 20]
    • [40, 50]
    • [70, 80]
      • ์ด 3๊ฐœ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€5๏ธโƒฃ ๊ฒฐ๋ก .

    1. ์ฐจ์ˆ˜(d=4):
      • ๋‚ด๋ถ€ ๋…ธ๋“œ(๋ฃจํŠธ ๋…ธ๋“œ ํฌํ•จ)์˜ ์ž์‹ ๋…ธ๋“œ ์ˆ˜๋Š” ์ตœ๋Œ€ 4๊ฐœ์ž…๋‹ˆ๋‹ค.
    1. ํ‚ค(Key) ๊ฐœ์ˆ˜:
      • ๋ฃจํŠธ ๋…ธ๋“œ [30 | 60]๋Š” ํ˜„์žฌ 2๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‚˜, ์ตœ๋Œ€ 3๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ด๋Š” ๊ทœ์น™์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
    1. ๋ฆฌํ”„ ๋…ธ๋“œ:
      • ์ž์‹ ๋…ธ๋“œ:
      • [10, 20]
      • [40, 50]
      • [70, 80]
        • ์ด 3๊ฐœ์˜ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ ์ ˆํ•œ ๊ตฌ์„ฑ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.