Overview
In the second part of the course, we look into databases. We start with consistency models and the tradeoffs related to consistency models, including when working with distributed data. Then, we take a database into use, and look into common approaches to improve database performance, such as indexing, caching, and denormalization. We also start an overarching project for the course.
The structure of this part is as follows:
-
Approaches to Consistency: ACID and BASE introduces the ACID and BASE approaches to consistency and discusses the tradeoffs between them.
-
Data Distribution: Sharding, Partitioning, CAP & PACELC discusses the main approaches to distributing data, while outlining limits to consistency, availability, and network partition tolerance.
-
Database Setup, Studying Queries, and Connection Pools adds a database to our walking skeleton, introduces PostgreSQL-specific functionality for studying queries, and discusses the effect of connection pooling on database queries.
-
Indexing and Query Optimization discusses database indexing and query optimization techniques, and showcases how indexes affect query performance.
-
Schema Design, Normalization, and Denormalization briefly discusses database schema design, focusing on relational databases, and outlines denormalization that can be used to reduce the number of joins in queries.
-
Caching discusses using server-side caching to temporarily store results on the server to avoid the need to query the database for every request, also showcasing how to use Redis as a separate cache server.
-
Overarching Project starts an overarching project — a scalable programming platform — that is worked on throughout the course.
Finally, at the end of the part, there is a recap and feedback chapter that briefly summarizes the part and asks for feedback on the part.