ACID, German also ACID is an acronym in computer science. It describes desirable properties of processing steps in database management systems (DBMS ) and distributed systems. It stands for atomicity, consistency, isolation and durability. One speaks in German also of ACID properties ( atomicity, consistency, isolation and durability). They are considered a prerequisite for the reliability of systems. The acronym ACID for the characterization of transactions was coined in 1983 by computer scientists Theo Harder and Andreas Reuter.
Atomicity ( seclusion )
From an atomic operation is when a sequence of data operations is either entirely or not at all ( all-or- nothing property). This is usually achieved by the use of transactions. The DBMS behaves to the user as if the transaction had a single elementary operation that can not be interrupted by other operations. Practically, the individual database statements that make up the transaction, of course, carried out sequentially, but globally only " to be validated and put into force " if they are successful completed. However, should it turn out during the transaction that these can not be fully completed, the original location is declared valid and rollback performed, that is, all statements executed bisherig undone, if necessary - or simply the meantime for the changes re-enabled shared memory area and leave the validity of the former.
Consistency means that a sequence of data operations after completion of a consistent data state leaves if the database before that was also consistent. This is achieved by normalization of the data base, as well as explicitly defined constraints, particularly of key and foreign key constraints.
The consistency criterion relates primarily to the content and referential integrity of a data set that needs to be ensured before and after a sequence of data operations. While maintaining the content integrity mainly depends on the database used operations, the referential integrity can be ensured automatically, as long as all redundancies in the dataset are handled automatically.
The normalization of a data inventory has the goal that all redundancies are there except through the primary key and foreign key avoided. Latter type of redundancy is inevitably because it is necessary to define relationships. All after normalization remaining redundancies (foreign key, intentionally preserved redundancies, etc.) must then be handled by constraints so that referential integrity is maintained in all possible data operations.
Insulation ( definition)
Through the principle of insulation is prevented / restricted that influence each other in concurrent execution whatever data operations. This is usually realized by the use of transactions in mixed read and write sequences, and in particular also in pure sense sequences. The transactional isolation level defines the allowed type of influence, popular attitudes are READ COMMITTED, REPEATABLE READ, and SERIALIZABLE.
The term durability indicates that data after the successful completion of a transaction are guaranteed permanently stored in the database. The permanent storage of data (software error or hardware failure) must be guaranteed even after a system failure. In particular, it must not lose data after a failure of the main memory. Durability can be ensured by writing a transaction log. A transaction allows, after a system failure to reproduce all missing in the database write operations.
Problems and Limitations
In distributed databases, there is a problem when all the ACID properties are to be met. These problems have been formulated in the CAP theorem of Brewer. In the environment of NoSQL databases ( Eventual consistency Basically Available, Soft state, ) is therefore often the BASE principle pursued.