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.