ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge...

49
Networking @Andy_Pavlo // 15-721 // Spring 2019 ADVANCED DATABASE SYSTEMS Lecture #13

Transcript of ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge...

Page 1: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

Networking

@Andy_Pavlo // 15-721 // Spring 2019

ADVANCEDDATABASE SYSTEMS

Le

ctu

re #

13

Page 2: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

ADMINISTRIV IA

Feb 27: Project #1 is due

Feb 27: Project #2 will be released

Mar 4: Extra Credit assignment will be released

Mar 6: Mid-term Exam

Mar 18: Project #2 Proposals

2

Page 3: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

MID-TERM

March 6th @ 3:00pm in this room.

Mix of multiple choice and short-answer questions

Closed notes. I don't care about paper minutiae.

Materials Covered:→ Lecture #01 to #12 (inclusive)

3

Page 4: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

Scheduling / PlacementConcurrency Control

IndexesOperator Execution

ARCHITECTURE OVERVIEW

4

SQL Query

Networking Layer

Planner

Compiler

Execution Engine

Storage Manager

SQL ParserBinder

Optimizer / Cost ModelsRewriter

Storage ModelsLogging / Checkpoints

1

2

3

4

Page 5: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

TODAY'S AGENDA

Database Access APIs

Database Network Protocols

Kernel Bypass Methods

Project #2 Topics

5

Page 6: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

DATABASE ACCESS

All of the demos in the class have been through a terminal client.→ SQL queries are written by hand.→ Results are printed to the terminal.

Real programs access a database through an API:→ Direct Access (DBMS-specific)→ Open Database Connectivity (ODBC)→ Java Database Connectivity (JDBC)

6

Page 7: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

OPEN DATABASE CONNECTIV IT Y

Standard API for accessing a DBMS. Designed to be independent of the DBMS and OS.

Originally developed in the early 1990s by Microsoft and Simba Technologies.

Every major relational DBMS now has an ODBC implementation.

7

Page 8: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

OPEN DATABASE CONNECTIV IT Y

ODBC is based on the device driver model.

The driver encapsulates the logic needed to convert a standard set of commands into the DBMS-specific calls.

8

Application

OD

BC

Dri

ver

Request

Result

DBMS Wire Protocol

Page 9: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

JAVA DATABASE CONNECTIV IT Y

Developed by Sun Microsystems in 1997 to provide a standard API for connecting a Java program with a DBMS.

JDBC can be considered a version of ODBC for the programming language Java instead of C.

9

Page 10: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

JAVA DATABASE CONNECTIV IT Y

Approach #1: JDBC-ODBC Bridge→ Convert JDBC method calls into ODBC function calls.

Approach #2: Native-API Driver→ Convert JDBC method calls into native calls of the target

DBMS API.

Approach #3: Network-Protocol Driver→ Driver connects to a middleware that converts JDBC calls

into a vendor-specific DBMS protocol.

Approach #4: Database-Protocol Driver→ Pure Java implementation that converts JDBC calls

directly into a vendor-specific DBMS protocol.

10

Page 11: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

DATABASE NETWORKING PROTOCOLS

All major DBMSs implement their own proprietary wire protocol over TCP/IP.

A typical client/server interaction:→ Client connects to DBMS and begins authentication

process. There may be an SSL handshake.→ Client then sends a query.→ DBMS executes the query, then serializes the results and

sends it back to the client.

11

Page 12: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

EXISTING PROTOCOLS

Most newer systems implement one of the open-source DBMS wire protocols. This allows them to reuse the client drivers without having to develop and support them.

Just because on DBMS "speaks" another DBMS's wire protocol does not mean that it is compatible.→ Need to also support catalogs, SQL dialect, and other

functionality.

12

Page 13: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

EXISTING PROTOCOLS

13

Page 14: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROTOCOL DESIGN SPACE

Row vs. Column Layout

Compression

Data Serialization

String Handling

14

DON'T HOLD MY DATA HOSTAGE: A CASE FOR CLIENT PROTOCOL REDESIGNVLDB 2017

Page 15: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

ROW VS. COLUMN L AYOUT

ODBC/JDBC are inherently row-oriented APIs.→ The DBMS packages tuples into messages one tuple at a

time.→ The client has to deserialize data one tuple at a time.

But modern data analysis software operates on matrices and columns.

One potential solution is to send data in vectors.→ Batch of rows organized in a column-oriented layout.

15

Page 16: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

COMPRESSION

Approach #1: Naïve Compression

Approach #2: Columnar-Specific Encoding

More heavyweight compression is better when the network is slow.

Better compression ratios for larger message chunk sizes.

16

Page 17: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

DATA SERIALIZATION

Approach #1: Binary Encoding→ Have to handle endian conversion on client.→ The closer the serialized format is to the DBMS's binary

