Skip to content
Naveen Raj

System Design Fundamentals

The Data Layer

Most system design decisions eventually come back to the database, because it's usually the hardest part of a system to scale after the fact — you can add caches and load balancers in front of a badly-chosen data layer, but you can't cache your way out of a fundamentally wrong consistency model. This chapter covers picking a database, growing it past a single machine, and the theory that explains why you can't have everything at once.