1 / 24

B-Tree

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.

miracle
Download Presentation

B-Tree

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. B-Tree

  2. 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 lastm-i children are larger than the ith key • M-way search tree  m-way tree • Binary search tree  binary tree

  3. 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.

  4. Main Memory Secondary Memory ( RAM ) ( disks ) • B-Tree : • 性質: • 典型之 B-Tree 運用情況: 在 B-Tree 中若 node x 有 n[x] keys, 則 x 含有 n[x]+1 個 children. M D H Q T X B C J K L F G N P R S Y Z V W 資料量龐大無法全部存在 main memory. 處理 B-Tree 之 algorithm 只將部分之資料 copy 至 main memory.

  5. x key1 key2 C1[x] C3[x] C2[x] K1 K2 K3 • 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 則

  6. 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.

  7. If , then for any n-key B-tree T of height h and minimum degree • Thm: Proof: 1 1 2 t-1 t-1 t t 2t t-1 t-1 t-1 t-1 t t t t 2t2

  8. 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)

  9. 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 subtreesbelow 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.

  10. 66 88 Subtree number 1 Subtree number 2 Subtree number 0 Each element in subtree number 1 is between 66 and 88. Each element in subtree number 2 is greater than 88 Each element in subtree number 0 is less than 66

  11. 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.

  12. B-Tree-Search(x,k): • Algorithm: • Total CPU time: B-Tree-Search(x,k) { }

  13. B-Tree-Created(T): • Algorithm: • time: B-Tree-Create(T) { }

  14. P Q R T U V T3 T4 T1 T2 T7 T8 T5 T6 • B-Tree-Split-Child(x,i,y): • Splitting a node in a B-Tree: Keyi-1[x] Keyi [x] x t=4 … N S W … … N W … y=Ci[x] z=Ci+1[x] y=Ci[x] P Q R S T U V full T3 T4 T7 T8 T1 T2 T5 T6 Splitting a full node y ( have 2t-1 keys ) around its median key keyt[y] into 2 nodes having (t-1) keys each.

  15. B-Tree-Split-Child(x,I,y) • Algorithm: { }

  16. A D F L N P T3 T4 T1 T2 T7 T8 T5 T6 • B-Tree-Insert(T,k): • Insert a key in a B-Tree: Root[T] t=4 S Root[T] H r r A D F H L N P T3 T4 T7 T8 T1 T2 T5 T6

  17. Algorithm: B-Tree-Insert(T,k) { { B-Tree-Split-Child(S,l,r) B-Tree-Insert-Nonfull(S,k) } }

  18. B-Tree-Insert-Nonfull(x,k) { • B-Tree-Insert-Nonfull(x,k): • Algorithm: { { B-Tree-Insert-Nonfull(Ci[x],k) } }

  19. t=3 (a) Initial tree • Example:Inserting keys into a B-Tree. G M P X A C D E J K N O R S T U V Y Z (b) B inserted G M P X G M P T X A B C D E J K N O R S T U V Y Z R S U V (c) Q inserted G M P T X A B C D E J K N O Q R S U V Y Z

  20. (d) L insert P G M T X A B C D E J K L N O Q R S U V Y Z (e) F insert P C G M T X A B J K L N O Q R S U V Y Z D E F

  21. ( x has t keys ) x • 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. K delete k from x. x Recursively delete k’ and replace k by k’ in x. K y k’ x K z k’ x K z y t+1 t+1 2t-1 K

  22. x K Ci[x] 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 is in this subtree. x • 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. K Ci[x] t-1 t x 0 Ci[x] t-1 keys t-1 keys 2t-1 keys 0

  23. t=3 (a) Initial tree P • Example:Deleting a key from a B-Tree. C G M T X A B J K L N O Q R S U V Y Z D E F (b) F delete:case 1 P C G M T X A B J K L N O Q R S U V Y Z D E (c) M delete:case 2a P C G L T X A B J K N O Q R S U V Y Z D E

  24. (d) G deleted:case 2c P C L T X A B N O D E J H Q R S U V Y Z (e) D deleted:case 3b C L P T X N O Q R S U V Y Z A B E J K (e’) tree shrinks in height C L P T X N O Q R S U V Y Z A B E J K (f) B delete:case 3a E L P T X N O Q R S U V Y Z A C J K

More Related