๐Ÿ—„ B+Tree ์ธ๋ฑ์Šค

Contents

๊ฐœ์š”

์›น ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  ๋„์„œ๋ฅผ ์ฝ๊ณ  B+Tree ์ธ๋ฑ์Šค ๋ถ€๋ถ„์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ธ๋ฑ์Šค๊ฐ€ ์–ด๋– ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ  ์–ด๋–ป๊ฒŒ ๊ฒ€์ƒ‰์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

B+Tree ์ธ๋ฑ์Šค๋ž€?

B+Tree Index

B+Tree ์ธ๋ฑ์Šค๋Š” Tree ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ ์ธ๋ฑ์Šค์ด๋‹ค. ์ •์ƒ์ด ๋ฃจํŠธ(root) ๋ธ”๋ก, ์ตœํ•˜์ธต์ด ๋ฆฌํ”„(leaf) ๋ธ”๋ก์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ๊ทธ ์‚ฌ์ด์— ๋ธŒ๋žœ์น˜(branch) ๋ธ”๋ก์ด ๋“ค์–ด๊ฐ„๋‹ค. ๋ฃจํŠธ ๋ธ”๋ก๊ณผ ๋ธŒ๋žœ์น˜ ๋ธ”๋ก์€ ๊ฒ€์ƒ‰ ํ‚ค์— ๋Œ€ํ•ด ํ•ด๋‹น ๋ธ”๋ก์ด ์–ด๋””์— ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ธ๋ฑ์Šค ๊ฒ€์ƒ‰ ์‹œ์—๋Š” ๋ฃจํŠธ โ†’ ๋ธŒ๋žœ์น˜ โ†’ ๋ฆฌํ”„ ์ˆœ์œผ๋กœ ๋„๋‹ฌํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ์ ์œผ๋ฉด ๋ฃจํŠธ๊ฐ€ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฒธํ•˜๋ฉฐ, ๋ฃจํŠธ์™€ ๋ฆฌํ”„๋ฐ–์— ์—†๋Š” ํŒจํ„ด๋„ ์กด์žฌํ•œ๋‹ค.

ํ•œํŽธ, ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ๋งค์šฐ ๋งŽ์€ ๊ฒฝ์šฐ ๋ธŒ๋žœ์น˜ ์•„๋ž˜์— ๋ธŒ๋žœ์น˜๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” 4๊ณ„์ธต ์ด์ƒ์˜ ๊ตฌ์„ฑ์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ธŒ๋žœ์น˜ ์ธต๋„ ๋Š˜์–ด๋‚˜๊ณ  ๊ณ„์ธต๋„ ๋Š˜์–ด๋‚˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

๋‹ค๋ถ„๊ธฐ ํŠธ๋ฆฌ์™€ ์ด์ง„ ํŠธ๋ฆฌ

๋ธŒ๋žœ์น˜ ๋ฐ ๋ฆฌํ”„์˜ ๋ถ„๊ธฐ ๊ฐœ์ˆ˜๊ฐ€ ๋‘ ๊ฐœ๋ฐ–์— ์—†๋Š” ๊ฒƒ์„ ํŠน๋ณ„ํžˆ ์ด์ง„ ํŠธ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค. B+Tree๋Š” ๋‹ค๋ถ„๊ธฐ ํŠธ๋ฆฌ๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋ฉฐ, ๋ถ„๊ธฐ ๊ฐœ์ˆ˜๊ฐ€ ๋‘ ๊ฐœ ์ •๋„๊ฐ€ ์•„๋‹Œ ์ˆ˜์‹ญ ๊ฐœ์—์„œ ์ˆ˜๋ฐฑ ๊ฐœ์— ๊ฑธ์น˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ๋ถ„๊ธฐ ๊ฐœ์ˆ˜๋ฅผ ๋งŽ์ด ํ•˜๋Š” ์ด์œ ๋Š” ๊ณ„์ธต์˜ ๋‹จ์ˆ˜๋ฅผ ์ค„์—ฌ์„œ ์•ก์„ธ์Šค ํšŸ์ˆ˜๋ฅผ ์ ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ N๊ณ„์ธต๋‹น 2^N๊ฐœ๋ฐ–์— ๊ธฐ๋ก์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค. ์ด์ง„ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ ˆ์ฝ”๋“œ ์ˆ˜ N๋‹น ํƒ์ƒ‰์— ํ•„์š”ํ•œ ๊ณ„์‚ฐ๋Ÿ‰์ด O(log~2N)์ด ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. O(N)๊ณผ๋Š” ๋น„๊ต๊ฐ€ ๋˜์ง€ ์•Š์„ ์ •๋„๋กœ ํšจ์œจ์ด ์ข‹์ง€๋งŒ, ํ•ด์‹œ ์ธ๋ฑ์Šค O(1)๊ณผ ๋น„๊ตํ•˜๋ฉด ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. B+Tree์™€ ๊ฐ™์€ ๋‹ค๋ถ„๊ธฐ์˜ ํŠธ๋ฆฌ ๊ตฌ์„ฑ์„ ์ทจํ•จ์œผ๋กœ์จ O(log~mN)์˜ ๊ณ„์‚ฐ๋Ÿ‰์ด ๋˜์–ด ์•ก์„ธ์Šค ์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

B+Tree์™€ B-Tree

