B-tree
"๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ผ ์์คํ ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข ์ผ๋ก, ์ด์ง ํธ๋ฆฌ๋ฅผ ํ์ฅํด ํ๋์ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์์ ๋ ธ๋์ ์ต๋ ์ซ์๊ฐ 2๋ณด๋ค ํฐ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค."
์ ๋ฆฌํ์๋ฉด, B-tree๋ Binary search tree์ ์ ์ฌํ์ง๋ง, ํ ๋ ธ๋ ๋น ์์ ๋ ธ๋๊ฐ 2๊ฐ ์ด์ ๊ฐ๋ฅํ๋ค ๋ผ๊ณ ํ ์์๋ค.
์ฌ๊ธฐ์ ๋จผ์ ํธ๋ฆฌ๊ตฌ์กฐ์ ๋ํด ์์๋ณด์.
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๊ผญ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ ํ์ง ์๋๋ผ๋ ์์คํ ์ธ๊ณ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์์ฃผ ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ด๋ค. 'ํ์' ์, ๋จ์๊ฐ ๋ด์ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
B-tree์ ํต์ฌ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ง๋์ด ์๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆผ์ ํ์๋ ์ฌ๊ฐํ์ผ๋ก ํ์๋ ํ ๊ฐ ํ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ '๋ ธ๋(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๋ ๊ท ํํธ๋ฆฌ์ธ๋ฐ, '๊ท ํ ํธ๋ฆฌ'๋ ๋ฃจํธ๋ก๋ถํฐ ๋ฆฌํ๊น์ง์ ๊ฑฐ๋ฆฌ๊ฐ ์ผ์ ํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ปํ๋ ๊ฒ์ผ๋ก, ํธ๋ฆฌ ์ค์์ ํนํ ์ฑ๋ฅ์ด ์์ ํ ๋์ด์๋ค.
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
๐์ฐธ๊ณ ์ฌ์ดํธ