100% found this document useful (1 vote)
4K views

B+ Tree and Hashing

The document discusses B+ trees and hashing techniques for indexing data in databases. It covers the properties of B+ trees including their balanced structure, searching, insertion, and deletion algorithms. It also covers static hashing which maps keys to fixed buckets, and extendable hashing which allows the number of buckets to grow dynamically during insertions to avoid collisions.

Uploaded by

aismahesh
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
4K views

B+ Tree and Hashing

The document discusses B+ trees and hashing techniques for indexing data in databases. It covers the properties of B+ trees including their balanced structure, searching, insertion, and deletion algorithms. It also covers static hashing which maps keys to fixed buckets, and extendable hashing which allows the number of buckets to grow dynamically during insertions to avoid collisions.

Uploaded by

aismahesh
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

B+ Tree and Hashing

• B+ Tree Properties
• B+ Tree Searching
• B+ Tree Insertion
• B+ Tree Deletion
• Static Hashing
• Extendable Hashing
• Questions in pass papers
B+ Tree Properties
B+ Tree Properties
– Balanced Tree
• Same height for paths from root to leaf
• Given a search-key K, nearly same access time
for different K values
– B+ Tree is constructed by parameter n
• Each Node (except root) has n/2 to n pointers
• Each Node (except root) has n/2 -1 to n-1
search-key values
Case for n=3 General case for n
K1 K2 K1 K2 Kn-1
P1 P2 P3 P1 P2 Pn-1 Pn
B+ Tree Properties Tutorial 8.1
• Search keys are sorted in order
– K1 < K2 < … <Kn-1
•Non-leaf Node
–Each key-search values in subtree Si K1 K2
pointed by Pi < Ki, >=Ki-1 P1 P2 P3
Key values in S1 < K1
S1 S2 S3
K1 <= Key values in S2 < K2
•Leaf Node P3
K1 K2 …
–Pi points record or bucket with P 1 P 2

search key value Ki Record of K1 Record of K2


–Pn points to the neighbor leaf Record of K2
node …
B+ Tree Searching Tutorial 8.2
• Given a search-value k
– Start from the root, look for the largest search-
key value (Kl) in the node <= k
– Follow pointer Pl+1 to next level, until reach a
leaf node Kl<=k<Kl+1
K1 K2 … Kl Kl+1 Kn-1
P1 P2 P3 Pl+1 Pn-1 Pn
– If k is found to be equal to Kl in the leaf, follow
Pl to search the record or bucket K K l l+1
Record of Kl Pl k = Kl
Record of Kl


B+ Tree Insertion Tutorial 8.3
• Overflow
– When number of search-key values exceed n-1
7 9 13 15 Insert 8
–Leaf Node
•Split into two nodes:
–1st node contains (n-1)/2 values
–2nd node contains remaining values
–Copy the smallest search-key value of the 2nd node
to parent node
9

7 8 9 13 15
B+ Tree Insertion Tutorial 8.3
• Overflow
– When number of search-key values exceed n-1
7 9 13 15 Insert 8
–Non-Leaf Node
•Split into two nodes:
–1st node contains n/2 -1 values
–Move the smallest of the remaining values, together
with pointer, to the parent
–2nd node contains the remaining values
9

7 8 13 15
B+ Tree Insertion Tutorial 8.3
• Example 1: Construct a B+ tree for (1,
4, 7, 10, 17, 21, 31, 25, 19, 20, 28, 42)
with n=4.
7
1 4 7
1 4 7 10

7 17

1 4 7 10 17 21
B+ Tree Insertion

• 1, 4, 7, 10, 17, 21, 31, 25, 19, 20, 28, 42


7 17 25

1 4 7 10 17 21 25 31

17

7 20 25

1 4 7 10 17 19 20 21 25 31
B+ Tree Insertion Tutorial 8.3
• 1, 4, 7, 10, 17, 21, 31, 25, 19, 20, 28, 42

17

7 20 25 31

1 4 17 19 31 42

7 10 20 21 25 28
B+ Tree Insertion Tutorial 8.3
• Example 2: n=3, insert 4 into the
9 10
following B+Tree
7 8 Subtree Subtree
C D

2 5 Leaf Leaf
A B

7 10

4 8 C D

