07 Part I Intro to Database Systems Andy Pavlo AP AP - - PowerPoint PPT Presentation

07
SMART_READER_LITE
LIVE PREVIEW

07 Part I Intro to Database Systems Andy Pavlo AP AP - - PowerPoint PPT Presentation

Tree Indexes 07 Part I Intro to Database Systems Andy Pavlo AP AP 15-445/15-645 Computer Science Carnegie Mellon University Fall 2020 2 ADM IN ISTRIVIA Project #1 is due Sunday Sept 27 th Homework #2 is due Sunday Oct 4 th 15-445/645


slide-1
SLIDE 1

Intro to Database Systems 15-445/15-645 Fall 2020 Andy Pavlo Computer Science Carnegie Mellon University

AP AP

07

Tree Indexes Part I

slide-2
SLIDE 2

15-445/645 (Fall 2020)

ADM IN ISTRIVIA

Project #1 is due Sunday Sept 27th Homework #2 is due Sunday Oct 4th

2

slide-3
SLIDE 3

15-445/645 (Fall 2020)

UPCO M IN G DATABASE TALKS

CockroachDB Query Optimizer

→ Monday Sept 28th @ 5pm ET

Apache Arrow

→ Monday Oct 5th @ 5pm ET

DataBricks Query Optimizer

→ Monday Oct 12th @ 5pm ET

3

slide-4
SLIDE 4

15-445/645 (Fall 2020)

DATA STRUCTURES

Internal Meta-data Core Data Storage Temporary Data Structures Table Indexes

4

slide-5
SLIDE 5

15-445/645 (Fall 2020)

TABLE IN DEXES

A table index is a replica of a subset of a table's attributes that are organized and/or sorted for efficient access using a subset of those attributes. The DBMS ensures that the contents of the table and the index are logically in sync.

5

slide-6
SLIDE 6

15-445/645 (Fall 2020)

TABLE IN DEXES

It is the DBMS's job to figure out the best index(es) to use to execute each query. There is a trade-off on the number of indexes to create per database.

→ Storage Overhead → Maintenance Overhead

6

slide-7
SLIDE 7

15-445/645 (Fall 2020)

TO DAY'S AGEN DA

B+Tree Overview Using B+Trees in a DBMS

7

slide-8
SLIDE 8

15-445/645 (Fall 2020)

B- TREE FAM ILY

There is a specific data structure called a B-Tree. People also use the term to generally refer to a class of balanced tree data structures:

→ B-Tree (1971) → B+Tree (1973) → B*Tree (1977?) → Blink-Tree (1981)

8

slide-9
SLIDE 9

15-445/645 (Fall 2020)

B- TREE FAM ILY

There is a specific data structure called a B-Tree. People also use the term to generally refer to a class of balanced tree data structures:

→ B-Tree (1971) → B+Tree (1973) → B*Tree (1977?) → Blink-Tree (1981)

8

slide-10
SLIDE 10

15-445/645 (Fall 2020)

B- TREE FAM ILY

There is a specific data structure called a B-Tree. People also use the term to generally refer to a class of balanced tree data structures:

→ B-Tree (1971) → B+Tree (1973) → B*Tree (1977?) → Blink-Tree (1981)

8

slide-11
SLIDE 11

15-445/645 (Fall 2020)

B+ TREE

A B+Tree is a self-balancing tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions in O(log n).

→ Generalization of a binary search tree in that a node can have more than two children. → Optimized for systems that read and write large blocks of data.

9

slide-12
SLIDE 12

15-445/645 (Fall 2020)

B+ TREE PRO PERTIES

A B+Tree is an M-way search tree with the following properties:

→ It is perfectly balanced (i.e., every leaf node is at the same depth in tree). → Every node other than the root, is at least half-full M/2-1 ≤ #keys ≤ M-1 → Every inner node with k keys has k+1 non-null children

10

slide-13
SLIDE 13

15-445/645 (Fall 2020)

B+ TREE EXAM PLE

11

Leaf Nodes <5 <9 ≥9 Inner Node

<value>|<key>

Sibling Pointers

6 7 9 13 1 3 5 9

<node*>|<key>

slide-14
SLIDE 14

15-445/645 (Fall 2020)

N O DES

Every B+Tree node is comprised of an array of key/value pairs.

→ The keys are derived from the attributes(s) that the index is based on. → The values will differ based on whether the node is classified as inner nodes or leaf nodes.

The arrays are (usually) kept in sorted key order.

12

slide-15
SLIDE 15

15-445/645 (Fall 2020)

B+Tree Leaf Node

B+ TREE LEAF N O DES

13

K1 V1 • • • Kn Vn

