Class 15
Class 15
Tree-Structured Indices
ISAM P
0
K
1 P
1
K 2 P
2
K m Pm
Non-leaf
Pages
Leaf
Pages
Overflow
page
Primary pages
20 33 51 63
10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
Comments on ISAM Data Pages
Index Pages
File creation: Leaf (data) pages allocated
sequentially, sorted by search key; then index
pages allocated, then space for overflow pages.
Overflow pages
Index entries: <search key value, page id>; they
`direct’ search for data entries, which are in leaf pages.
Search: Start at root; use key comparisons to go to leaf.
Cost log F N ; F = # entries/index pg, N = # leaf pgs
Insert: Find leaf data entry belongs to, and put it there.
Delete: Find and remove from leaf; if empty overflow
page, de-allocate.
Pages
20 33 51 63
Primary
Leaf 46* 55*
10* 15* 20* 27* 33* 37* 40* 51* 63* 97*
Pages
Pages
42*
... Then Deleting 42*,
51*, 97*
Root
40
20 33 51 63
10* 15* 20* 27* 33* 37* 40* 46* 55* 63*
Index Entries
(Direct search)
Data Entries
("Sequence set")
Example B+ Tree
24* ... 13 17 24 30
2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
1
Inserting a Data Entry into a
B+ Tree
Find correct leaf L.
Put data entry onto L.
– If L has enough space, done!
– Else, must split L (into L and a new node L2)
Redistribute entries evenly, copy up middle key.
Insert index entry pointing to L2 into parent of L.
This can happen recursively
– To split index node, redistribute entries evenly, but
push up middle key. (Contrast with leaf splits.)
Splits “grow” tree; root split increases height.
– Tree growth: gets wider or one level taller at top.
1
Inserting 8* into Example B+
Tree
Entry to be inserted in parent node.
Observe how 5 (Note that 5 is
s copied up and
minimum continues to appear in the leaf.)
occupancy is
guaranteed in 2* 3* 5* 7* 8*
both leaf and
index pg splits.
Note difference
between copy- Entry to be inserted in parent node.
(Note that 17 is pushed up and only
up and push- 17
appears once in the index. Contrast
this with a leaf split.)
up; be sure you
understand the
5 13 24 30
reasons for this.
1
Example B+ Tree After
Inserting 8*
Root
17
5 13 24 30
2* 3* 5* 7* 8* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
1
Example Tree After (Inserting
8*, Then) Deleting 19* and
20* ...
Root
17
5 13 27 30
2* 3* 5* 7* 8* 14* 16* 22* 24* 27* 29* 33* 34* 38* 39*
1
Summary
Tree-structured indexes are ideal for range-
searches, also good for equality searches.
ISAM is a static structure.
– Performance can degrade over time.
B+ tree is a dynamic structure.
– Inserts/deletes leave tree height-balanced; log F N
cost.
– High fanout (F) means depth rarely more than 3
or 4.
– Almost always better than maintaining a sorted
file.
1
Summary (Contd.)