B Tree Basics - Slides
generated with: https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html, please feel free to explore!
A simple 2-way B+ tree
assumptions:
- non-decreasing order and max degree of 3
- elements(N) are 1, 2, 3, 4, 5
- **sibling pointers (B-link borrowed)
Insertion
Inserting, find target leaf and insert the keys 1
and 2
target == root.
[figure 1]
When we insert key 3
? we have our first overflow causing a split:
2
is promoted and contents are split in two, we recurse from the bottom up.
[figure 2]
What if we add key 4
our tree looks weird doesn’t it:
and now have to “rebalance” our tree with incoming key 5
:
[figure 3]
Search
searching is an Olog(N) operation!
just a reminder this is really powerful if n = 1 billion, dominance:
- lg(n) = 0.030 μs
- f(n) = 1 sec
- nlg(n) = 29.9 sec
- n ** 2 = 31.7 years
- 2 ** n = :/
with a branching factor of 1001 and height 3 can store over one billion keys: num keys = branching factor ^ height - 1 * branching factor - 1
point and range queries follow the same logarithmic path.
[figure 4]
Deletion
Let’s remove 4.
First we find 4 using binary search, then re-arrange our pointers and rebalance: [figure 5]
Rebalancing involves restoring our ordered structure and keeping pointers valid and performing a merge or (*redistribution.)