We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
5 system design questions lean on this idea. Each walks through the full answer.
System Design Masterclass · Core Fundamentals
Free preview: the first 2 parts of this 11-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Core Fundamentals
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
See where this lesson sits in the full path, with real study hours for every stage.
It is easy and good
“It is really nice and good Please join the course”
Imagine this: you're transferring $10,000 from your checking account to your savings account. The bank's system deducts $10,000 from checking. Then, right at that instant, the server crashes. Reboots. Comes back online.
Your checking account is $10,000 lighter. Your savings account never got the deposit. The money has simply... Vanished. Not stolen. Not misrouted. Just gone, eaten by a crashed process.
This is not a hypothetical worry that databases were built to soothe. It is the specific failure that transactions exist to prevent, and it is the reason a database will happily go slower in order to avoid it.
Sit with the shape of it for a second. Nothing was stolen and nobody made a mistake. Two perfectly correct operations were meant to happen together, one of them did, and the gap between them was where the money went.

The debit succeeded and was confirmed. The credit never ran, because the process stopped existing between the two.
Neither operation was wrong. Each did exactly what it was told. The failure lives in the gap between them, and closing that gap is what a transaction is for.
The answer is . Four properties that, when enforced by a database, guarantee that your data stays correct no matter what goes wrong, crashes, power failures, concurrent access, network blips. ACID is the reason you trust online banking, e-commerce, and anything else where getting the data wrong has real consequences.
If you're building any system that handles money, inventory, medical records, or anything where data integrity matters, you need to understand ACID. It's also one of the most frequently asked topics in system design interviews, usually as a setup for discussing the trade-offs with distributed systems.
stands for Atomicity, Consistency, Isolation, Durability. Each one addresses a specific way that data can go wrong. Together, they form the contract that a database makes with your application: "No matter what happens, your data will be correct."
Let's use the bank transfer as our running example throughout this lesson. You're moving $500 from Account A (checking) to Account B (savings). This involves two operations:
Seems simple. But as we'll see, without ACID, this two-step operation has an alarming number of ways to go sideways.
| Property | What It Guarantees | What Goes Wrong Without It |
|---|---|---|
| Atomicity | Both steps succeed or both steps fail, no partial operations | Money deducted but never credited (or vice versa) |
| Consistency | Data always satisfies defined rules (e.g., no negative balances) | Account goes to -$500 when it shouldn't |
| Isolation | Concurrent transactions don't interfere with each other | Two withdrawals both see $1000, both withdraw $800, balance goes to -$600 |
| Durability |
| Once committed, data survives crashes, power failures, anything |
| Transfer "completes" but data is lost after restart |