Strong vs Eventual Consistency

We aim for transations to be ACID, that is:

  • Atomic - transactions either succeed or fail, there should be no inbetween state
  • Consistency - a transaction cannot bring a database into an invalid state
  • Isolation - execution of multiple transactions concurrently will have the same affect as if they had been executed sequentially
  • Durability - any committed transaction is written to non-volative storage. It cannot be undone by a crash, power loss, network partition etc.

Strong Consistency

Usually refers to ACID transactions.

Eventual Consistency

A model where reads of a system might return stale data. Generally, an eventually consistent datastore will give guarantees that the datastore will eventually reflect writes within a given period. This could be 10 seconds, or it could be several minutes.