2 4 5 A B
B+ Tree Deletion Tutorial 8.4
• Underflow 9 10 Delete 10
– When number of search-key values < n/2 -1
–Leaf Node
•Redistribute to sibling 13 18

•Right node not less than left node 9 10 13 14 16


•Replace the between-value in parent
by their smallest value of the right
14 18
node
•Merge (contain too few entries) 9 13 14 16
•Move all values, pointers to left node
•Remove the between-value in parent
13 18 22 18 22

9 10 13 14 9 13 14
B+ Tree Deletion Tutorial 8.4
9 10 Delete 10
–Non-Leaf Node
13 18
•Redistribute to sibling
•Through parent 9 10 14 15 16

•Right node not less than left node


•Merge (contain too few entries) 14 18
•Bring down parent
•Move all values, pointers to left 9 13 15 16

node
•Delete the right node, and pointers
in parent
13 18 22 18 22

9 10 14 16 9 13 14 16
B+ Tree Deletion Tutorial 8.4
• Example 3: n=3, delete 3
5 20

3 8 Subtree
A

1 3

20

5 8 Subtree
A

1
B+ Tree Deletion Tutorial 8.4
• Example 4: Delete 28, 31, 21, 25, 19
20

7 17 25 31 50

1 4 7 10 17 19 20 21 25 28 31 42

20

7 17 25 50

1 4 7 10 17 19 20 21 25 31 42
B+ Tree Deletion Tutorial 8.4
• Example 4: Delete 28, 31, 21, 25, 19
7 17 20 50

1 4 7 10 17 19 20 25 42

7 17 50

1 4 7 10 17 20 42
Static Hashing Tutorial 8.5
• A hash function h maps a search-key value K to an
address of a bucket
• Commonly used hash function hash value mod nB
where nB is the no. of buckets
• E.g. h(Brighton) = (2+18+9+7+8+20+15+14) mod
10 = 93 mod 10 = 3 No. of buckets = 10

Brighton A-217 750


Hash function h Round Hill A-305 350
. .
. .
Extendable Hashing Tutorial 8.6
Hash prefix i i1 Length of common hash prefix

bucket1

Data bucket
i2
bucket2

Bucket address table

i3

bucket3

• Hash function returns b bits


• Only the prefix i bits are used to hash the item
• There are 2i entries in the bucket address table
• Let ij be the length of the common hash prefix for data bucket
j, there is 2(i-ij) entries in bucket address table points to j
Extendable Hashing Tutorial 8.6
• Splitting (Case 1 ij=i)
– Only one entry in bucket address table points to data
bucket j
– i++; split data bucket j to j, z; ij=iz=i; rehash all items
previously in j;
3
2

2 3 3

00 000
2 001
01
10 010 2
11 011
100
1 101
110 1
111
Extendable Hashing Tutorial 8.6
• Splitting (Case 2 ij< i)
– More than one entry in bucket address table point to data
bucket j
– split data bucket j to j, z; ij = iz = ij +1; Adjust the pointers
previously point to j to j and z; rehash all items previously
in j;

2
3 2
3
000
001 000 2
010 001
2 010
011
100 011
100 2
101
110 101
1
111 110
111
2
Extendable Hashing Tutorial 8.6
• Example 5: Suppose the hash function is h(x) = x
mod 8 and each bucket can hold at most two
records. Show the extendable hash structure after
inserting 1, 4, 5, 7, 8, 2, 20. 1 4 5 7 8 2 20
001 100 101 111 000 010 100

0 0

1 1
4
2 1
8
00
2
1 1 01
4
0 1 10 5
1 11 2
1
7
4
5
Extendable Hashing Tutorial 8.6
inserting 1, 4, 5, 7, 8, 2, 20
1 4 5 7 8 2 20
001 100 101 111 000 010 100
2
3 1
2 8
000
2 1
001 2
8
00
010 2
2
01
011
2
10 3
100
11 4
2 101 20

4 110 3
5
111 5
2

7 2

7
96-97 Final Q9. Tutorial 8.7
1
1
2
8
00
01 2
10 4
5
11

2
7

Suppose the hash function h(x) =x mod 8,


each bucket can hold at most 2 records.
Show the structure after inserting “20”
96-97 Final Q9. Tutorial 8.7
2
3
1
000 8

001

010

011
3
100
4
101
20
110
3
111
5

You might also like