B-Tree๋ผ๋Š” ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋„ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋ชจ๋“  ๊ฐ’์„ ๋ฆฌํ”„ ๋ธ”๋ก์—์„œ๋งŒ ๊ฐ–๋„๋ก ์ œํ•œํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ธŒ๋žœ์น˜์—์„œ๋„ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‹ค. B-Tree ์ธ๋ฑ์Šค์— ๋น„ํ•˜๋ฉด B+Tree ์ธ๋ฑ์Šค๋Š” ์–ด๋–ค ๊ฒ€์ƒ‰์ด๋ผ๋„ ๋ฃจํŠธ์—์„œ ๋ฆฌํ”„๊นŒ์ง€ ๊ฑฐ์น˜์ง€ ์•Š์œผ๋ฉด ์—ด์˜ ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ณด๋‹ค ์ปดํŒฉํŠธํ•˜๋ฏ€๋กœ ์ธ๋ฑ์Šค ์ž์ฒด์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ž‘๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ฆ‰, ์ตœ์•…์˜ ๊ฒฝ์šฐ ์•ก์„ธ์Šค ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋˜ํ•œ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๊ฑธ์นœ ๊ฒ€์ƒ‰์—์„œ๋Š” ์ž๊ธฐ ์ž์‹ ์˜ ๋ฆฌํ”„ ๋ธ”๋ก ๋ฟ์ด๋ผ๋ฉด ์•ก์„ธ์Šค๊ฐ€ ์™„๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. B+Tree ์ธ๋ฑ์Šค์—์„œ๋Š” ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ์ฃผ๋ณ€์˜ ๋ฆฌํ”„ ๋ธ”๋ก์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€ ์•ก์„ธ์Šคํ•ด ๋‚˜๊ฐ์œผ๋กœ์จ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. B-Tree ์ธ๋ฑ์Šค์˜ ๊ฒฝ์šฐ ๋ฆฌํ”„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ธŒ๋žœ์น˜์—์„œ๋„ ํ‚ค ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋ณ€์˜ ๋ฆฌํ”„๊ฐ€ ์•„๋‹Œ ๋ธŒ๋žœ์น˜๋กœ ๋˜๋Œ์•„๊ฐ€ ๊ฐ’์˜ ์กด์žฌ ํ™•์ธ์„ ์‹ค์‹œํ•˜๊ณ  ๊ทธ ์œ„์˜ ๋ธŒ๋žœ์น˜๋กœ ๋Œ์•„๊ฐ€๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ๋ฆฌํ”„๋กœ ๊ฐ€๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฑฐ์ณ์•ผ๋งŒ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ B+Tree ์ธ๋ฑ์Šค๋ผ๋ฉด ๋ฆฌํ”„ ๋ธ”๋ก์—์„œ ์ธ์ ‘ํ•œ ๋ฆฌํ”„ ๋ธ”๋ก์œผ๋กœ ๊ฑด๋„ˆ๊ฐ€๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๊ฐ’์˜ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ํšจ์œจ์ ์ด๋‹ค.

B+Tree ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋“ฑํ˜ธ ๊ฒ€์ƒ‰์€ ๋ฌผ๋ก  ๋ถ€๋“ฑํ˜ธ๋‚˜ ์ „๋ฐฉ ์ผ์น˜ ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๋ฒ”์œ„ ๊ฒ€์ƒ‰๋„ ๋ฆฌํ”„ ๋ธ”๋ก์„ ์Šค์บ”ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ (๋ธŒ๋žœ์น˜๋ฅผ ๊ทธ๋•Œ๋งˆ๋‹ค ๊ฑฐ์ณ ๋‚˜๊ฐˆ ํ•„์š” ์—†์ด) ์™„๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๊ทธ๋งŒํผ ๊ณ ์†์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋†’์€ ์œ ์—ฐ์„ฑ์ด B+Tree๊ฐ€ ๋„๋ฆฌ ์ด์šฉ๋˜์–ด ์˜จ ์ปค๋‹ค๋ž€ ์ด์œ ๋‹ค.

๋‹ค์Œ์€ B-Tree์™€ B+Tree์˜ ์ฐจ์ด์ ์„ ์ •๋ฆฌํ•œ ํ…Œ์ด๋ธ”์ด๋‹ค.

๊ตฌ๋ถ„ B-Tree B+Tree
๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ ์œ„์น˜ ๋ธŒ๋žœ์น˜์™€ ๋ฆฌํ”„ ๋…ธ๋“œ ๋ฆฌํ”„ ๋…ธ๋“œ
๊ฒ€์ƒ‰ ์‹œ๊ฐ„ ๋ชจ๋“  ํ‚ค๋ฅผ ๋ฆฌํ”„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ ๋ชจ๋“  ํ‚ค๊ฐ€ ๋ฆฌํ”„ ๋…ธ๋“œ์— ์žˆ์œผ๋ฏ€๋กœ ๋” ๋น ๋ฆ„
์ค‘๋ณต ํ‚ค ์—†์Œ ์žˆ์„ ์ˆ˜ ์žˆ์Œ
์‚ฝ์ž… ์‹œ๊ฐ„ ๋Š๋ฆผ ๋น ๋ฆ„
๋…ธ๋“œ ์‚ญ์ œ ์–ด๋ ค์›€ ์‰ฌ์›€

References


Written by@ugaemi
Record things I want to remember

๐Ÿฑ GitHub๐Ÿ“š Reading Space