|
Database ACID (Atomicity, Consistency, Isolation, Durability)
Properties
There are a set of properties that guarantee that database transactions are
processed reliably, referred to as ACID (Atomicity, Consistency, Isolation,
Durability).
Atomicity
Atomicity refers to the ability of the database to guarantee that either all
of the tasks of a transaction are performed or none of them are. Database
modifications must follow an all or nothing rule. Each transaction is said to
be atomic if when one part of the transaction fails, the entire transaction
fails.
Consistency
The consistency property ensures that the database remains in a consistent
state before the start of the transaction and after the transaction is over
(whether successful or not). For example, in a storefront there is an inconsistent view
of what is truly available for purchase if inventory is allowed to fall below
0, making it impossible to provide more than an intent to complete a
transaction at checkout time. An example in a double-entry accounting system
illustrates the concept of a true transaction. Every debit requires an
associated credit. Both of these happen or neither happen.
A distributed data system is either strongly consistent or has some form of
weak consistency. Once again, using the storefront example, a database needs to provide consistency and isolation, so
that when one customer is reducing an item in stock and in parallel is
increasing the basket by one, this is isolated from another customer who will
have to wait while the data store catches up. At the other end of the spectrum
is BASE (Basically Available Soft-state Eventual consistency).
Weak consistency is sometimes referred to as eventual consistency, the
database eventually reaches a consistent state. Weak consistency systems are
usually ones where data is replicated; the latest version is sitting somewhere
in the cluster, older versions are still out there. Eventually all nodes will
see the latest version.
Isolation
Isolation refers to the requirement that other operations cannot access or
see the data in an intermediate state during a transaction. This constraint is
required to maintain the performance as well as the consistency between
transactions in a database. Thus, each transaction is unaware of another
transactions executing concurrently in the system.
Durability
Durability refers to the guarantee that once the user has been notified of
success, the transaction will persist, and not be undone. This means it will
survive system failure, and that the database system has checked the integrity
constraints and won't need to abort the transaction. Many databases implement
durability by writing all transactions into a transaction log that can be
played back to recreate the system state right before a failure. A transaction
can only be deemed committed after it is safely in the log.
Durability does not imply a permanent state of the database. Another
transaction may overwrite any changes made by the current transaction without
hindering durability.
|