Database Systems

Implementation, architectural design, and trade-offs.


This course provides an overview of the current database management systems in the cloud, and explains how they are different from traditional database systems. The goal is to get students familiar with some well-known implementations like NoSQL databases, Google BigTable, Google MegaStore, and Google Spanner etc., and more importantly, to help students make better decisions on the design tradeoffs when configuring/building their own database systems given a particular set of target applications (tenants) in mind.

Proper understanding of Java/OOP programming and data structure is required.


Teaching Assistants

Time & Location

  • Video Lecture: Update at Tue. 10am-12pm
  • Lab: Thu. 9-11am at Delta 104
  • Office hour: Thu. 3-5pm at Delta 723/724

Grading Policy

  • Assignments (x5): 40%
  • Midterm project: 30%
  • Final project : 30%


This course is intended for senior undergraduate and junior graduate students who understand

  • OOP Programming,
  • Multi-threaded Programming,
  • Data Structure, and
  • Version Control.
We use Java as the main programming language throughout the course. Although not required, background knowledge about operating system will be helpful.



If you have any feedback, feel free to contact: shwu [AT]

Lecture 01


What's Clound Database? | About This Course... | FAQ


General Rules For Assignments

The announcement the general rules for the assignments in this course and the introduction to the platform we use to manage assignments.


Introduction to Git

This lab guides you through the main idea of version control systems and the basic usage of Git.


Lecture 02

Using a DBMS

Assigned Readings & Java Concurrency | ER & Relational Models | SQL & Query Algebra

Video Slides

Using VanillaDB

Basic tutorial of VanillaDB and Benchmark project


Lecture 03

Architecture and Interfaces

Architecture Overview | SQL | JDBC | Native Interface | RecordFile | MetaData

Video Slides

Introducing Benchmark Project

This lab guides you through the Benchmark Project and how to configure the VanillaDB


Assignment 1

Implement JDBC version and Stored procedure Procedures version of Read/Write transaction in VanillaDB.

Solution GitLab

Lecture 04

Server and Threads

Introduction | Threads Processes | Supporting Concurrent Clients | Embedded Clients vs. Remote Clients | RMI | JDBC Implementation

Video Slides

VanillaCore Walkthrough Part 1

This lab guides you through the VanillaCore.


Lecture 05

Query Processing

Overview | Parsing & Verification | Parser & SQL Data | Predicates | Predicates | Scans | Plans | Assignment

Video Slides

Assignment 2

Implement Explain SQL operation in VanillaDB.

Solution GitLab

VanillaCore Walkthrough Part 2

This lab guides you through the VanillaCore.



Introduction and Specification of TPC-C benchmark.


Lecture 06

Data Access and File Management

Storage Engine | I/O Interfaces | Compromised File Management | Implementation: Page & FileMgr

Video Slides

Lecture 07

Memory Management

Buffer Pools & Pinning | Buffer Replacement | Pool Size & Deadlock Handling | ACID & Logging | Caching Logs

Video Slides

Assignment 3

Optimize file and buffer modules of VanillaCore.


Micro Benchmarks

Introduction and Specification of Micro benchmarks.


Lecture 08

Record Management

Record Management | Design Considerations for Record Manager | The VanillaCore Record Manager

Video Slides

VanillaCore Walkthrough Part 3

This lab guides you through the VanillaCore.


Midterm Project

In this project you are going to implement on of classic query optimizer : Selinger Optimizer.


Lecture 09

Transaction Management

Overview of Transaction API | Schedules | Anomalies | 2PL & S2PL | Deadlock Handling | Assignment | Multi-Granularity Locking | Phantoms | Isolation Levels | Meta Structure | CC in VanillaCore

Video Slides

Assignment 4

Implement the conservative concurrency manager.


Lecture 10

Transaction Recovery

Recap: WAL | Physical Logging & Tx Rollbacks | Undo Recovery | Undo-Redo Recovery | Repeated Failures | Checkpointing

Video Slides

ARIES overview and optimization

Algorithm and design choice of ARIES

Slides Slides


Selinger Query Optimizer

In this midterm, you are asked to implement one of classic query optimizer : Selinger Optimizer.


Final Project

Final Project Proposal

This final project catches you up with the latest research topics on database systems.

Forbidden Topics Slides


Following provides links to some useful online resources. If this course starts your CloudDB journey, don't stop here. Enroll yourself in advanced courses (shown below) to learn more.

Other Course Materials

For more course materials (such as assignments, score sheets, etc.) and online forum please refer to the GitLab.


Source Code

The repository that includes all source code you may need to trace so far.



Describes the API operations for the VanillaDB in detail.

Java Doc

Reference Books

  • Raghu Ramakrishnan et al., Database Management Systems, 3 Edition, McGraw-Hill, 2002, ISBN: 0072465638

  • Abraham Silberschatz et al, Database System Concepts, 6 Edition, McGraw-Hill, 2010, ISBN: 0073523321

  • Edward Sciore, Database Design and Implementation, Wiley, 2008, ISBN: 0471757160

  • M.Tamer Özsu, Principles of Distributed Database Systems, 3 Edition, Springer, 2011, ISBN: 1441988335

  • Rachid Guerraoui et al., Introduction to Reliable Distributed Programming, Springer, 2006, ISBN: 3540288457