๐ B Tree๋?
์ข์ฐ ๊ท ํ์ ๋ง์ถ์ด ํธ๋ฆฌ์ ๊ฒ์, ์ฝ์
, ์ญ์ ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ํ ์๋ฃ๊ตฌ์กฐ์
๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ ์์คํ
์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข
์ผ๋ก ์ด์ง ํธ๋ฆฌ๋ฅผ ํ์ฅํด์, ๋ ๋ง์ ์์ ์์์ ๊ฐ์ง ์ ์๊ฒ ์ผ๋ฐํ ์ํจ ๊ฒ์ด B-Tree์
๋๋ค.
B Tree ๊ท์น
- ๋
ธ๋์ ๋ฐ์ดํฐ ์๊ฐ N์ด๋ฉด, ์์ ์๋ N+1
- ๊ฐ ๋
ธ๋์ ๋ฐ์ดํฐ๋ ์ ๋ ฌ๋ ์ํ์ด์ด์ผ ํจ
- ๋ฃจํธ ๋
ธ๋๋ ์ ์ด๋ 2๊ฐ ์ด์์ ์์์ ๊ฐ์ ธ์ผ ํจ
- ๋ฃจํธ ๋
ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋
ธ๋๋ ์ ์ด๋ M/2๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํจ (M=๋
ธ๋ ๋ด ์ต๋ ๋ฐ์ดํฐ ์)
- ์ธ๋ถ(๋จ๋ง) ๋
ธ๋๋ก ๊ฐ๋ ๊ฒฝ๋ก์ ๊ธธ์ด๋ ๋ชจ๋ ๊ฐ๋ค
- ์
๋ ฅ ์๋ฃ๋ ์ค๋ณต๋ ์ ์์
B Tree ์ฝ์
- ์๋ก์ด ๋ฐ์ดํฐ key๋ฅผ ์ฝ์
ํ ๋จ๋ง(๋ฆฌํ) ๋
ธ๋ ์ฐพ๊ธฐ
- ์ฐพ์ ๋
ธ๋์ ๊ณต๊ฐ์ ์ฌ์ ๊ฐ ์์ผ๋ฉด ํค๋ฅผ ์ฝ์
ํ๊ณ ๋๋ธ๋ค
- ์ฐพ์ ๋
ธ๋์ ๊ณต๊ฐ์ ์ฌ์ ๊ฐ ์์ผ๋ฉด, ํ์ ๋
ธ๋๋ฅผ ์ดํด ๊ณต๊ฐ์ ์ฌ์ ๊ฐ ์์ผ๋ฉด ํ์ ๋
ธ๋์ ํค๋ฅผ ํ๋ ๋๊ธด๋ค
- ํ์ ๋
ธ๋์ ๊ณต๊ฐ์๋ ์ฌ์ ๊ฐ ์์ผ๋ฉด ๋
ธ๋๋ฅผ ๋๊ฐ๋ก ๋ถ๋ฆฌํ๋ค. ๋ถ๋ฆฌ ์์
์ ๋ถ๋ชจ ๋
ธ๋์์์ ์ฝ์
์์
์ ํฌํจํ๋ค.
B Tree ์ญ์
- ์ญ์ ํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ key(x)๋ฅผ ๊ฐ๊ณ ์๋ ๋
ธ๋๋ฅผ ์ฐพ๋๋ค
- ์ฐพ์ ๋
ธ๋๊ฐ ๋จ๋ง(๋ฆฌํ) ๋
ธ๋๊ฐ ์๋๋ฉด, x์ ์งํ์์์ธ y๋ฅผ ๊ฐ์ง ๋ฆฌํ๋
ธ๋๋ฅผ ์ฐพ์์ x์ y๋ฅผ ๋ง๋ฐ๊พผ๋ค
- ๋ฆฌํ ๋
ธ๋์์ x๋ฅผ ์ ๊ฑฐํ๋ค
- x ์ ๊ฑฐ ํ ๋
ธ๋์ ์ธ๋ํ๋ก์ฐ๊ฐ ์๊ธฐ๋ฉด ์ ์ ํ ํด์ํ๋ค
๐ B+ Tree๋?
๋ฐ์ดํฐ์ ๋น ๋ฅธ ์ ๊ทผ์ ์ํ ์ธ๋ฑ์ค ์ญํ ๋ง ํ๋ ๋น๋จ๋ง ๋
ธ๋(not Leaf)๊ฐ ์ถ๊ฐ๋ก ์์ต๋๋ค.
(๊ธฐ์กด์ B-Tree์ ๋ฐ์ดํฐ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํ๋ ์์ธ๊ตฌ์กฐ) B-Tree์ ๋ณํ ๊ตฌ์กฐ๋ก, index ๋ถ๋ถ๊ณผ Leaf ๋
ธ๋๋ก ๊ตฌ์ฑ๋ ์์ฐจ ๋ฐ์ดํฐ ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ธ๋ฑ์ค ๋ถ๋ถ์ key ๊ฐ์ Leaf์ ์๋ key ๊ฐ์ ์ง์ ์ฐพ์๊ฐ๋๋ฐ ์ฌ์ฉํฉ๋๋ค.
B+ Tree ํน์ง
- ๋ฐ์ดํฐ์ ๋น ๋ฅธ ์ ๊ทผ์ ์ํ ์ธ๋ฑ์ค ์ญํ ๋ง ํ๋ ๋
ธ๋๊ฐ ์ถ๊ฐ๋ก ์์
- ๋ชจ๋ key, data๊ฐ ๋ฆฌํ๋
ธ๋์ ๋ชจ์ฌ์์
- ๋ชจ๋ ๋ฆฌํ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋ฆฌ์คํธ ํํ๋ฅผ ๋๊ณ ์์ผ๋ฏ๋ก ์ฌ๊ฒ์ฌ ์ ๋ฆฌํ๋
ธ๋์์ ์ ํ ๊ฒ์์ผ๋ก ์๊ฐ ๋ณต์ก๋ ๊ฐ์
- ๋ฆฌํ๋
ธ๋์ ๋ถ๋ชจ key๋ ๋ฆฌํ ๋
ธ๋์ ์ฒซ ๋ฒ์งธ key๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์
- Key ๊ฐ์ ๋ํ HDD ์ก์ธ์ค ์ฃผ์ ์์ โ ๋ธ๋ญ ์ฌ์ด์ฆ ๋ ๋ง์ด ์ด์ฉ ๊ฐ๋ฅ
- Leaf ๋
ธ๋๋ผ๋ฆฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ โ ๋ฒ์ ํ์์ ์ ๋ฆฌ
- ์ต์์ ์ผ์ด์ค์ ๊ฒฝ์ฐ ๋ฃจํธ์์ ๋๋ ์ ์๋ B-Tree์ ๋ฌ๋ฆฌ, ๋ฌด์กฐ๊ฑด Leaf๊น์ง ๊ฐ๋ด์ผ ํจ
๐ B-Tree & B+ Tree
ํ์ฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค (B+ Tree)
- ํ์ผ ์์คํ
- ๋ค๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋
์ ๋ฆฌ
- B tree๋ ๊ฐ ๋
ธ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋จ
- B+tree๋ index ๋
ธ๋์ leaf ๋
ธ๋๋ก ๋ถ๋ฆฌ๋์ด ์ ์ฅ๋จ (๋ํ, leaf ๋
ธ๋๋ ์๋ก ์ฐ๊ฒฐ๋์ด ์์ด์ ์์์ ๊ทผ์ด๋ ์์ฐจ์ ๊ทผ ๋ชจ๋ ์ฑ๋ฅ์ด ์ฐ์ํจ)
- B-tree๋ ๊ฐ ๋
ธ๋์์ key์ data ๋ชจ๋ ๋ค์ด๊ฐ ์ ์๊ณ , data๋ disk block์ผ๋ก ํฌ์ธํฐ๊ฐ ๋ ์ ์์
- B+tree๋ ๊ฐ ๋
ธ๋์์ key๋ง ๋ค์ด๊ฐ. ๋ฐ๋ผ์ data๋ ๋ชจ๋ leaf ๋
ธ๋์๋ง ์กด์ฌ
- B+tree๋ add์ delete๊ฐ ๋ชจ๋ leaf ๋
ธ๋์์๋ง ์ด๋ฃจ์ด์ง
์ฐธ๊ณ
ํผ๋๋ฐฑ ๋ฐ ๊ฐ์ ์ ์ ๋๊ธ์ ํตํด ์๋ ค์ฃผ์ธ์๐