[์ž๋ฃŒ๊ตฌ์กฐ] B-tree, B+tree ์ด๋ก  ์ •๋ฆฌ

2022. 12. 28. 18:05ยทAlgorithm/KBro Study

B-tree

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

 

์ •๋ฆฌํ•˜์ž๋ฉด, B-tree๋Š” Binary search tree์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ํ•œ ๋…ธ๋“œ ๋‹น ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค ๋ผ๊ณ  ํ• ์ˆ˜์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๋จผ์ € ํŠธ๋ฆฌ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

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

 

B-tree์˜ ํ•ต์‹ฌ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ถœ์ฒ˜:https://zorba91.tistory.com/293

 

๊ทธ๋ฆผ์— ํ‘œ์‹œ๋œ ์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œ์‹œ๋œ ํ•œ ๊ฐœ ํ•œ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ '๋…ธ๋“œ(Node)'๋ผ๊ณ  ํ•œ๋‹ค.

 

๊ฐ€์žฅ ์ƒ๋‹จ์˜ ๋…ธ๋“œ๋ฅผ '๋ฃจํŠธ ๋…ธ๋“œ(Root Node)', ์ค‘๊ฐ„ ๋…ธ๋“œ๋“ค์„ '๋ธŒ๋žœ์น˜ ๋…ธ๋“œ(Branch Node)', ๊ฐ€์žฅ ์•„๋ž˜ ๋…ธ๋“œ๋“ค์„ '๋ฆฌํ”„ ๋…ธ๋“œ(Leaf Node)'๋ผ๊ณ  ํ•œ๋‹ค. (B-tree๊ฐ€ ๋˜๋ ค๋ฉด ์œ„ ๊ทธ๋ฆผ์— ๋งจ์™ผ์ชฝ Branch์— Leaf Node ํ•˜๋‚˜๊ฐ€ ์ถ”๊ฐ€๋˜์–ด์•ผํ•จ) 

 

B-tree์˜ ๊ฒฝ์šฐ key์™€ data๋ฅผ ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ์™€ ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ’€ ์Šค์บ”์„ ์œ„ํ•ด ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.


Balanced Tree

B-tree๋Š” Balanced Tree์˜ ํ•œ ์ข…๋ฅ˜์ธ๋ฐ, Balanced Tree๋Š” ๋…ธ๋“œ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์‹œ ์Šค์Šค๋กœ ๊ท ํ˜•์„ ๋งž์ถฐ์ฃผ๋Š” ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. ๊ธฐ์กด ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฌธ์ œ์ ์€ ์ขŒ์šฐ ๊ท ํ˜•์ด ๋งž์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ, ํŠธ๋ฆฌ๊ฐ€ ์ขŒ์šฐ ๋ถˆ๊ท ํ˜• ํ•˜๋ฉด ๋†’์ด๊ฐ€ ์ปค์„œ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ์ƒ๋‹นํžˆ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค. (์ตœ์•…์˜ ๊ฒฝ์šฐ์—” ์„ ํ˜•๊ฒ€์ƒ‰๊ณผ ๊ฐ™์€ O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง) ์ด๋ฅผ ์œ„ํ•ด ๊ท ํ˜•์ ์œผ๋กœ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด, ์–ด๋А ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋”๋ผ๋„ ๋†’์ด๊ฐ€ ๊ฐ™๋‹ค. (์‹œ๊ฐ„๋ณต์žก๋„ O(logN))

 

Balance ํŠธ๋ฆฌ์—๋Š” AVL ํŠธ๋ฆฌ, Red-Black Tree, B-Tree๊ฐ€ ์žˆ๋‹ค. 


๊ท ํ˜•ํŠธ๋ฆฌ

B-tree๋Š” ๊ท ํ˜•ํŠธ๋ฆฌ์ธ๋ฐ, '๊ท ํ˜• ํŠธ๋ฆฌ'๋ž€ ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ๋ฆฌํ”„๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ผ์ •ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋œปํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ํŠธ๋ฆฌ ์ค‘์—์„œ ํŠนํžˆ ์„ฑ๋Šฅ์ด ์•ˆ์ •ํ™” ๋˜์–ด์žˆ๋‹ค. 

์ถœ์ฒ˜:https://zorba91.tistory.com/293


B+tree