format, then the lower the overhead to serialize.→ DBMS can implement its own format or rely on existing

libraries (ProtoBuf, Thrift).

Approach #2: Text Encoding→ Convert all binary values into strings (atoi).→ Do not have to worry about endianness.

17

1234564-bytes

"123456"+6-bytes

Page 18: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

STRING HANDLING

Approach #1: Null Termination→ Store a null byte ('\0') to denote the end of a string.→ Client has to scan the entire string to find end.

Approach #2: Length-Prefixes→ Add the length of the string at the beginning of the bytes.

Approach #3: Fixed Width→ Pad every string to be the max size of that attribute.

18

Page 19: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

NETWORK PROTOCOL PERFORMANCE

19

0.0170.013 0.011

0.0290.059 0.063

0.6661.080

0.01

0.1

1

10

Ela

psed

Tim

e (s

ec)

MonetDB MySQL+GZIP MySQL Postgres

Oracle MongoDB DB2 Hive

Transfer One Tuple from TCP-H LINEITEM

Source: Hannes Mühleisen

Text Encoding

Binary Encoding

Page 20: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

NETWORK PROTOCOL PERFORMANCE

20

1

10

100

0.1 1 10 100

Ela

psed

Tim

e (s

ec)

Network Latency (ms)

MonetDB MySQL+GZIP MySQL Postgres

Oracle MongoDB DB2 Hive

Transfer 1m Tuples from TCP-H LINEITEM

Source: Hannes Mühleisen

Page 21: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

OBSERVATION

The DBMS's network protocol implementation is not the only source of slowdown.

The OS's TCP/IP stack is slow…→ Expensive context switches / interrupts→ Data copying→ Lots of latches in the kernel

21

Page 22: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

KERNEL BYPASS METHODS

Allows the system to get data directly from the NIC into the DBMS address space.→ No unnecessary data copying.→ No OS TCP/IP stack.

Approach #1: Data Plane Development Kit

Approach #2: Remote Direct Memory Access

22

Page 23: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

DATA PL ANE DEVELOPMENT KIT (DPDK)

Set of libraries that allows programs to access NIC directly. Treat the NIC as a bare metal device.

Requires the DBMS code to do more to manage memory and buffers.→ No data copying.→ No system calls.

Example: ScyllaDB

23

Page 24: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

DATA PL ANE DEVELOPMENT KIT (DPDK)

Set of libraries that allows programs to access NIC directly. Treat the NIC as a bare metal device.

Requires the DBMS code to do more to manage memory and buffers.→ No data copying.→ No system calls.

Example: ScyllaDB

23

Page 25: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

REMOTE DIRECT MEMORY ACCESS

Read and write memory directly on a remote host without going through OS.→ The client needs to know the correct address of the data

that it wants to access.→ The server is unaware that memory is being accessed

remotely (i.e., no callbacks).

Example: Oracle RAC, Microsoft FaRM

24

Page 26: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PARTING THOUGHTS

A DBMS's networking protocol is an often overlooked bottleneck for performance.

Kernel bypass methods greatly improve performance but require more bookkeeping.→ Probably more useful for internal DBMS communication.

25

Page 27: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2

Group project to implement some substantial component or feature in a DBMS.

Projects should incorporate topics discussed in this course as well as from your own interests.

Each group must pick a project that is unique from their classmates.

26

Page 28: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2

Project deliverables:→ Proposal→ Status Update→ Design Document→ Code Review→ Final Presentation→ Code Drop

27

Page 29: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2 PROPOSAL

Five minute presentation to the class that discusses the high-level topic.

Each proposal must discuss:→ What files you will need to modify.→ How you will test whether your implementation is

correct.→ What workloads you will use for your project.

28

Page 30: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2 STATUS UPDATE

Five minute presentation to update the class about the current status of your project.

Each presentation should include:→ Current development status.→ Whether your plan has changed and why.→ Anything that surprised you during coding.

29

Page 31: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2 DESIGN DOCUMENT

As part of the status update, you must provide a design document that describes your project implementation:→ Architectural Design→ Design Rationale→ Testing Plan→ Trade-offs and Potential Problems→ Future Work

30

Page 32: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2 CODE REVIEW

Each group will be paired with another group and provide feedback on their code.

There will be two separate code review rounds.

Grading will be based on participation.

31

Page 33: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2 FINAL PRESENTATION

10 minute presentation on the final status of your project during the scheduled final exam.

You’ll want to include any performance measurements or benchmarking numbers for your implementation.

Demos are always hot too…

32

Page 34: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT #2 CODE DROP

A project is not considered complete until:→ The code can merge into the master branch without any

conflicts.→ All comments from code review are addressed.→ The project includes test cases that correctly verify that

