Previous | Next --- Slide 31 of 51
Back to Lecture Thumbnails

Eventual consistency is a part of BASE, which specifies the properties of a (distributed) system: - Basic Availability: The service "works" most of the time; - Soft-State: Writes might not be committed to non-volatile storage (like hard drive); instead, temporary in-memory buffer is fine; - Eventual Consistency: Eventually changes are propagated;

The BASE model is mostly used in large-scale distributed systems where availability is more important than consistency. For example, if you shop on Amazon and browses a product, other people might be ordering the same thing, but Amazon gives you a "rough estimate" on if the item is in stock. (An alternative would be to LOCK the item while someone places an order -- this ensures maximal consistency, but it's embarrassingly inefficient and unusable.)

This leads us to the concepts of ACID, standing for: * Atomicity -- operations succeeds 100% or fails 100% (e.g. when I get money out of ATM, it must be the case that I get cash AND money gets deducted, or NEITHER happens.); * Consistency -- the system is in a correct state (i.e. free of data-race, especially); * Isolation -- operations are done as if they were independent and serial; * Durability -- changes are committed to non-volatile storage, and are recoverable upon failures.

For folks that are interested in this, you can learn more in Distributed Systems (15-440/640).