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.
This course is intended for senior undergraduate and junior graduate students who understand
2021/6/11 - Lab9: slides announced (ARIES)
2021/6/8 - Lecture13: slides announced
2021/6/7 - Final Project: slides announced
2021/5/31 - Lab12: slides announced
2021/5/31 - Final Project: slides updated
2021/5/31 - Lecture12: slides announced
2021/5/27 - Final project: slides announced
2021/5/24 - Lecture11: slides announced
2021/5/20 - Lab10: slides announced
2021/5/10 - Lecture10: slides announced
2021/5/6 - Assignment5: assignment announced
2021/5/6 - Lab10: slides announced
2021/4/29 - Lab8: slides announced
2021/4/26 - Lecture09: slides announced
2021/4/26 - Lecture08: slides announced
2021/4/22 - Assignment4: assignment announced
2021/4/22 - Lab8: slides announced
2021/4/19 - Lecture07: slides announced
2021/4/15 - Lab7: slides announced
2021/4/12 - Lecture06: slides updated
2021/4/8 - Assignment3: assignment announced
2021/4/8 - Lab06: slides announced
2021/4/1 - Lab05: slides announced
2021/3/29 - Lecture06: slides announced
2021/3/29 - Lecture05: slides updated
2021/3/25 - Assignment2: assignment announced
2021/3/25 - Lab04: slides updated
2021/3/25 - Lab04: slides announced
2021/3/22 - Lecture05: slides announced
2021/3/16 - Lab03: slides announced
2021/3/15 - Lecture04: slides announced
2021/3/11 - Assignment1: assignment announced
2021/3/10 - Lab02: slides announced
2021/3/9 - Lecture02: slides updated
2021/3/8 - Lecture03: slides announced
If you have any feedback, feel free to contact: shwu [AT] cs.nthu.edu.tw
What's Database? | About This Course... | FAQ
Main Features of a DBMS | Data Models
ER & Relational Models | Weak Entities | Functional Dependencies | Normal Forms
The announcement the general rules for the assignments in this course and the introduction to the platform we use to manage assignments.
This lab guides you through the main idea of version control systems and the basic usage of Git.
Given some scenario, design the ER model.
Architecture Overview | SQL | JDBC | Native Interface | RecordFile | MetaData
Basic tutorial of VanillaDB
Introduction | Threads Processes | Supporting Concurrent Clients | Embedded Clients vs. Remote Clients | RMI | JDBC Implementation
This lab guides you through the VanillaCore. (Server, Remote Access, Utilities)
This lab guides you through the Benchmark Project.
Implement JDBC version and Stored Procedures version of Read/Write transaction in VanillaDB.
Overview | Parsing & Verification | Parser & SQL Data | Predicates | Predicates | Scans | Plans | Assignment
This lab guides you through the VanillaCore. (Query)
Explain Assignment 1
Implement Explain SQL operation in VanillaDB.
Storage Engine | I/O Interfaces | Compromised File Management | Implementation: Page & FileMgr
This lab guides you through the VanillaCore. (File Access)
Buffer Pools & Pinning | Buffer Replacement | Pool Size & Deadlock Handling | ACID & Logging | Caching Logs
This lab guides you through the VanillaCore. (Memory Management)
Optimize file and buffer modules of VanillaCore.
Record Management | Design Considerations for Record Manager | The VanillaCore Record Manager
This lab guides you through the VanillaCore. (Record)
Overview of Transaction API | Schedules | Anomalies | 2PL & S2PL | Deadlock Handling | Assignment | Multi-Granularity Locking | Phantoms | Isolation Levels | Meta Structure | CC in VanillaCore
Recap: WAL | Physical Logging & Tx Rollbacks | Undo Recovery | Undo-Redo Recovery | Repeated Failures | Checkpointing
Overview of ARIES
This lab guides you through the VanillaCore. (Lock)
Implement two version two phase locking protocol.
Introducing SAE for cloud DBMS | Data Partitioning for Scalability | Replication for Availability | Case Study
NewSQL | Determinism for SAE | Deterministic DDBMS | Performance Study
Explain Assignment 4
Cost Estimation | Histogram
Query Optimization Lab & Introduction of VanillaComm
Final project pre-announcement
Introduction of final project
Introduction to ElaSQL and ElaSQLBench
This lab guides you through the Hermes.
Detail of final project presentation
Following provides links to some useful online resources. If this course starts your DB journey, don't stop here. Enroll yourself in advanced courses (shown below) to learn more.
For more course materials (such as assignments, score sheets, etc.) and online forum please refer to the GitLab.
Describes the API operations for the VanillaDB in detail.
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