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
2018/05/28 - 11. Indexing: slides announced
2018/05/07 - 10. Transaction Recovery: slides announced
2018/04/30 - 9. Transaction Management: slides announced
2018/04/23 - 8. Record Management: slides announced
2018/04/16 - 7. Memory Management: slides announced
2018/04/09 - 6. Data Access and File Management: slides announced
2018/04/02 - 5. Query Processing: slides announced
2018/03/26 - 4. Server and Threads: slides announced
2018/03/19 - 3. Architecture and Interfaces: slides announced
2018/03/12 - 2. Data Modeling: slides announced
2018/03/05 - 1. Using a DBMS: slides announced
2018/02/26 - 0. Introduction: 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 | SQL Queries
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.
ER & Relational Models | Weak Entities | Functional Dependencies | Normal Forms
Assigned Readings & Java Concurrency
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
This lab explains how to decompose the table shown in Assignment 1.
Implement JDBC version and Stored procedure Procedures version of Read/Write transaction in 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)
Overview | Parsing & Verification | Parser & SQL Data | Predicates | Predicates | Scans | Plans | Assignment
This lab guides you through the VanillaCore. (Query Engine)
Implement Explain SQL operation in VanillaDB.
Storage Engine | I/O Interfaces | Compromised File Management | Implementation: Page & FileMgr
This lab explains how to reach the requirement of assignment 2.
Buffer Pools & Pinning | Buffer Replacement | Pool Size & Deadlock Handling | ACID & Logging | Caching Logs
This lab guides you through the VanillaCore (File Access, Memory Management).
Optimize file and buffer modules of VanillaCore.
Record Management | Design Considerations for Record Manager | The VanillaCore Record Manager
Overview of Transaction API | Schedules | Anomalies | 2PL & S2PL | Deadlock Handling | Assignment | Multi-Granularity Locking | Phantoms | Isolation Levels | Meta Structure | CC in VanillaCore
Implement two version two phase locking protocol.
Recap: WAL | Physical Logging & Tx Rollbacks | Undo Recovery | Undo-Redo Recovery | Repeated Failures | Checkpointing
This lab briefly explains how we optimize buffer and file module for assignment 4.
Algorithm and design choice of ARIES
Hash Indexing | B-Tree Indexing | Index Locking
Solution of assignment 5
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