What is ACID

ACID is the building blocks of a relational databases. Today we’re going to understand what it means.
tldr; Just remember
Atomicity relates to Transactions - All or Nothing.
Consistency relates to Constraints and Triggers - All the data is consistent.
Isolation relates to Locks - Concurrent operation doesn’t intefere with each other.
Durability relates to Replication - Committed Transactions to be persisted in case of system failure.
Atomicity - Transactions
Atomicity guarantees All or Nothing.
A set of instructions are executed as an atomic unit, either all succeeds or none.
Say Alice is transferring 500$ to Bob’s account:
BEGIN TRANSACTION
Check 500$ Balance in Alice’s Account - SUCCESS
Deduct 500$ from Alice’s Account - SUCCESS
Deposit 500$ to Bob’s Account - FAILURE :(
END TRANSACTION
Due to network failure the Deposit 500$ step fails. Since all the steps are in a Transaction, all of them are reverted. 500$ is transferred back to Alice’s account.
Consistency - Constraints and Triggers
Consistency ensures All the data is consistent.
When any change is carried out a set of rules are conformed with when the data changes.
Say we’ve added a constraint on Accounts table - account’s amount cannot be < 0. This constraint is checked whenever data changes in Accounts table.
Check Balance in Alice’s Account - 200$
Deduct 800$ from Alice’s Account - FAILURE
Deducting 800$ from Alice’s account failed because of the constraint mentioned before.
Isolation - Locks
Isolation makes sure Concurrent operation doesn’t intefere with each other.
If 2 transactions tries to write on the same row then only one must be allowed at a time.
Let’s say there are two Transactions updating Alice’s account
T1
Read Balance from Alice’s Account - 1200$
Deduct 800$ from Alice’s Balance - 400$
Update Alice’s Account with 400$
T2
Read Balance from Alice’s Account - 1200$
Deduct 200$ from Alice’s Balance - 1000$
Update Alice’s Account with 1000$
If T1 and T2 were allowed to run without locks then the updates can go wrong:
T1 Reads Balance from Alice’s Account - 1200$
T2 Reads Balance from Alice’s Account - 1200$
T1 Deducts 800$ from Alice’s Balance - 400$
T1 Updates Alice’s Account with - 400$
T2 Deducts 200$ from Alice’s Balance - 1000$
T2 Updates Alice’s Account with - 1000$
Finally Alice’s Account has 1000$ which is not right. Using locks with Transactions makes sure that only one transaction can perform operations on the same data.
Durability - Replication and Transaction Log Files
Durability allows Committed Transactions to be persisted in case of system failure.
Say in our Alice and Bob example the system failed before transferring 500$ from Alice’s account to Bob’s account. Alice’s account now has 500$ less while Bob didn’t got the 500$ since it was committed.
After the system comes back online it must redo the deposit to Bob’s account.
Subscribe to my newsletter
Read articles from Ashish Gaur directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