¤ ¤

Prev Next

slide-16
SLIDE 16

15-445/645 (Fall 2020)

B+Tree Leaf Node

B+ TREE LEAF N O DES

13

K1 V1 • • • Kn Vn

¤ ¤

Prev Next PageID PageID

slide-17
SLIDE 17

15-445/645 (Fall 2020)

B+Tree Leaf Node

B+ TREE LEAF N O DES

13

Key+ Value K1 V1 • • • Kn Vn

¤ ¤

Prev Next

¤ ¤

PageID PageID

slide-18
SLIDE 18

15-445/645 (Fall 2020)

B+Tree Leaf Node

B+ TREE LEAF N O DES

13

Sorted Keys K1 K2 K3 K4 K5 • • • Kn Values

¤ ¤ ¤ ¤ ¤

  • • • ¤

¤

Prev

¤

Next # Level # Slots

slide-19
SLIDE 19

15-445/645 (Fall 2020)

LEAF N O DE VALUES

Approach #1: Record Ids

→ A pointer to the location of the tuple that the index entry corresponds to.

Approach #2: Tuple Data

→ The actual contents of the tuple is stored in the leaf node. → Secondary indexes must store the record id as their values.

14

slide-20
SLIDE 20

15-445/645 (Fall 2020)

B- TREE VS. B+ TREE

The original B-Tree from 1972 stored keys + values in all nodes in the tree.

→ More space efficient since each key only appears once in the tree.

A B+Tree only stores values in leaf nodes. Inner nodes only guide the search process.

15

slide-21
SLIDE 21

15-445/645 (Fall 2020)

SELECTIO N CO N DITIO N S

The DBMS can use a B+Tree index if the query provides any of the attributes of the search key. Example: Index on <a,b,c>

→ Supported: (a=5 AND b=3) → Supported: (b=3).

Not all DBMSs support this. For hash index, we must have all attributes in search key.

16

slide-22
SLIDE 22

15-445/645 (Fall 2020)

SELECTIO N CO N DITIO N S

17

Find Key=(A,B)

A,C B,B C,C A,C B,A A,A A,B B,B B,C C,C C,D

A ≤ A B ≤ C

slide-23
SLIDE 23

15-445/645 (Fall 2020)

SELECTIO N CO N DITIO N S

17

Find Key=(A,B)

A,C B,B C,C A,C B,A A,A A,B B,B B,C C,C C,D

Find Key=(A,*)

A ≤ A

slide-24
SLIDE 24

15-445/645 (Fall 2020)

SELECTIO N CO N DITIO N S

17

Find Key=(A,B)

A,C B,B C,C A,C B,A A,A A,B B,B B,C C,C C,D

Find Key=(A,*)

A ≤ A (A,*) ≤ (B,*)

slide-25
SLIDE 25

15-445/645 (Fall 2020)

SELECTIO N CO N DITIO N S

17

Find Key=(A,B) Find Key=(*,A)

A,C B,B C,C A,C B,A A,A A,B B,B B,C C,C C,D

*,A < C,C

Find Key=(A,*)

(A,A) (B,A) (A,A) (B,A)

slide-26
SLIDE 26

15-445/645 (Fall 2020)

B+ TREE IN SERT

Find correct leaf node L. Put data entry into L in sorted order. If L has enough space, done! Otherwise, split L keys into L and a new node L2

→ Redistribute entries evenly, copy up middle key. → Insert index entry pointing to L2 into parent of L.

To split inner node, redistribute entries evenly, but push up middle key.

18

Source: Chris Re

slide-27
SLIDE 27

15-445/645 (Fall 2020)

B+ TREE VISUALIZATIO N

https://cmudb.io/btree

Source: David Gales (Univ. of San Francisco)

19

slide-28
SLIDE 28

15-445/645 (Fall 2020)

B+ TREE DELETE

Start at root, find leaf L where entry belongs. Remove the entry. If L is at least half-full, done! If L has only M/2-1 entries,

→ Try to re-distribute, borrowing from sibling (adjacent node with same parent as L). → If re-distribution fails, merge L and sibling.

If merge occurred, must delete entry (pointing to L

  • r sibling) from parent of L.

20

Source: Chris Re

slide-29
SLIDE 29

15-445/645 (Fall 2020)

B+ TREE DUPLICATE KEYS

Approach #1: Append Record Id

→ Add the tuple's unique record id as part of the key to ensure that all keys are unique. → The DBMS can still use partial keys to find tuples.

Approach #2: Overflow Leaf Nodes

→ Allow leaf nodes to spill into overflow nodes that contain the duplicate keys. → This is more complex to maintain and modify.

21

slide-30
SLIDE 30

