์ธ๋ฑ์Šค) B-tree VS B+tree

2025. 9. 30. 17:36ใ†DB

๐ŸŒณ Binary Search Tree

Binary Search Tree๋Š” ๊ฐ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—๋Š” ๋” ์ž‘์€ ๊ฐ’, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—๋Š” ๋” ํฐ ๊ฐ’์ด ์œ„์น˜ํ•˜๋Š” ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค.

Binary Search Tree

์ด์ง„ํŠธ๋ฆฌ์˜ ํ™•์žฅ

์ด์ง„ํŠธ๋ฆฌ(Binary Tree)๋Š” ์ž์‹์„ ์ตœ๋Œ€ 2๊ฐœ๊นŒ์ง€๋งŒ ๊ฐ€์ง„๋‹ค. ๋ฃจํŠธ(root) ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์™ผ์ชฝ์—๋Š” ์ž‘์€ ๊ฐ’, ์˜ค๋ฅธ์ชฝ์—๋Š” ํฐ ๊ฐ’์ด ๋ฐฐ์น˜๋œ๋‹ค.

๐ŸŒณ B-Tree

B-Tree๋Š” ๋„๋ฆฌ ์“ฐ์ด๋Š” ์ธ๋ฑ์Šค ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ, ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•œ ํ˜•ํƒœ์ด๋‹ค. ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ 2๋ณด๋‹ค ํฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค.

 

๋‹จ์ : ๋ฒ”์œ„ ๊ฒ€์ƒ‰(BETWEEN, >=, <=, ORDER BY, LIKE 'abc%') ์‹œ ๋ฃจํŠธ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ ํ˜•๊ฒ€์ƒ‰์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค.

B-tree
์ธ๋ฑ์Šค ์ค‘์š”์„ฑ

 


๐ŸŒณ B+Tree

B+Tree๋Š” B-Tree์˜ ๋ณ€ํ˜•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

  • B-Tree๋Š” ๊ฐ ๋…ธ๋“œ์˜ key๋งˆ๋‹ค data๋ฅผ ์ €์žฅ
  • B+Tree๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์—๋งŒ data ์ €์žฅ, ๋น„๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ์ž์‹ key๊ฐ’๋งŒ ์ €์žฅ
  • ๋ฆฌํ”„ ๋…ธ๋“œ ๋ถ€๋ชจ key๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์Œ
  • ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ → ์ธ์ ‘ ๋…ธ๋“œ์— ๋ฐ”๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ

B+tree

B+Tree๋Š” B-Tree๋ณด๋‹ค ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜์–ด, ํŠนํžˆ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์—์„œ ์œ ์šฉํ•˜๋‹ค. MySQL InnoDB ์—”์ง„์—์„œ ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.


 InnoDB๋ž€?

  • MySQL์˜ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„(Storage Engine) ์ค‘ ํ•˜๋‚˜
  • ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ = MySQL์ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ชจ๋“ˆ
  • MySQL ๊ธฐ๋ณธ(default) ์—”์ง„์ด ๋ฐ”๋กœ InnoDB

ํŠน์ง•: ACID (Atomicity, Consistency, Isolation, Durability) ๋ณด์žฅ


๐ŸŒณ B+Tree์™€ InnoDB์˜ ๊ด€๊ณ„

  • InnoDB์˜ ์ธ๋ฑ์Šค๋Š” B+Tree ๊ตฌ์กฐ
  • Primary Key ์ธ๋ฑ์Šค = ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค (๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ ๋ฆฌํ”„ ๋…ธ๋“œ์— ์ €์žฅ๋จ)

โ“ Hash ์ธ๋ฑ์Šค๋Š” ์™œ ์•ˆ ์“ฐ์ผ๊นŒ?

Hash ์ธ๋ฑ์Šค๋Š” = ์กฐ๊ฑด์—์„œ๋Š” O(1)๋กœ ๋น ๋ฅด์ง€๋งŒ ๋ฒ”์œ„ ๊ฒ€์ƒ‰๊ณผ ์ •๋ ฌ์„ ์ง€์›ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ”์šฉ์ ์ธ SQL DB ์ธ๋ฑ์Šค๋กœ๋Š” ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š๊ณ , ๋Œ€์‹  B+Tree๊ฐ€ ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

→ Hash ์ธ๋ฑ์Šค๋Š” RDBMS๋ณด๋‹ค๋Š” Redis, DynamoDB ๊ฐ™์€ NoSQL์—์„œ ๋งŽ์ด ํ™œ์šฉ๋œ๋‹ค.