ACID is the standard for good database software.
- **Atomic**: all the database updates within a transaction are committed or all are rolled back.
- **Consistent**: the DBMS will not allow an update to violate any database constraints.
- **Isolated**: one users transaction will not corrupt another users transaction.
- **Durable**: once the transaction is committed, it remains committed even in the case of system failure.
In terms of Isolation, SQL-92 allows multiple levels of transaction isolation.
- **Read uncommitted**: allows reads of uncommitted data ("dirty reads")
- **Read committed**: allows unrepeatable reads and phantom reads, but no dirty reads
- **Repeatable read**: allows phantom reads, but no unrepeatable reads
- **Serializable**: guarantees no anomalies (most common)
A phantom read will return a different set of rows (an extra row known as a "phantom row").
NoSQL systems can make a sacrifice in data consistency and reliability for more throughput required by big data applications.