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.
Pinkie Chen
*陳玠霖
Wei-Hung Chang
*張維紘
Bo-Cheng Yang
楊博丞
Yen-Ting Wang
王彥婷
This course is intended for senior undergraduate and junior graduate students who understand
2024/6/3 - Lecture 14: slides announced
2024/5/27 - Lecture 12: slides announced
2023/5/16 - final project: project online
2024/5/06 - Lecture 11: slides announced
2024/4/25 - Lecture 10: slides announced
2024/4/25 - Assignment 05: assignment announced
2024/4/25 - Lab 09: slides announced
2024/4/18 - Lab 08: slides announced
2024/4/15 - Lecture 09: slides announced
2024/4/15 - Lecture 08: slides announced
2024/4/11 - Assignment 04: assignment announced
2024/4/11 - Lab 07: slides announced
2024/4/08 - Lecture 07: slides announced
2024/3/28 - Assignment 03: assignment announced
2024/3/28 - Lab 06: slides announced
2024/3/28 - Lecture 06: slides announced
2024/3/18 - Lecture 04: slides announced
2024/3/14 - Assignment 02: assignment announced
2024/3/14 - Lab 03: slides announced
2024/3/10 - Lecture 03: slides announced
2024/03/04 - Lab 02: slides announced
2024/03/03 - Lecture 02: slides announced
2024/02/15 - Lecture 01: slides announced
2024/02/15 - Lecture 00: slides announced
If you have any feedback, feel free to contact: shwu@cs.nthu.edu.tw
Main Features of a DBMS | Data Models
Using PostgreSQL
Java Concurrency
ER & Relational Models | Weak Entities | Functional Dependencies | Normal Forms
Introducing the assignment platform we will be using in this course and the general rules for assignments
This lab guides you through the main idea of version control systems and the basic usage of Git.
Basic tutorial of VanillaDB
Given some scenario, design the ER model.
Architecture Overview | SQL | JDBC | Native Interface | RecordFile | MetaData
This lab guides you through the Benchmark Project.
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)
Implement JDBC version and Stored Procedures version of Read/Write transaction in VanillaDB.
Explain Assignment 2
Overview | Parsing & Verification | Parser & SQL Data | Predicates | Predicates | Scans | Plans | Assignment
This lab guides you through the VanillaCore. (Query)
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.
Explain Assignment 4
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
This lab guides you through the VanillaCore. (Lock)
Implement conservative locking protocol.
Explain Assignment 5
Recap: WAL | Physical Logging & Tx Rollbacks | Undo Recovery | Undo-Redo Recovery | Repeated Failures | Checkpointing
Introducing SAE for cloud DBMS | Data Partitioning for Scalability | Replication for Availability | Case Study
SAE revisited | Non-relational partitioned DDBMS | Non-relational replicated DDBMS | Elasticity in non-relational DDBMS
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