Assignment 3 Solution - GitHub Pages

33
Assignment 3 Solution Introduction to Database Systems DataLab CS, NTHU

Transcript of Assignment 3 Solution - GitHub Pages

Page 1: Assignment 3 Solution - GitHub Pages

Assignment 3 Solution

Introduction to Database Systems

DataLab

CS, NTHU

Page 2: Assignment 3 Solution - GitHub Pages

Modified/Added Classes

• Parse– Lexer

– Parser

– queryData

• Algebra– ExplainPlan、ExplainScan

– TablePlan、ProductPlan、SelectPlan、 SortPlan、GroupByPlan、ProjectPlan

• Planner– BasicQueryPlanner

• An example of Experiment Results

2

Page 3: Assignment 3 Solution - GitHub Pages

Overview

3

createPlan()

Planner

eatKeyword()

QueryData()

BasicQueryPlanner

QueryData

queryCommand()

createQueryPlan()

Parser

Lexer

matchKeyword()

Page 4: Assignment 3 Solution - GitHub Pages

Modified/Added Classes

• Parse– Lexer

– Parser

– queryData

• Algebra– ExplainPlan、ExplainScan

– TablePlan、ProductPlan、SelectPlan、 SortPlan、GroupByPlan、ProjectPlan

• Planner– BasicQueryPlanner

• Examples of Experiment Results

4

Page 5: Assignment 3 Solution - GitHub Pages

Lexer

5

createPlan()

Planner

eatKeyword()

QueryData()

BasicQueryPlanner

QueryData

queryCommand()

createQueryPlan()

Parser

Lexer

matchKeyword()

Page 6: Assignment 3 Solution - GitHub Pages

Parse

• Lexer

– added “explain” in keywords.

6

Page 7: Assignment 3 Solution - GitHub Pages

Parser

7

createPlan()

Planner

eatKeyword()

QueryData()

BasicQueryPlanner

QueryData

queryCommand()

createQueryPlan()

Parser

Lexer

matchKeyword()

Page 8: Assignment 3 Solution - GitHub Pages

Parse

• Parser

– add isExplain

8

Page 9: Assignment 3 Solution - GitHub Pages

Parse

• Parser

– Parser returns SQL data

– In method “queryCommand()”

9

Page 10: Assignment 3 Solution - GitHub Pages

QueryData

10

createPlan()

Planner

eatKeyword()

QueryData()

BasicQueryPlanner

QueryData

queryCommand()

createQueryPlan()

Parser

Lexer

matchKeyword()

Page 11: Assignment 3 Solution - GitHub Pages

Parse

• QueryData

11

Page 12: Assignment 3 Solution - GitHub Pages

Parse

• QueryData

12

Page 13: Assignment 3 Solution - GitHub Pages

Modified/Added Classes

• Parse– Lexer

– Parser

– queryData

• Algebra– ExplainPlan、ExplainScan

– TablePlan、ProductPlan、SelectPlan、 SortPlan、GroupByPlan、ProjectPlan

• Planner– BasicQueryPlanner

• Examples of Experiment Results

13

Page 14: Assignment 3 Solution - GitHub Pages

14

ExplainPlan open()

SortPlan open() toString()

ProjectPlan open() toString()

SelectPlan open() toString()

ProductPlan open()

TablePlan open()

toString()

toString()

getVal()

ExplainScanSP/JDBC Connection

Page 15: Assignment 3 Solution - GitHub Pages

ExplainPlan

15

Page 16: Assignment 3 Solution - GitHub Pages

ExplainScan

• That the result shows once

16

Page 17: Assignment 3 Solution - GitHub Pages

ExplainScan

• Return the result of explain

17

Page 18: Assignment 3 Solution - GitHub Pages

ExplainScan

• Return the number of actual records

18

Page 19: Assignment 3 Solution - GitHub Pages

TablePlan

19

->TablePlan on (warehouse) (#blks=2, #recs=1)

Page 20: Assignment 3 Solution - GitHub Pages

ProductPlan

20

->ProductPlan (#blks=22, #recs=10)->TablePlan on (warehouse) (#blks=2, #recs=1)->TablePlan on (district) (#blks=2, #recs=10)

Page 21: Assignment 3 Solution - GitHub Pages

SelectPlan

21

->SelectPlan pred:(d_w_id=w_id) (#blks=22, #recs=10)->ProductPlan (#blks=22, #recs=10)

->TablePlan on (warehouse) (#blks=2, #recs=1)->TablePlan on (district) (#blks=2, #recs=10)

Page 22: Assignment 3 Solution - GitHub Pages

SortPlan

22

->SortPlan (#blks=2, #recs=10)->SelectPlan pred:(d_w_id=w_id) (#blks=22, #recs=10)

->ProductPlan (#blks=22, #recs=10)->TablePlan on (warehouse) (#blks=2, #recs=1)->TablePlan on (district) (#blks=2, #recs=10)

Page 23: Assignment 3 Solution - GitHub Pages

GroupByPlan

23

->GroupByPlan: (#blks=2, #recs=1)->SortPlan (#blks=2, #recs=10)

->SelectPlan pred:(d_w_id=w_id) (#blks=22, #recs=10)->ProductPlan (#blks=22, #recs=10)

->TablePlan on (warehouse) (#blks=2, #recs=1)->TablePlan on (district) (#blks=2, #recs=10)

Page 24: Assignment 3 Solution - GitHub Pages

ProjectPlan

24

->ProjectPlan (#blks=2, #recs=1)->GroupByPlan: (#blks=2, #recs=1)

->SortPlan (#blks=2, #recs=10)->SelectPlan pred:(d_w_id=w_id) (#blks=22, #recs=10)

->ProductPlan (#blks=22, #recs=10)->TablePlan on (warehouse) (#blks=2, #recs=1)->TablePlan on (district) (#blks=2, #recs=10)

Page 25: Assignment 3 Solution - GitHub Pages

Modified/Added Classes

• Parse– Lexer

– Parser

– queryData

• Algebra– ExplainPlan、ExplainScan

– TablePlan、ProductPlan、SelectPlan、 SortPlan、GroupByPlan、ProjectPlan

• Planner– BasicQueryPlanner

• Examples of Experiment Results

25

Page 26: Assignment 3 Solution - GitHub Pages

BasicQueryPlanner

26

createPlan()

Planner

eatKeyword()

QueryData()

BasicQueryPlanner

QueryData

queryCommand()

createQueryPlan()

Parser

Lexer

matchKeyword()

Page 27: Assignment 3 Solution - GitHub Pages

BasicQueryPlanner

27

Page 28: Assignment 3 Solution - GitHub Pages

Modified/Added Classes

• Parse– Lexer

– Parser

– queryData

• Algebra– ExplainPlan、ExplainScan

– TablePlan、ProductPlan、SelectPlan、 SortPlan、GroupByPlan、ProjectPlan

• Planner– BasicQueryPlanner

• Examples of Experiment Results

28

Page 29: Assignment 3 Solution - GitHub Pages

Examples of Experiment Results

29

Page 30: Assignment 3 Solution - GitHub Pages

Examples of Experiment Results

30

Page 31: Assignment 3 Solution - GitHub Pages

Examples of Experiment Results

31

Page 32: Assignment 3 Solution - GitHub Pages

Examples of Experiment Results

32

Page 33: Assignment 3 Solution - GitHub Pages

Examples of Experiment Results

33