implementation is correct.→ Source code contains clear documentation / comments.

We will select the merge order randomly.

33

Page 35: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

COMPUTING RESOURCES

We will provide additional Amazon AWS credits.

Submitting a PR to our repo will invoke builds on Travis and local Jenkins cluster.

Let me know if you think you need special hardware.

34

Page 36: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

DISCL AIMER

The DBMS is a major work-in-progress.

We do not support a bunch of things yet.

We should work together to add in features / components that we all need.

35

Page 37: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PROJECT TOPICS

36

Query Optimizer

Add/Drop Index

Metric Collection

Settings + Triggers

Checkpoints + Recovery

Unified GC

HANA-style Interval GC

Performance Opt.

LLVM Engine

LLVM Index Scans

Page 38: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

QUERY OPTIMIZER

We have a sophisticated query optimizer based on the Cascades model.

Project: Expand features in DBMS optimizer→ Outer Joins→ Expression Rewriting→ Cost Models→ Note: You have to send me your CV if you choose this

project because companies want to hire you. Seriously.

37

Page 39: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

ADD/DROP INDEXES

We need to support building indexes in a transactionally consistent manner.

Project: Correct index creation/deletion→ Maintain a delta storage for capturing changes made to

table while the index is being built.→ Temporarily halt txns when the index is built and then

apply missed changes.→ Bonus: Support building indexes with multiple threads.

38

Page 40: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

METRIC COLLECTION

We need to collect internal metrics about the DBMS's runtime performance for the self-driving components.

Project: Build infrastructure for metrics.→ Add hooks for txns + storage→ Collect metrics during execution.→ We have an previous implementation in Peloton.

39

Page 41: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

SET TINGS + INTERNAL TRIGGERS

The system should store all of its configuration knobs in the catalog. But a table interface is not ideal for C++ components.

Project: Build new SettingsManager→ Mimic Postgres catalog structure (pg_settings)→ Changing the catalog should invoke an internal trigger

that reconfigures the system.→ Need to support scaling up/down threads.→ Keep track of deployment times.

40

Page 42: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

CHECKPOINTS + RECOVERY

We currently support a WAL scheme without checkpoints. We can replay log upon restart but not re-install catalogs.

Project: Implement full recovery from checkpoints + WAL.→ First store catalog table in checkpoint→ Add recovery from checkpoint + WAL.→ Implement consistent checkpoints for data tables.

41

Page 43: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

UNIFIED GARBAGE COLLECTION

We have a separate epoch-based GC mechanisms for data tables and the Bw-Tree.

Project: Build a unified GC component.→ Examine existing GC methods in Bw-Tree→ Expose epoch management in index layer.→ Push epoch updates to index during runtime.

42

Page 44: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

INTERVAL GARBAGE COLLECTION

We currently only implement basic min-timestamp MVCC garbage collection. Interval GC is necessary for OLAP queries.

Project: Implement HANA-style Interval GC→ Low-overhead interval identification.→ Will not match exactly with the scheme described in the

SAP paper.→ May need to work together with the checkpoint team.

43

Page 45: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

PERFORMANCE ANALYSIS + OPTIMIZATION

We have not performed a thorough evaluation of the other parts of the DBMS.If you liked Project #1, then you can go deeper…

Project: Analyze + Optimize System → Identify additional scalability bottlenecks.→ Expand our multi-threaded testing framework to include

complex insert, update, and delete workloads.→ Integrate tests into performance regression framework.

44

Page 46: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

LLVM ENGINE INTEGRATION

We have a new execution engine in separate repository. It uses the LLVM to compile query plans into machine code for fast execution.

Project: Port LLVM Engine to DBMS→ Convert plan nodes + expressions to engine's DSL.→ Modify engine to interface with storage manager.→ Build out multi-threading execution infrastructure.→ We don't have an optimizer yet, so you will have to test

with hand crafted query plans loaded from JSON.

45

Page 47: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

LLVM INDEX SCAN

Current LLVM engine only support sequential scans. It does not know how to access indexes.

Project: Support Index Scans in LLVM Engine→ Extend engine's DSL to support index scans.→ Have to infer key format from catalog + index schema.→ Support both point queries + range scans.→ You will have to load the indexes manually.

46

Page 48: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

HOW TO START

Form a team.

Meet with your team and discuss potential topics.

Look over source code and determine what you will need to implement.

I am able during Spring Break for additional discussion and clarification of the project idea.

47

Page 49: ADVANCED 3 DATABASE SYSTEMS - CMU 15-721JAVA DATABASE CONNECTIVITY Approach #1: JDBC-ODBC Bridge →Convert JDBC method calls into ODBC function calls. Approach #2: Native-API Driver

CMU 15-721 (Spring 2019)

NEXT CL ASS

Let's start to talk about how to execute queries!

48