B+tree๋Š” B-tree์˜ ํ™•์žฅ ๊ฐœ๋…์œผ๋กœ, B-tree์™€ ๋‹ฌ๋ฆฌ ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ์—๋Š” key๋งŒ ๋‹ด๊ณ , ๋ฆฌํ”„ ๋…ธ๋“œ์—๋งŒ key์™€ data๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ฆฌ ๋…ธ๋“œ๋ผ๋ฆฌ Linked list๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.

 

 ๋”ฐ๋ผ์„œ B+tree๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ–๋Š”๋‹ค.

 

1. ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ํ™•๋ณดํ•จ์œผ๋กœ์จ ๋” ๋งŽ์€ key๋“ค์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ๋” ๋งŽ์€ key๋“ค์„ ๋‹ด์„ ์ˆ˜ ์žˆ๊ธฐ์— ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” ๋” ๋‚ฎ์•„์ง„๋‹ค.(cache hit๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Œ)

 

2. ํ’€ ์Šค์บ” ์‹œ, B+tree๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ์˜ ์„ ํ˜•ํƒ์ƒ‰๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— B-tree์— ๋น„ํ•ด ๋น ๋ฅด๋‹ค.(๋ฆฌํ”„๋…ธ๋“œ์—์„œ ์„ ํ˜•ํƒ์ƒ‰)


B-tree Vs B+tree 

์ถœ์ฒ˜:https://seunggi92.tistory.com/39

 

 

 

 

 

๐Ÿ“—์ฐธ๊ณ ์‚ฌ์ดํŠธ

[MySQL] B-tree, B+tree๋ž€? (์ธ๋ฑ์Šค์™€ ์—ฐ๊ด€์ง€์–ด์„œ)

'Algorithm > KBro Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„(Graph) + ๊ตฌํ˜„ํ•˜๊ธฐ(Java์˜ ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ)  (0) 2023.01.17
[์•Œ๊ณ ๋ฆฌ์ฆ˜] Brute Force(๋ธŒ๋ฃจํŠธ ํฌ์Šค)  (0) 2023.01.08
[์ž๋ฃŒ๊ตฌ์กฐ] Java - ํ•ด์‹œํ…Œ์ด๋ธ”(HashTable) ์ด๋ก ์ •๋ฆฌ  (0) 2022.12.23
[์ž๋ฃŒ๊ตฌ์กฐ] Java - Heap(ํž™) ์ด๋ก ์ •๋ฆฌ + ๊ตฌํ˜„ + Priority Queue(์šฐ์„ ์ˆœ์œ„ ํ)  (0) 2022.12.11
[์ž๋ฃŒ๊ตฌ์กฐ]Java - Binary Search Tree(์ด์ง„ ํƒ์ƒ‰ํŠธ๋ฆฌ) ๊ฐœ๋… + ๊ตฌํ˜„  (0) 2022.12.06
'Algorithm/KBro Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„(Graph) + ๊ตฌํ˜„ํ•˜๊ธฐ(Java์˜ ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ)
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] Brute Force(๋ธŒ๋ฃจํŠธ ํฌ์Šค)
  • [์ž๋ฃŒ๊ตฌ์กฐ] Java - ํ•ด์‹œํ…Œ์ด๋ธ”(HashTable) ์ด๋ก ์ •๋ฆฌ
  • [์ž๋ฃŒ๊ตฌ์กฐ] Java - Heap(ํž™) ์ด๋ก ์ •๋ฆฌ + ๊ตฌํ˜„ + Priority Queue(์šฐ์„ ์ˆœ์œ„ ํ)
_๊ฑฐ๋ˆ„
_๊ฑฐ๋ˆ„
๋ธ”๋กœ๊ทธ ์ด์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค! https://velog.io/@pigonhair/posts
  • _๊ฑฐ๋ˆ„
    ๊ฑฐ๋ˆ„๋„ค๋ฃธ๐Ÿ”‘
    _๊ฑฐ๋ˆ„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๊ฑฐ๋ˆ„๋„ค๋ฃธ (83)
      • Languages | Frameworks (41)
        • Java (10)
        • Spring (23)
        • Docker (8)
      • Git | Github (1)
      • DBMS (4)
        • SQL (4)
      • DevOps | Server (3)
      • OS (6)
        • Linux (6)
      • Algorithm (26)
        • Theory (1)
        • Data Structure (7)
        • BaekJoon (5)
        • Programmers (1)
        • KBro Study (12)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • Github
    • BaekJoon
    • solved class
    • ๋ฐฉ๋ช…๋ก
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
_๊ฑฐ๋ˆ„
[์ž๋ฃŒ๊ตฌ์กฐ] B-tree, B+tree ์ด๋ก  ์ •๋ฆฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”