Designing Data Intensive Applications - Martin Kleppmann Chapter 1 - Reliable, Scalable and Maintainable Applications Chapter 2 - Data Models and Query Languages Chapter 3 - Storage and Retrieval Chapter 4 - Encoding and Evolution Chapter 5 - Replication Chapter 6 - Partitioning Chapter 7 - Transactions Chapter 8 - The Trouble with Distributed Systems ## Chapter 9 - Consistency and Consensus Chapter 10 - Batch Processing Chapter 11 - Stream Processing Chapter 12 - Future of Data Systems