15-445/645 (Fall 2020)

B+ TREE APPEN D RECO RD ID

22

<5 <9 ≥9

6 7 8 9 13 1 3 5 9

Insert 6

<Key,RecordId>

slide-31
SLIDE 31

15-445/645 (Fall 2020)

B+ TREE APPEN D RECO RD ID

22

<5 <9 ≥9

6 7 8 9 13 1 3 5 9

<Key,RecordId>

Insert <6,(Page,Slot)>

slide-32
SLIDE 32

15-445/645 (Fall 2020)

B+ TREE APPEN D RECO RD ID

22

<5

6 7 8 9 13 1 3 5 9

<Key,RecordId>

Insert <6,(Page,Slot)>

7 8 7 9 6

≥9 <9 <7

slide-33
SLIDE 33

15-445/645 (Fall 2020)

B+ TREE OVERFLOW LEAF N O DES

23

<5 <7 ≥9

6 7 8 9 13 1 3 5 9 6

Insert 6

slide-34
SLIDE 34

15-445/645 (Fall 2020)

B+ TREE OVERFLOW LEAF N O DES

23

<5 <7 ≥9

6 7 8 9 13 1 3 5 9 6

Insert 6 Insert 7

7

slide-35
SLIDE 35

15-445/645 (Fall 2020)

B+ TREE OVERFLOW LEAF N O DES

23

<5 <7 ≥9

6 7 8 9 13 1 3 5 9 6

Insert 6 Insert 7

7

Insert 6

6

slide-36
SLIDE 36

15-445/645 (Fall 2020)

CLUSTERED IN DEXES

The table is stored in the sort order specified by the primary key.

→ Can be either heap- or index-organized storage.

Some DBMSs always use a clustered index.

→ If a table does not contain a primary key, the DBMS will automatically make a hidden row id primary key.

Other DBMSs cannot use them at all.

24

slide-37
SLIDE 37

15-445/645 (Fall 2020)

CLUSTERED B+ TREE

Traverse to the left-most leaf page, and then retrieve tuples from all leaf pages. This will always better than external sorting.

25

Data Records

(Directs search) Index Data Entries ("Sequence set")

101 102 103 104

slide-38
SLIDE 38

15-445/645 (Fall 2020)

H EAP CLUSTERIN G

Tuples are sorted in the heap's pages using the order specified by a clustering index. If the query accesses tuples using the clustering index's attributes, then the DBMS can jump directly to the pages that it needs.

26

101 102 103 104

slide-39
SLIDE 39

15-445/645 (Fall 2020)

H EAP CLUSTERIN G

Tuples are sorted in the heap's pages using the order specified by a clustering index. If the query accesses tuples using the clustering index's attributes, then the DBMS can jump directly to the pages that it needs.

26

101 102 103 104

Scan Direction

slide-40
SLIDE 40

15-445/645 (Fall 2020)

IN DEX SCAN PAGE SO RTIN G

Retrieving tuples in the order that appear in an unclustered index is inefficient. The DBMS can first figure out all the tuples that it needs and then sort them based on their page id.

27

101 102 103 104

Scan Direction

slide-41
SLIDE 41

15-445/645 (Fall 2020)

IN DEX SCAN PAGE SO RTIN G

Retrieving tuples in the order that appear in an unclustered index is inefficient. The DBMS can first figure out all the tuples that it needs and then sort them based on their page id.

27

101 102 103 104

Page 102 Page 103 Page 102 Page 104 Page 104 Page 103 Page 102 Page 101 Page 104 Page 103 Page 102 Page 103

Scan Direction

slide-42
SLIDE 42

15-445/645 (Fall 2020)

IN DEX SCAN PAGE SO RTIN G

Retrieving tuples in the order that appear in an unclustered index is inefficient. The DBMS can first figure out all the tuples that it needs and then sort them based on their page id.

27

101 102 103 104

Page 102 Page 103 Page 102 Page 104 Page 104 Page 103 Page 102 Page 101 Page 104 Page 103 Page 102 Page 103 Page 102 Page 101 Page 102 Page 102 Page 103 Page 104 Page 103 Page 104 Page 101 Page 102 Page 103 Page 104

Scan Direction

slide-43
SLIDE 43

15-445/645 (Fall 2020)

DEM O

B+Tree vs. Hash Indexes Table Clustering

28

slide-44
SLIDE 44

15-445/645 (Fall 2020)

CO N CLUSIO N

The venerable B+Tree is always a good choice for your DBMS.

29

slide-45
SLIDE 45

15-445/645 (Fall 2020)

N EXT CLASS

More B+Trees Tries / Radix Trees Inverted Indexes

30