You are on page 1of 18

Insertions and deletions in B+ trees

Introduction to Database Design 2011, Lecture 11 Supplement to lecture slides

Rasmus Ejlers Mgelberg

Initial setup

We consider the B+ tree below

judy

rick

bob

jane

mike

pete

tom

abe

al

bob

eddie

jane

joe

judy

karen

mike

nan

pete

phil

rick

sol

tom

Rasmus Ejlers Mgelberg

Observations

Observe that the tree has fan out 3 Invariants to be preserved

Leafs must contain between 1 and 2 values Internal nodes must contain between 2 and 3 pointers Root must have between 2 and 3 pointers Tree must be balanced, i.e., all paths from root to a leaf must be of same length

Rasmus Ejlers Mgelberg

Inserting Vince

judy

rick

bob

jane

mike

pete

tom

abe

al

bob

eddie

jane

joe

judy

karen

mike

nan

pete

phil

rick

sol

tom

vince

Rasmus Ejlers Mgelberg

Inserting Vera

Leaf consisting of tom and vince is split and extra pointer is inserted in parent
judy rick

bob

jane

mike

pete

tom

vince

abe

al

bob

eddie

jane

joe

judy

karen

mike

nan

pete

phil

rick

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

Inserting rob

Inserting rob is more difcult. We rst create a new leaf node and insert it as below The node above is temporarily extended to contain 4 pointers
judy rick

bob

jane

mike

pete

sol

tom

vince

abe

al

bob

eddie

jane

joe

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

Inserting rob

The overfull internal node is then split in 2 The new pointer is inserted into the root node which then becomes overfull
judy rick tom

bob

jane

mike

pete

sol

vince

abe

al

bob

eddie

jane

joe

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

Inserting rob

Finally the overfull root is split in 2 At this point the tree satises the requirements of slide 3 and so the insertion procedure ends
rick

judy

tom

bob

jane

mike

pete

sol

vince

abe

al

bob

eddie

jane

joe

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

Deleting jane

Is straight forward Note that the node above the leaf where jane was deleted must also be updated
rick

judy

tom

bob

joe

mike

pete

sol

vince

abe

al

bob

eddie

joe

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

Deleting bob

rick

judy

tom

eddie

joe

mike

pete

sol

vince

abe

al

eddie

joe

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

10

Deleting joe

Leads to a leaf being deleted and the parent being updated


rick

judy

tom

eddie

mike

pete

sol

vince

abe

al

eddie

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

11

Deleting eddie

Leads to deletion of a leaf At this point the parent becomes underfull


rick

judy

tom

mike

pete

sol

vince

abe

al

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

12

Deleting eddie

When a node becomes underful the algorithm will try to redistribute some pointers from a neighbouring sibling to it. Since this is possible in this case we do it
rick

mike

tom

judy

pete

sol

vince

abe

al

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

13

Deleting abe and al

Leads to deletion of a leaf This makes the parent underfull. We cannot redistribute pointers again since this will make the neighbour underfull
rick

mike

tom

pete

sol

vince

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

14

Deleting abe and al

Instead we must merge with the neighbouring sibling But this makes the parent underfull
rick

tom

mike

pete

sol

vince

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

15

Deleting abe and al

Since we can not solve this problem by redistributing pointers we must merge siblings again

rick

tom

mike

pete

sol

vince

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

16

Deleting abe and al

Since the root is underfull it can be deleted The resulting tree satises the requirements and so the deletion algorithm ends
rick tom

mike

pete

sol

vince

judy

karen

mike

nan

pete

phil

rick

rob

sol

tom

vera

vince

Rasmus Ejlers Mgelberg

17

General remarks

When a node becomes underfull the algorithm will try to redistribute pointers from the neighbouring sibling either on the left or the right If this is not possible, it should merge with one of them The value held in an internal node or the root should always be the smallest value appearing in a leaf of the subtree pointed to by the pointer after the value

Rasmus Ejlers Mgelberg

18

You might also like