Information Systems (Informationssysteme)
Jens Teubner, TU Dortmund jens.teubner@cs.tu-dortmund.de Summer 2014
c Jens Teubner · Information Systems · Summer 2014 1
Information Systems (Informationssysteme) Jens Teubner, TU Dortmund - - PowerPoint PPT Presentation
Information Systems (Informationssysteme) Jens Teubner, TU Dortmund jens.teubner@cs.tu-dortmund.de Summer 2014 Jens Teubner Information Systems Summer 2014 c 1 Part X B-Trees Jens Teubner Information Systems Summer 2014
c Jens Teubner · Information Systems · Summer 2014 1
c Jens Teubner · Information Systems · Summer 2014 334
(with registers)
c Jens Teubner · Information Systems · Summer 2014 335
c Jens Teubner · Information Systems · Summer 2014 336
c Jens Teubner · Information Systems · Summer 2014 337
1 Databases access and organize the disk with a page granularity.
2 Use sequential access and/or aggressive prefetching (read-ahead).
c Jens Teubner · Information Systems · Summer 2014 338
1 sort the table on disk (in ZIPCODE order). 2 To answer queries, then use binary search to find first
c Jens Teubner · Information Systems · Summer 2014 339
page 0 page 1 page 2 page 3 page 4 page 5 page 6 page 7 page 8 page 9 page 10 page 11 page 12
c Jens Teubner · Information Systems · Summer 2014 340
c Jens Teubner · Information Systems · Summer 2014 341
c Jens Teubner · Information Systems · Summer 2014 342
c Jens Teubner · Information Systems · Summer 2014 343
c Jens Teubner · Information Systems · Summer 2014 344
c Jens Teubner · Information Systems · Summer 2014 345
1 Function: tree_search (k, node) 2 if matching *i found on node then 3
4 if node is a leaf node then 5
6 switch k do 7
8
9
10
11
12
c Jens Teubner · Information Systems · Summer 2014 346
15I.e., every root-to-leaf path must have the same length. c Jens Teubner · Information Systems · Summer 2014 347
1 Find leaf page n where we would expect the entry for k. 2 If n has enough space to hold the new entry (i.e., at most 2d − 1
3 Otherwise node n must be split into n and n′ and a new separator
c Jens Teubner · Information Systems · Summer 2014 348
node 3 node 4 node 5 node 6 node 7 node 8 node 1 node 2 node 0
c Jens Teubner · Information Systems · Summer 2014 349
node 3 node 4 node 5 node 6 node 7 node 8 node 1 node 2 node 0 node 9
node 4
new node 9
c Jens Teubner · Information Systems · Summer 2014 350
node 3 node 4 node 5 node 6 node 7 node 8 node 1 node 2 node 0 node 9 node 10 node 11 node 12
node 1
new node 12
c Jens Teubner · Information Systems · Summer 2014 351
c Jens Teubner · Information Systems · Summer 2014 352
c Jens Teubner · Information Systems · Summer 2014 353
c Jens Teubner · Information Systems · Summer 2014 354
c Jens Teubner · Information Systems · Summer 2014 355
1 Function: search (k) 2 return tree_search (k, root); 1 Function: tree_search (k, node) 2 if node is a leaf then 3
4 switch k do 5
6
7
8
9
10
c Jens Teubner · Information Systems · Summer 2014 356
node 3 node 4 node 5 node 6 node 7 node 8 node 1 node 2 node 0
c Jens Teubner · Information Systems · Summer 2014 357
node 3 node 4 node 5 node 6 node 7 node 8 node 1 node 2 node 0 node 9
node 4
new node 9
c Jens Teubner · Information Systems · Summer 2014 358
node 3 node 4 node 5 node 6 node 7 node 8 node 1 node 2 node 0 node 9 node 10 node 11 node 12
node 1
new node 12
c Jens Teubner · Information Systems · Summer 2014 359
1 Function: tree_insert (k, rid, node) 2 if node is a leaf then 3
4 else 5
6
7
8
9
10
11
12
13
14
15
c Jens Teubner · Information Systems · Summer 2014 360
1 Function: leaf_insert (k, rid, node) 2 if another entry fits into node then 3
4
5 else 6
7
1 , p+ 1 , . . . , k+ 2d+1, p+ 2d+1
8
1 , p+ 1 , . . . , k+ d+1, p+ d+1 in node ; 9
d+2, p+ d+2, . . . , k+ 2d+1, p+ 2d+1 to p ; 10
d+1, p; 1 Function: split (k, ptr, node) 2 if another entry fits into node then 3
4
5 else 6
7
1 , p+ 1 , . . . , k+ 2d+1, p+ 2d+1
8
1 , p+ 1 , . . . , k+ d , p+ d in node ; 9
d+2, p+ d+2, . . . , k+ 2d+1, p+ 2d+1 to p ; 10
d+1 in node; 11
d+1, p;
1 Function: insert (k, rid) 2 key, ptr ← tree_insert (k, rid, root); 3 if key is not null then 4
5
6
7
8
9
c Jens Teubner · Information Systems · Summer 2014 362
c Jens Teubner · Information Systems · Summer 2014 363
(inner nodes)
c Jens Teubner · Information Systems · Summer 2014 364
c Jens Teubner · Information Systems · Summer 2014 365
c Jens Teubner · Information Systems · Summer 2014 366
c Jens Teubner · Information Systems · Summer 2014 367
16Some implementations won’t allow you to index, e.g., large character fields. c Jens Teubner · Information Systems · Summer 2014 368
c Jens Teubner · Information Systems · Summer 2014 369