Chapter 2 from Designing Data Intensive Applications
Chapter 3 of Designing Data Intensive Applications