Eventual vs Strong Consistency

There are many practical reasons for a system to store multiple copies of data

  • Resiliency/Redundancy
  • Scale
  • Legacy system integration
  • Peer system integration
  • Application-specific extensions of common data

It is useful in this context then to define the expectations on the data. If I retrieve I update it in source A, and retrieve it from source B, what is the result?

Diagram showing two copies of the data, with A being written and B being read.

Eventual consistency is the approach where the data in secondary sources will be updated as quickly as possible, but access to that data is not blocked while this is occurring. This approach is useful when you have one system writing and many systems reading, but can be workable with multiple writers if extra care is taken to ensure no information is lost or overwritten in error.

Strong consistency, likely also wants to update quickly, but blocks access to other data sources until it can guarantee information is up to date. This is useful for multi-writers or in cases where the best, latest information is important.