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).
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).