Published on

The CAP Theorem, or how I learned to stop worrying and love the distributed system

Let's take a look at the CAP Theorem.



  • what's a distributed system?
  • why would you need one, especially when it comes to data

The Story So Far

  • introducing the setup we're considering - the distributed python dictionary, containing account balances

Introducing the Constraints

let's talk about what each of these terms mean.


Every read recieves the most recent write - or an error

  • strong vs weak consistency, talk about read replicas drifting from master


A node that has crashed is not considered to be suitable for an evaluation of availability. - Lynch

Each request recieves a response. case 1 - no errors are allowed except for that of a consistency failure case 2 - no errors at all, but no guarantee of recieving the latest write

(Network) Partition Tolerance

Networks are an inherent part of distributed systems. However, a partition-tolerant system must continue to function "despite an arbitrary number of messages being dropped or delayed by the network in between nodes"

The Theorem

Explain that there's a tradeoff to be made.


CA databases (average joe postgres, read

CP (low availability, MongoDB - why?) AP (Cassandra - why?)



Do you need to distribute?