24
B-Tree

B-Tree

  • Upload
    miracle

  • View
    68

  • Download
    0

Embed Size (px)

DESCRIPTION

B-Tree. Multiway search tree. A tree was defined as either an empty structure or a structure whose children are disjoint tree t 1 ,t 2 ,…t k . Each node of this kind of tree can have more than two children. This tree called a multiway tree of order m, or an m-way tree. - PowerPoint PPT Presentation

Citation preview

Page 1: B-Tree

B-Tree

Page 2: B-Tree

p2.

Multiway search tree

A tree was defined as either an empty structure or a structure whose children are disjoint tree t1,t2,…tk. Each node of this kind of tree can have more than two children. This tree called a multiway tree of order m, or an m-way tree.

A Multiway search tree of order m, or an m-way search tree, is a Multiway search tree in which

Each node has m children and m-1 keys The keys in each node are in ascending order The keys in the first i children are smaller the ith key The keys in the last m-i children are larger than the ith key

M-way search tree m-way tree Binary search tree binary tree

Page 3: B-Tree

p3.

Introduction of B-tree

B-tree: proposed by Bayer and McCreight 1972

A B-tree operates closely with secondary storage and can be tuned to reduce the impediments imposed by this storage

One important property of B-trees is the size of each node which can be made as large as the size of the block. (the basic unit of I/O operations associated with a disk is a block)

a B-tree of order t is a multiway search tree.

Page 4: B-Tree

p4.

B-Tree :

性質:

典型之 B-Tree 運用情況:

在 B-Tree 中若 node x 有 n[x] keys, 則 x 含有 n[x]+1 個 children.M

D H

J K LF GB C

Q T X

Y ZV WR SN P

MainMemory

Secondary Memory

( disks ) ( RAM )

資料量龐大無法全部存在 main memory.

處理 B-Tree 之 algorithm 只將部分之資料 copy 至 main memory.

object some pointer to a xREAD(x)-DISK

WRITE(x)-DISK

x of fields modify theand/or access that operations

x of fields modify thenot dobut access that operations others

Page 5: B-Tree

p5.

B-Tree T 之定義: T : rooted tree 並滿足下列: 1. 對每一 node x 含下列之 fields

a. n[x] : node x 所含之 key 數 . b. 依遞增排列 . c. leaf[x] 為 true 若 x 為 leaf

false 若 x 不為 leaf.

2. 若 x 為一 internal node 則 x 有 n[x]+1 個 pointers C1[x] ,

C2[x] ,… , Cn[x]+1[x] 指向某 children.

