Reading
This is a (non-exhaustive) list of technical readings that I’ve found to be particularly good or helpful. This is mainly a way for me to keep track of these sources and share them with others.
Books
- Designing Data-Intensive Applications
- Rust for Rustaceans
- Programming Rust
- The Art of Multiprocessor Programming
- Database Design and Implementation
Book Reading List
Blog Posts
- How to Think About Time
- Data Storage, Replication, and Integrity Syllabus
- Testing Distributed Systems
- Data Replication Design Spectrum
- Parse, Don’t Validate
- Jepsen (Technically not a single post, but everything here is good)
- A distributed systems reliability glossary
- Don’t Get Stuck in the CON Game (V3)
- sled theoretical performance guide
- How to learn Consensus
- Database Startups
- Is this consensus
- The Internals of PostgreSQL
Blog Post Reading List
Papers
- A Critique of ANSI SQL Isolation Levels
- A Critique of Snapshot Isolation
- ACIDRain: Concurrency-Related Attacks on Database-Backed Web Applications
- Keeping CALM: When Distributed Consistency is Easy
- What every systems programmer should know about concurrency
- Sharing Memory Robustly in Message-Passing Systems
- Viewstamped Replication: A New Primary Copy Method to Support Highly-Available Distributed Systems
- Viewstamped Replication Revisited
- Concurrency Control and Recovery in Database Systems
- Dynamo: Amazon’s Highly Available Key-value Store
- The Google File System
- Bigtable: A Distributed Storage System for Structured Data
- Spanner: Google’s Globally-Distributed Database
- The Part-Time Parliament
- Paxos Made Simple
- In Search of an Understandable Consensus Algorithm
- Scalability! But at what COST?
- Calvin: Fast Distributed Transactions for Partitioned Database Systems
- Multiversion Concurrency Control-Theory and Algorithms
- ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging
- MapReduce: Simplified Data Processing on Large Clusters