Overview
ACID (Atomic, Consistent, Isolated, Durable) is the contract of traditional databases: transactions are all-or-nothing and leave the data valid and durable. BASE (Basically Available, Soft state, Eventually consistent) is the philosophy behind many distributed NoSQL systems: stay available and fast, accept temporary inconsistency, and converge over time. It is the practical expression of the CAP trade-off.
ACID vs BASE: key differences
| ACID | BASE | |
|---|---|---|
| Priority | Availability + scale | Correctness + integrity |
| Consistency | Strong, immediate | Eventual |
| Transactions | Full multi-row | Limited / per-key |
| Availability | May sacrifice under partition | Prioritized |
| Typical stores | Postgres, MySQL, Spanner | Dynamo, Cassandra, Riak |
When to use ACID
Financial, inventory, and any data where correctness and transactional integrity are non-negotiable.
When to use BASE
Massive-scale, always-available systems (carts, feeds, sessions) where temporary inconsistency is acceptable for availability and speed.
Verdict
ACID where correctness must hold; BASE where availability and scale matter more and the app can tolerate eventual consistency. Modern systems mix both — even ACID databases relax isolation, and some NoSQL stores now offer transactions.
Common questions
What is the difference between ACID and BASE?
ACID guarantees strict, immediate transactional consistency; BASE favors availability and scale, accepting eventual consistency. ACID suits correctness-critical data; BASE suits high-availability scale.
Can a database be both ACID and BASE?
Increasingly, yes — many "NewSQL" systems (e.g. Spanner, CockroachDB) provide ACID transactions with horizontal scale, blurring the line.