---
id: 400
properties:
- id: author
  name: Author
  type: string
  value: Martin Kleppmann
- id: genre
  name: Genre
  type: string
  value: Technical
- id: read
  name: Read
  type: boolean
  value: true
---

# Designing Data-Intensive Applications

Excellent deep dive into distributed systems, replication, partitioning, and batch/stream processing.

## Key takeaways

- Understand your data model before choosing a database
- Replication and partitioning are orthogonal concerns
- Exactly-once semantics is harder than it sounds
