2025. 9. 30. 17:36ใDB
๐ณ 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๋ ๊ฐ ๋ ธ๋์ key๋ง๋ค data๋ฅผ ์ ์ฅ
- B+Tree๋ ๋ฆฌํ ๋ ธ๋์๋ง data ์ ์ฅ, ๋น๋ฆฌํ ๋ ธ๋๋ ์์ key๊ฐ๋ง ์ ์ฅ
- ๋ฆฌํ ๋ ธ๋ ๋ถ๋ชจ key๋ ์ค๋ณต๋ ์ ์์
- ๋ฆฌํ ๋ ธ๋๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ตฌ์กฐ → ์ธ์ ๋ ธ๋์ ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅ

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์์ ๋ง์ด ํ์ฉ๋๋ค.