B-Tree
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ผ ์์คํ ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข
- ์ด์งํธ๋ฆฌ๋ฅผ ํ์ฅํด ํ๋์ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์์ ๋ ธ๋์ ์ต๋ ์ซ์๊ฐ 2๋ณด๋ค ํฐ ํธ๋ฆฌ ๊ตฌ์กฐ
1. ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ
- ์ง๊ธ๊น์ง ๋ค๋ฃฌ ์๋ฃ๊ตฌ์กฐ -> ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ ๋ฐ์ดํฐ
- ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ DB์ ํ์ผ์์คํ ์ ๋น ์ค ์๋ฏธ ์์ด์ง
- ์๋ฃ๊ตฌ์กฐ๋ฅผ HWํน์ฑ๊ณผ ์ ๋ง๋ฌผ๋ ค ๋ณํํ๋ค๋ฉด ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น๋ก ์ฝ์ , ํ์, ์ญ์ ์ ์ฑ๋ฅ ํฅ์ ๊ฐ๋ฅ
- โDB์ ์ ๊ทผํ๋ ํ์๋ฅผ ์ค์ฌ๋ผโ
- ํ๋ก์ธ์ค ์์ ์ HDD์์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์จ ํ ์ด ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋จ ์ํํ๊ธฐ ๋๋ฌธ
- ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์๋ฃ๊ตฌ์กฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๊ณ
- DB๋ ์ต๋ํ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ๋ฟ HDD๊ฐ ๊ฐ๋ HW์ ํ๊ณ๋ฅผ ๋ฐ์ด๋๋ ๊ฒ์ ์๋
- DB๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
, ํ์, ์ญ์ ํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ
- B ํธ๋ฆฌ
- B+ ํธ๋ฆฌ
2. B ํธ๋ฆฌ
- m-way ํ์ ํธ๋ฆฌ์ ์ผ์ข
- m: ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ์์ ๊ฐ์
- BST
- 2-way ํ์ ํธ๋ฆฌ
- ์์์ ๋์ด์ง๋ง ๋ ธ๋๊ฐ ๊ฐ์ง๋ ํค๋ ํ๋
- m-1๋ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ํค ๊ฐ์
1) key
- ๋ ธ๋์ ํค๊ฐ ํ๋์ผ ๋์ ์ฌ๋ฌ ๊ฐ์ผ ๋ ์ฐจ์ด
- m์ด ์ปค์ง๋ฉด์ ํธ๋ฆฌ ๋์ด๊ฐ ์ค์ด๋ฌ
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์๊ฐ ์ค์๋ค๋ ๋ป
- ๋น๊ต ์ฐ์ฐ ํ์๋ ๋์ด๋จ
- ๊ฒฐ๊ตญ ์ฑ๋ฅ์ ๋น์ทํ์ง ์๋?
- ์๋
- ์ด ์๋ฃ๊ตฌ์กฐ๊ฐ HDD์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ
- ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ฌ ๋ 40ํด๋ญ ์์ / HDD์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ฌ ๋ 50๋ง ํด๋ญ ์์
2) ๊ฒฐ๋ก
- HDD์ ์์ฃผํ๋ ์๋ฃ๊ตฌ์กฐ ์ค๊ณํ๋ ค๋ฉด ํ ๋ ธ๋์ ์ต๋ํ ๋ง์ ํค๋ฅผ ๋ด์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์๋ฅผ ์ค์ฌ์ผ ํจ
- ๊ทธ๋ ๋ค๊ณ ๋ ธ๋ ํฌ๊ธฐ ๋ฌด์์ ๋๋ฆด ์ ํ๋ฒ์ ํ ๋ ธ๋๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ๋จ
3) m-way ํ์ ํธ๋ฆฌ
- ์๋ธํธ๋ฆฌ๋ฅผ ์ต๋ m๊ฐ ๊ฐ์ง๋ค.
- ํ ๋ ธ๋์์ key๋ ์ ๋ ฌ๋์ด ์๋ค.
- ์ด๋ค ํค K์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ๋ชจ๋ ํค๋ K๋ณด๋ค ์๋ค.
- ์ด๋ค ํค K์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋ชจ๋ ํค๋ K๋ณด๋ค ํฌ๋ค.
- ์๋ธํธ๋ฆฌ๋ m-way ํ์ ํธ๋ฆฌ์ด๋ค.
- 2 <= ๋ฃจํธ ๋ ธ๋์ ์๋ธํธ๋ฆฌ ๊ฐ์ <= m
- math.ceil(m/2) <= ๋ฃจํธ๋ฅผ ์ ์ธํ ๋ ธ๋์ ์๋ธ ํธ๋ฆฌ ๊ฐ์ <= m
- math.ceil(m/2)-1 <= ๋ฃจํธ๋ฅผ ์ ์ธํ ๋ ธ๋์ ํค ๊ฐ์ <= m-1
- ๋ชจ๋ ๋ฆฌํ๋ ธ๋๋ ๊ฐ์ ๋ ๋ฒจ์ ์๋ค.
3. ์ฝ์ , ์ญ์ ์ฐ์ฐ
1) ์ฝ์
- ์๋ฌด ๊ฒ๋ ์์์ ๋ ์ต์ด ๋ ์ฝ๋ 1 ์ฝ์
- ์ฒซ ๋ฒ์งธ ๋ ์ฝ๋ ์ฝ์ ๋๋ฉด ํค 1์ ๊ฐ์ง ๋ฃจํธ๋ ธ๋๊ฐ ๋ง๋ค์ด์ง
- ๋ฃจํธ ๋ ธ๋ ์ด์ ๋ฆฌํ ๋ ธ๋
- ๋ ๋ฒ์งธ ๋ ์ฝ๋ ์ฝ์
- ํค 2๊ฐ ๋ฃจํธ ๋ ธ๋์ ์ถ๊ฐ
- split
- ๋ ธ๋ ๋์ 3 ์ฝ์ ์ ์ต๋ ํค ๊ฐ์๋ฅผ ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ถ๋ฆฌ์์ผ์ผ ํจ
- ๊ฐ์ด๋ฐ ํค 2๋ฅผ ์๋ก์ด ๋ ธ๋์ ์ฝ์ ํ์ฌ ๋ถ๋ชจ๋ก ์ฌ๋ฆผ
- ํค 1์ด ์๋ ๋ ธ๋๋ ํค 2๊ฐ ์๋ ๋ ธ๋์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ก ๋ง๋ฌ
- ํค 3์ด ์๋ ๋ ธ๋๋ ํค 2๊ฐ ์๋ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ก ๋ง๋ฌ
- ์ต์ข ์ ์ผ๋ก ํธ๋ฆฌ ๋์ด ๋์์ง
- ๋ถ๋ชจ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ split
- ํค 5๊ฐ ์ฝ์ ๋๋ฉด ํค 4 ๋ค์ ํค 5 ์ถ๊ฐ -> ์ต๋ ํค ๊ฐ์ ๋๊น
- ๋ ธ๋์์ ๊ฐ์ด๋ฐ ํค ๊ฐ์ธ 4๊ฐ ๋ถ๋ชจ๋ ธ๋๋ก ์ฌ๋ผ๊ฐ ํค 2๋ค์ ์ฝ์
- ํค 3์ ํค 4์ ์ผ์ชฝ ์์์ด๋๊ณ ํค 5๋ ํค 4์ ์ค๋ฅธ์ชฝ ์์์ด ๋จ
- ๋ฐ์ดํฐ ์ฐ์ ์ถ๊ฐ ์ ๋ถ๋ชจ๋ ธ๋๋ ์ต๋ ํค ๊ฐ์ ๋๊ธธ ๊ฒฝ์ฐ ๋ถ๋ชจ ๋ ธ๋๋ ์ฐ์์ split ์งํ
2) ์ญ์
- B ํธ๋ฆฌ์์ ํค ์ญ์ ๋ ํฅ์ ๋ฆฌํ๋ ธ๋์์ ์งํ
- ๋ฆฌํ ๋ ธ๋๊ฐ ์๋ ๋ ธ๋์์ ํค ์ญ์ ํด์ผ ํ ์ ๋์ฒด ํค๋ฅผ ๋ฐ๊พผ ํ ์ญ์ ์งํ
- ์์ ๋
ธ๋์์ ํค 6์ ์ญ์ ํ๋ค๊ณ ๊ฐ์
- ํค 6์ด ์๋ ๋ ธ๋๋ ๋ฆฌํ๋ ธ๋๊ฐ ์๋๋ฏ๋ก ๋์ฒด ํค๋ฅผ ์ฐพ์์ผํจ
- ๋์ฒด ํค๋ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ํฐ ํค์ธ 5๊ฐ ๋จ (๋ ํฐ ํค ์์ผ๋ฉด ๊ทธ ํค๊ฐ ๋์ฒด ํค๊ฐ ๋จ)
- ๊ทธ ํ ํค 6 ๋ ธ๋ ์ญ์
- ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ๋๋ค.
- m=3 ์ธ 3-way ํธ๋ฆฌ๋ ์ต์ํ ์๋ธํธ๋ฆฌ๊ฐ 2๊ฐ๋ ์์ด์ผ ํจ
- ์๋ธํธ๋ฆฌ ํน์ฑ ๊นจ์ง
- donate (ํ์ ์ฐ์ฐ)
- ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋์ ๋ ธ๋์ ์ต์ ํค ๊ฐ์๋ฅผ ์ถฉ์กฑํ ํ ๋จ๋ ํค๊ฐ ์๋์ง ์ง์ (์ฌ๊ธฐ์๋ ํค๊ฐ 2๊ฐ์ด์์ธ ๋ ธ๋๊ฐ ์๋์ง)
- ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋์ ํค๊ฐ 7๊ณผ 8 ๋ ๊ฐ๊ฐ ์์ด์ ์ต์ ํค ๊ฐ์ ํ ๊ฐ๋ฅผ ๋นผ๋ ํ ๊ฐ๊ฐ ๋จ๋๋ค -> ๋น ๋ ธ๋๋ก donate ๊ฐ๋ฅ
- ๋
ธ๋์ ๊ฐ์ฅ ์์ ํค 7์ ๋น ๋
ธ๋๋ก ๋ฐ๋ก ์ฃผ๋ฉด ํธ๋ฆฌ ๊ท์น ๊นจ์ง
- ๋ถ๋ชจ ๋ ธ๋์ ํค 5๊ฐ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก ๊ฐ๊ณ 7์ด ๋ถ๋ชจ ๋ ธ๋๋ก ๊ฐ๋ค.
- ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ๋๋ค.
- ํค 5 ์ญ์ ์
- ํค 7์ ๋ ธ๋ ์๋ธ ํธ๋ฆฌ 1๊ฐ -> ์๋ธ ํธ๋ฆฌ ํน์ฑ ์๋ฐ
- donate ๋ถ๊ฐ
- merge
- ํด๋น ๋ ธ๋์ ์ค๋ฅธ์ชฝ (๋๋ ์ผ์ชฝ) ์์๋ ธ๋์ ์๋ ํค ๊ฐ๊ณผ ๋ถ๋ชจ๋ ธ๋์ ํค ๊ฐ์ ๋ชจ์ผ๋ ์์
- ๊ณต๋ฐฑ์ด ๋ ๋ ธ๋๋ ์ ๊ฑฐ
- ํธ๋ฆฌ๊ตฌ์กฐ ๋ณ๊ฒฝ๋จ
- ํค 7๊ณผ ํค 8์ ๊ฐ์ง ๋
ธ๋๊ฐ ๋ณํฉ๋จ
- ๋ถ๋ชจ ๋ ธ๋๊ฐ ๋น ๋ ธ๋ - donate ๋ถ๊ฐ๋ฅ, ๋ค์ merge
- ๋ถ๋ชจ ๋ ธ๋์ ํค 4๊ฐ ํค 2๋ฅผ ๊ฐ์ง ๋ ธ๋์ ๋ง์ง๋ง์ ์ฝ์
4. B+ ํธ๋ฆฌ
- Bํธ๋ฆฌ์ ๋ณํ์ผ๋ก ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ B+ํธ๋ฆฌ๋ก ๊ตฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ๋
ธ๋๋ ์ธ๋ฑ์ค ๋
ธ๋์ ๋ฐ์ดํฐ ๋
ธ๋๋ก ๊ตฌ์ฑ
- ๋ฆฌํ ๋ ธ๋๋ ๋ค ๋ฐ์ดํฐ ๋ ธ๋. ์ฆ, ๋ฆฌํ๋ ธ๋์ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ด ๋ด๊ฒจ์์
- ๋ชจ๋ ๋ฆฌํ๋
ธ๋๊ฐ ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ ํํ๋ฅผ ๋๊ณ ์์
- Bํธ๋ฆฌ๋ ์์ ์๋ ๋ฆฌํ๋ ธ๋ ๊ฒ์ฌํ ๋ ๋ค์ ๋ฃจํธ๋ ธ๋๋ถํฐ ๊ฒ์ฌ
- B+ ํธ๋ฆฌ๋ ๋ฆฌํ๋ ธ๋์์ ์ ํ๊ฒ์ฌ ์ํ ๊ฐ๋ฅ
- ์ธ๋ฑ์ค ๋
ธ๋์ ํค๋ค์ด ๋ฐ์ดํฐ ๋
ธ๋์์ ์ค๋ณตํด์ ๋ํ๋จ
- ํด๋น ํค์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ์์ ํค๊ฐ ์์ด์ผ ํ ๊ณณ์ ํด๋น ํค๊ฐ ์ค๋ณต๋์ด ๋ํ๋จ
- ์ธ๋ฑ์ค ๋ ธ๋๋ผ๋ฆฌ๋ ์ค๋ณต X
5. index
https://velog.io/@syleemk/%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B8%EB%8D%B1%EC%8A%A4