Definition: ACID
ACID is an acronym that stands for Atomicity, Consistency, Isolation, and Durability. Is standard database terminology that refers to the characteristics that can be achieved using the transactional nature of the database. These elements include:
- Atomicity – Each transaction performed in the database should be considered atomic. That is, it will either completely succeed or completely fail – it will never partially succeed such that some changes that are part of the transaction are applied while others are not.
- Consistency – The database will always be in a consistent state such that the integrity of its contents will be preserved. It should not be possible for a successful or failed transaction to leave the database in an inconsistent state.
- Isolation – The operations performed as part of a transaction will be isolated from other operations performed in the database at the same time. If one transaction is used to make a number of changes to database contents, then it should not be possible for another transactional operation to see the effects of those changes until they have been committed.
- Durability – Any transaction that the database has reported as complete and committed successfully is guaranteed to be on persistent storage. Even if the directory server, or the underlying JVM, operating system, or hardware should fail the instant after the notification of the successful commit, then that change will not be lost.
The Berkeley DB Java Edition used as the data store for the primary Sun OpenDS SE backend provides full support for ACID compliance, although it also provides methods for relaxing its compliance to these constraints if desirable for performance reasons. Sun OpenDS SE exposes some of this flexibility, particularly with regard to configuring how durable the changes will be (for example, it is possible to configure the server so that changes are not immediately flushed to disk, which may allow better write performance but could cause the loss of one or more changes in the event of a hardware or software failure).