若 x 為一 leaf. 其 Ci[x] 沒有定義 . 3. 若 ki 為 Ci[x] 所指之 subtree 中任一 key 則

][][][ ][ xkeyxkeyxkey xn 21

][][][ ][ xkeyxkeyxkey xn 21

key1 key2

K3K2K1

C1[x] C2[x] C3[x]

x

Page 6: B-Tree

p6.

4. 每一 leaf 之高度相同 .(all leaves are on the same level.)

5. t : minimum degree of the B-tree. (a B-tree of order 2t)

a. node( 除 root ) 有 internal node ( 除 root ) 有 若 則 root 至少有一 key. b. node( 至多 ) 有 internal node ( 除 root ) 有 a node is FULL, if it contains exactly 2t-1 keys.

keys. 1 t

children. t

T

keys. 12t

children.2t

Page 7: B-Tree

Thm:If , then for any n-key B-tree T of height h and minimum degree

Proof :

1n ,2t

.log 2

1

n

th

1

t-1

t-1

t-1

t-1

t-1

t-1

t t

t t t t

1

2

2t

2t2

h

i

ihtn1

1211 )(

.)( 121

1121

hh

tt

tt

.log . htn n

th

2

1

2

1

Page 8: B-Tree

p8.

A B-tree is not a binary tree because B-tree has many more than two children

B-trees may be formulated to store a set of elements or a bag of elements. (a given elements can occur many times in a bag but only once in a set)

A B-tree is balanced. Every leaf in a B-tree has the same depth 2-3-4 tree (discussed by Rudolf Bayer): a B-tree of

order 4 (min degree=2)

Page 9: B-Tree

p9.

The elements in a B-tree node

Rule 1:the root may have as few as one elements (or even no elements if it also has no children); every other node has at least minimum elements

Rule 2: the maximum number of elements in a node is twice the value of minimum

Rule 3: the elements of each B-tree node are stored in a partially filled array, sorted from the smallest elements (at index 0) to the largest elements (at the final used position of the array)

Rule 4: the number of subtrees below a nonleaf node is always one more than the number of the elements in the node.

Rule 5: for any leaf node: (1) an element at index i is greater than all the elements in subtree number i of the node, and (b) an element at index i is less than all the elements in subtree number i+1 of the node.

Page 10: B-Tree

p10.

66 88

Subtree number 0

Subtree number 1

Subtree number 2

Each element in subtree number 0 is less than 66

Each element in subtree number 1 is between 66 and 88.

Each element in subtree number 2 is greater than 88

Page 11: B-Tree

p11.

convention: Root of the B-tree is always in main memory. Any nodes that are passed as parameters must

already have had a DISK_READ operation performed on them.

Operations : Searching a B-Tree. Creating an empty B-tree. Splitting a node in a B-tree. Inserting a key into a B-tree. Deleting a key from a B-tree.

Page 12: B-Tree

p12.

B-Tree-Search(x,k): Algorithm :

Total CPU time :

B-Tree-Search(x,k)

{

)],[Search(-Tree-Breturn

])[READ(-DISK else

NULLreturn then ][

),return(n the

][ and ][

do

][ and ][ while

kxC

xC

xleafif

ix

xkeykxniif

ii

xkeykxni

i

i

i

i

i

1

1

}

).log()( ntOthO t

Page 13: B-Tree

p13.

B-Tree-Created(T): Algorithm :

time :

B-Tree-Create(T)

{

xroot[T]

WRITE(x)-DISK

0n[x]

TRUE][Leaf

()NodeAllocate

x

x

}

)(1O

Page 14: B-Tree

p14.

B-Tree-Split-Child(x,i,y) : Splitting a node in a B-Tree :

… N W …

x

Keyi-1[x]

y=Ci[x]

P Q R S T U V

T1 T2 T4T3 T5 T6 T8T7

Keyi [x]t=4

full

… N S W …

y=Ci[x]

T U V

T5 T6 T8T7

11 iii keykeykeyx

P Q R

T1 T2 T4T3

z=Ci+1[x]

Splitting a full node y ( have 2t-1 keys ) around its median key keyt[y] into

2 nodes having (t-1) keys each.

Page 15: B-Tree

p15.

Algorithm :

B-Tree-Split-Child(x,I,y)

{ Node()-Allocatez

}

leaf[y]leaf[z]1 tn[z]

][key][key 1- t tjj yzdotojfor 1

thenif leaf[y]not

][][C t tjj yCzdotojfor 1

1 tn[y]

][][C 1i ][ j1j xCxdodowntoxnjfor 1

z[x]C 1j

][][Key i ][ j1j xKeyxdodowntoxnjfor

][Key][Key ti yx

1 ]x[nn[x]

WRITE(y)-DISKWRITE(z)-DISKWRITE(x)-DISK

Page 16: B-Tree

p16.

B-Tree-Insert(T,k) : Insert a key in a B-Tree :

Root[T]

r

A D F H L N P

T1 T2 T4T3 T5 T6 T8T7

t=4

H

r

L N P

T5 T6 T8T7

A D F

T1 T2 T4T3

Root[T]

S

Page 17: B-Tree

p17.

Algorithm :

B-Tree-Insert(T,k)

{ ]T[rootr

}

thenif 1-2tn[r]

0n[S]

{ Node()-AllocateS S]T[rootFALSE]S[leaf

r[S]Ci

B-Tree-Split-Child(S,l,r)

B-Tree-Insert-Nonfull(S,k)}

k)Nonfull(r,-Insert-Tree-B else

Page 18: B-Tree

B-Tree-Insert-Nonfull(x,k): Algorithm :

B-Tree-Insert-Nonfull(x,k)

{ ][ni xthenif leaf[x]

{ ][keyk and 1i i xwhile ][key][key { 1i xxdo i

} i 1 i

}

kx ][key 1i

1 ]x[n][n x

} WRITE(x)-DISKelse{ ][keyk and 1i i xwhile

1-ii do1 ii

[x])READ(C-DISK i

1-2t[x]]n[C i if[x])Ci,Child(x,-Split-Tree-B ithen1ii [x]keyk i thenif

B-Tree-Insert-Nonfull(Ci[x],k) }

Page 19: B-Tree

Example : Inserting keys into a B-Tree.

A C D E

t=3

(a) Initial tree

J K N O

R S T U V

Y Z

G M P X

A B C D E

J K N O

R S T U V

Y Z

G M P X

(b) B inserted

A B C D E

J K N O

Q R S Y Z

G M P T X

(c) Q inserted

U V

R S

U V

G M P T X

Page 20: B-Tree

A B C D E

J K L

N O

Q R S

Y Z

(d) L insert

U V

P

G M

T X

A B J K L

N O

Q R S

Y Z

(e) F insert

U V

P

C G M

T X

D E F

Page 21: B-Tree

Deleting a key from a B-Tree:

1. K is in x and x is a leaf :

2. K is in x and x is an internal node : a.

b.

c. if both y,z has t-1 keys. Merge y,z and k into y. Recursively delete k from y.

( x has t keys )

K

x

delete k from x.

K

x

k’ keys ty

Recursively delete k’ and replace k by k’ in x.

K

x

k’keys tz

K

z

x

t+1

t+1

y

K2t-1

Page 22: B-Tree

3. If K is not in internal node x :

a. If Ci[x] has only t-1 keys but has a sibling with t keys

b. If Ci[x] and all of Ci[x]’s siblings have t-1 keys, merge ci with one sibling.

K

x

Ci[x]

k is in this subtree.

K

t-1

x

Ci[x] t

• Move a key from x down to Ci[x].

• Move a key from Ci[x]’s sibling to x.

• Move an appropiate child to Ci[x] from its sibling.

0x

t-1keys

02t-1keys

Ci[x] t-1keys

Page 23: B-Tree

Example : Deleting a key from a B-Tree.t=3

(a) Initial tree

(b) F delete : case 1

A B J K L

N O

Q R S

Y Z

U V

P

C G M

T X

D E F

A B J K L

N O

Q R S

Y Z

U V

P

C G M

T X

D E

(c) M delete : case 2a

A B J K N O

Q R S

Y Z

U V

P

C G L

T X

D E

Page 24: B-Tree

(d) G deleted : case 2c

A B N O

Q R S

Y Z

U V

P

C L T X

D E J H

(e) D deleted : case 3b

C L P T X

A B N O

Q R S

Y Z

U V

E J K

(e’) tree shrinks in height

C L P T X

A B N O

Q R S

Y Z

U V

E J K

(f) B delete : case 3a

E L P T X

A C N O

Q R S

Y Z

U V

J K