24-Multi-Level Indexing, Dynamic Multilevel Indexing, B-Tree-11-09-2024
24-Multi-Level Indexing, Dynamic Multilevel Indexing, B-Tree-11-09-2024
• Result
– tree is O(log M) deep
– all operations run in O(log M) time
– operations pull in about M items at a time
Searching
Searching in B Trees is similar to that in Binary search tree.
For example, if we search for an item 49 in the following B
Tree. The process will something like following :
Compare item 49 with root node 78. since 49 < 78 hence,
move to its left sub-tree.
Since, 40<49<56, traverse right sub-tree of 40.
49>45, move to right. Compare 49.
match found, return.
Searching in a B tree depends upon the height of the tree.
The search algorithm takes O(log n) time to search any
element in a B tree.
Inserting
Insertions are done at the leaf node level. The following
algorithm needs to be followed in order to insert an item into B
Tree.
Traverse the B Tree in order to find the appropriate leaf node at
which the node can be inserted.
If the leaf node contain less than m-1 keys then insert the
element in the increasing order.
Else, if the leaf node contains m-1 keys, then follow the
following steps.
Insert the new element in the increasing order of elements.
Split the node into the two nodes at the median.
Push the median element upto its parent node.
If the parent node also contain m-1 number of keys, then split
it too by following the same steps.
Insert the node 8 into the B Tree of order 5
shown in the following image.
The node, now contain 5 keys which is greater than (5 -1 = 4 )
keys. Therefore split the node from the median i.e. 8 and push it
up to its parent node shown as follows.
Deletion
Deletion is also performed at the leaf nodes. The node which is
to be deleted can either be a leaf node or an internal node.
Following algorithm needs to be followed in order to delete a
node from a B tree.
Locate the leaf node.
If there are more than m/2 keys in the leaf node then delete the
desired key from the node.
If the leaf node doesn't contain m/2 keys then complete the keys
by taking the element from right or left sibling.
If the left sibling contains more than m/2 elements then push
its largest element up to its parent and move the intervening
element down to the node where the key is deleted.
If the right sibling contains more than m/2 elements then push
its smallest element up to the parent and move intervening
element down to the node where the key is deleted.
If neither of the sibling contain more than m/2 elements then
create a new leaf node by joining two leaf nodes and the
intervening element of the parent node.
If parent is left with less than m/2 nodes then, apply the above
process on the parent too.
If the node which is to be deleted is an internal node, then
replace the node with its in-order successor or predecessor.
Since, successor or predecessor will always be on the leaf node
hence, the process will be similar as the node is being deleted
from the leaf node.
Example
Delete the node 53 from the B Tree of
order 5 shown in the following figure.
1040
3 152030 50
25 28 30
Fits inside the
leaf
Insertion
Result:
Insertion
Example #2: insert 70 into below tree
Insertion
Process: split the leaf and propagate middle
key up the tree
50 55 60 65 70
Does not fit
inside the
leaf
50 55 60 65 70
Insertion
Result: chose the middle key 60, and place
it in the index page between 50 and 75.
Insertion
The insert algorithm for B+ Tree
Leaf Index Node Action
Node Full Full
NO NO Place the record in sorted position in the appropriate leaf page
IF the next level index node is full, continue splitting the index nodes.
Insertion
Exercise: add a key value 95 to the below
tree.
75 80 85 90 95
Leaf node
full, split the
75 80 85 90 95 25 50 60 75 85
leaf.
Insertion
Result: again put the middle key 60 to the
index page and rearrange the tree.
Deletion
Same as insertion, the tree has to be rebuild if
the deletion result violate the rule of B+ tree.
Example #1: delete 70 from the tree
OK. Node
>=50% full 60 65
Deletion
Result:
Deletion
Example #2: delete 25 from below tree, but 25
appears in the index page.
But…
28 30
This is
OK.
Deletion
Result: replace 28 in the index page.
Add 28
Deletion
Example #3: delete 60 from the below tree
65
Less than
50 55 65 50% full
Deletion
Result: delete 60 from the index page and
combine the rest of index pages.
Deletion
Delete algorithm for B+ trees