2 min read
On this page
intermediate databasesdata-modeling
4 subtopics 20 min total

Prerequisites

Before reading this, you may want to check out:

Data Systems

Data is at the heart of every application, and the way you store, model, and access it has profound implications for performance, scalability, and correctness. Data systems encompass the databases, storage engines, and architectural patterns that determine how information flows through a system and how guarantees like consistency and durability are maintained.

Choosing the right data system is one of the most consequential decisions in system design. Relational databases, document stores, key-value stores, and graph databases each excel at different access patterns and come with different trade-offs. Beyond the choice of database, how you model your data, what consistency guarantees you require, and how you handle concurrent updates all shape the behavior of your system under real-world conditions.

This topic also explores advanced patterns like event sourcing and CQRS, which fundamentally rethink how state changes are captured and queried. These patterns are increasingly common in large-scale systems where traditional CRUD approaches break down under the demands of auditability, scalability, or complex business logic.

What You'll Learn

  • SQL vs NoSQL - The fundamental differences between relational and non-relational databases, their strengths, limitations, and the workloads each is best suited for
  • Data Modeling - How to structure your data effectively, including schema design, normalization vs denormalization, and modeling relationships across different database paradigms
  • Consistency Models - The spectrum of consistency guarantees (strong, eventual, causal) and how they affect system behavior, availability, and performance
  • Event Sourcing & CQRS - Patterns that separate read and write models and store state as a sequence of events, enabling auditability, temporal queries, and flexible projections

Prerequisites

A strong grasp of 01-fundamentals (especially databases and storage) and 02-scalability (particularly database scaling and data partitioning). Familiarity with basic SQL and the concept of transactions is highly recommended.