CAP theorem for developers: what a network partition forces you to choose, why CA isn't an option, how Spanner, DynamoDB, and Cassandra behave, and PACELC.