This is an introduction to relational and non-relational database management systems. We will learn how to query database systems via languages such as SQL (the structured query language). Then, we will see how database systems work internally, how they store and index data, how they process and optimize queries, and how they process transactions while providing guarantees such as isolation, atomicity, and durability (ACID guarantees).
We will address questions of database design and discuss novel approaches to data management via NoSQL or NewSQL systems. Finally, we will discuss about graph, stream, and spatial data, and about systems that are specialized for those data types. The following recordings are taken from the Fall 2020 online lecture at Cornell by Prof. Immanuel Trummer (www.itrummer.org).
Click on the following topics to access videos and slides:
|Transactions Intro; ACID Guarantees; Concurrency Control; Slides 1; Slides 2|
|Transaction Schedules; Isolation; Serializability; Slides|
|Two-Phase Locking; Proof of Conflict-Serializability; Slides|
|Deadlocks (with Postgres Demo); Avoiding Phantoms; Index Locking; Slides|
|Multi-Granularity Locking; Optimistic Concurrency Control; Slides|
|Multi-Version Concurrency Control; Snapshot Isolation; Write Skew; RecoverySlides 1; Slides 2|
|Crash Recovery; Logging; ARIES Recovery Algorithm; Slides|
|ARIES Recovery: Analysis, Redo, and Undo Phases; Slides|
About the first two thirds of the course are based on the textbook "Database Management Systems" by Raghu Ramakrishnan and Johannes Gehrke. The last third of the course discusses recently proposed systems, more details about them can be found in the corresponding research papers.