# B+tree Extensions
B+Tree File Organization
- ๋ฆฌํ ๋
ธ๋์ ํฌ์ธํฐ๊ฐ ์๋ ๋ ์ฝ๋ ์์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์
- ์ฝ์
/์ญ์ /๊ฐฑ์ ์ด ์ผ์ด๋๋๋ผ๋ ํญ์ Clustered๋ ์ํ๋ฅผ ์ ์งํ๊ฒ ํด์ค๋ค.
- ๋ ์ฝ๋๊ฐ ํฌ์ธํฐ๋ณด๋ค ์ฌ์ด์ฆ๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ๋ฆฌํ ๋
ธ๋์ ๋ค์ด๊ฐ๋ ๋ ์ฝ๋์ ์ต๋ ์๋ ๋ฆฌํ ๋
ธ๋๊ฐ ์๋ ๋
ธ๋๋ค์ ํฌ์ธํฐ ์๋ณด๋ค ์์ ์ ๋ฐ์ ์๋ค.
- ๋ฐ๋ผ์ ๊ณต๊ฐ ํ์ฉ๋๊ฐ ์ค์ํ๋ฐ ์ด๋ฅผ ์ํด์ ๊ฐ๋ฅํ ๋ง์ Siblings๋ฅผ Split/Merge์ ํฌํจ์ํค๊ฒ ๋๋ค.
- ๊ทธ ๊ฒฐ๊ณผ m๊ฐ์ sibling๋
ธ๋๊ฐ ์ฌ๋ถ๋ฐฐ์ ์ฐธ์ฌํ๋ค๋ฉด ๊ฐ ๋
ธ๋๋ง๋ค ์ต์⌊(m-1)n/m⌋๊ฐ์ ์ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
- ํ์ง๋ง ์ด ๊ฒฝ์ฐ ๋ฆฌํ ๋
ธ๋์ ์๋ ๋ ์ฝ๋๊ฐ ๋
ธ๋ ์ฌ์ด์ฆ๋ณด๋ค ์ปค์ ธ์ Split์ ํด์ผํ๋ค๋ฉด, ๋ ์ฝ๋๋ฅผ ์ด๋ ์ํค๋ ๋น์ฉ์ ๋๋ฌด ๋น์ธ๋ค.
- ๋ฐ๋ผ์, ๋ฆฌํ๋
ธ๋๊ฐ ์๋ ๋
ธ๋์ ํฌ์ธํฐ ๋์ key๊ฐ์ ์ถ๊ฐํ์ฌ ๋ฆฌํ ๋
ธ๋์์ Split์ด ์ผ์ด๋๋๋ผ๋ index ๋
ธ๋๋ค์๋ ๊ฐฑ์ ์ด ํ์์๋๋ก ๋ง๋ค ์ ์๋ค.
- ์๋๋ฉด ๋ง์ฝ key๊ฐ์ด Uniqueํ์ง ์๋ค๋ฉด ๋ค๋ฅธ ์์ฑ์ ์ถ๊ฐํด์ Uniqueํ๋๋ก ๋ง๋๋๊ฒ ์ข๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ์ฟผ๋ฆฌ ํ๋๊ฒ๋ ์ข ๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ์ง๋ง, ๋ฐ์ดํฐ ๊ฐฑ์ ์๋ ๋ ์ ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
Index Strings
- ํค ๊ฐ์ผ๋ก ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ๋ฐฉ์
- ๋
ธ๋์ ์ฌ์ด์ฆ๊ฐ ์ ํด์ ธ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ ํฌ๊ธฐ๋ฅผ ์ ์ ์์ผ๋ฏ๋ก Fanout์ ์ ํด๋ ์ ์๋ค.
- ๋ฐ๋ผ์, ๋ฌธ์์ด์ด ๊ธธ์ด์ง ์๋ก Fanout์ด ์์์ ธ ํธ๋ฆฌ ์ ์ฒด์ ๋์ด๊ฐ ๋์์ง๋ค.
- ํฌ์ธํฐ ์๋ณด๋ค ๊ณต๊ฐ ํ์ฉ๋๋ฅผ ๊ธฐ์ค์ผ๋ก Split์ด๋ Merge๊ฐ ์ด๋ฃจ์ด์ง๋ค.
- Prefix Compression
- ๋ฌธ์์ด์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด internal ๋
ธ๋๋ค์๋ ์ ์ฒด ๋ฌธ์์ด๋ณด๋ค๋ ์ ๋์ฌ๋ฅผ ํค๊ฐ์ผ๋ก ๋ ์ ์๋ค.
Bulk Loading
- ํ๋์ฉ B+tree์ ์ฝ์
ํ๊ฒ ๋๋ฉด ๋งค๋ฒ ํ์ผ I/O๊ฐ ์ผ์ด๋๊ฒ ๋์ด ๋งค์ฐ ๋นํจ์จ์ ์ด๋ค. ๋ง์ฝ, ๋ฆฌํ ๋
ธ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ฌ ์ ์๋ ์ฌ์ด์ฆ๋ผ๋ ํ๋ค๋ฉด ๋์ฑ ๋นํจ์จ์ ์ด๋ค.
- Solution 1 : ์ ๋ ฌํด์ ์์๋๋ก ์ฝ์
ํ๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ๋น์ด์๋ page์ ์์๋๋ก ์์ด๋ค๊ฐ Split์ด ์ผ์ด๋๊ฒ ๋๋ค.
- ๊ทธ๋ฌ๋ฉด ๋งค๋ฒ I/O๋ฅผ ๋งค๋ฒํ ํ์๊ฐ ์์ด์ง์ง๋ง, ๋๋ถ๋ถ์ ๋
ธ๋๊ฐ ์ ๋ฐ๋ง ์ฐจ๊ฒ ๋๋ค.
- Solution 2 : ์ํฅ์ B+Tree ๊ตฌ์กฐ
- ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ ฌ์ ํ ํ์ ๋ฆฌํ ๋
ธ๋๋จ๊ณ๋ถํฐ ์ฝ์
ํด๋๊ฐ๋ ๋ฐฉ์
- ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์ ํฐ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์์ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
Indexing on Flash
- ํ๋์ฌ ๋ฉ๋ชจ๋ฆฌ(20-100ms)๋ ๋ง๊ทธ๋คํฑ(5-10ms)๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ค.
- ํ์ง๋ง, ์ฐ๊ธฐ๊ฐ ๋๋ค์ผ๋ก ๋๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์ง์ฐ๋ ๊ณผ์ ์ด ๋ง์ด ๋ ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋์คํฌ์ ๋ธ๋ก ์ฌ์ด์ฆ๋ณด๋ค ํ๋์์ ํ์ด์ง ์ฌ์ด์ฆ๊ฐ ์๊ธฐ๋๋ฌธ์ ๋
ธ๋ ์ฌ์ด์ฆ๊ฐ ๋ ์์์ผ ํ๋ค.
- ์ํฅ์ B+Tree๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด, Eraseํ๋ ๊ณผ์ ์ด ์ ์ด์ง์ง ๋๋ฌธ์ ์ฑ๋ฅ์ด ํ์คํ ํฅ์๋๋ค.
- ์ธ์๋ ์ฌ๋ฌ ๋ณํ B+tree๊ตฌ์กฐ๊ฐ ์ง์ฐ๋ ๊ณผ์ ์ ์ค์ด๊ธฐ ์ํด ๋์์๋ค.
Indexing in Main Memory
- ์บ์ ๋๋ฝ์ ์ค์ด๊ธฐ ์ํด์๋ ์บ์์ ๋ง๋ ์๋ ๋
ธ๋๋ก ์ฌ๋ถ๋ฐฐํ๋๊ฒ ์ค์ํ๋ค. ๊ทธ๋์ผ Space overhead์์ด ์ฌ์ฉํ ์ ์๋ค.
- ํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก, ๋
ธ๋ ์ฌ์ด์ฆ๋ฅผ ํค์์ ๋์คํฌ ์ ๊ทผ์ ์ต์ํํ๋ ๊ฒ์ ์ข์ง๋ง, ์บ์ ๋๋ฝ์ ์ํด์๋ ํฐ ๋
ธ๋ ๋ด์ ์บ์ ์ฌ์ด์ฆ์ ๋ง๋ ์์ ๋
ธ๋๋ก ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ ๋จ์ ๋ฐฐ์ด๋ณด๋ค ์ข๋ค.