Atomicity
Encyclopedia
In database system
s, atomicity (or atomicness; from Gr.
a-tomos, undividable) is one of the ACID
transaction
properties. In an atomic transaction, a series of database operations either all occur, or nothing occurs. A guarantee of atomicity prevents updates to the database occurring only partially, which can cause greater problems than rejecting the whole series outright. In other words, atomicity means indivisibility and irreducibility.
The etymology of the phrase originates in the Classical Greek concept of a fundamental and indivisible component; see atom
.
An example of atomicity is ordering an airline ticket where two actions are required: payment, and a seat reservation. The potential passenger must either:
The booking system does not consider it acceptable for a customer to pay for a ticket without securing the seat, nor to reserve the seat without payment succeeding.
An another example:
If one want to transfer some amount of money from one account to another, he/she would do procedure for it, but if there will be some failure during the process, due to atomicty the process of transfering amount will either done completely or will not even start. Thus atomicity protects the user from losing money due to a failed transaction. This is the main advantage of database over the file system.
properties of the transactions. For example, isolation
relies on atomicity to roll back changes in the event of isolation failures such as deadlock
; consistency also relies on rollback in the event of a consistency-violation by an illegal transaction. Finally, atomicity itself relies on durability
to ensure the atomicity of transactions even in the face of external failures.
As a result of this, failure to detect errors and manually roll back the enclosing transaction may cause failures of isolation and consistency.
). Databases usually implement this using some form of logging/journaling to track changes. The system synchronizes the logs (often the metadata
) as necessary once the actual changes have successfully taken place. Afterwards, crash recovery simply ignores incomplete entries. Although implementations vary depending on factors such as concurrency issues, the principle of atomicity — i.e. complete success or complete failure — remain.
Ultimately, any application-level implementation relies on operating-system
functionality, which in turn makes use of specialized hardware to guarantee that an operation remains non-interruptible: either by software attempting to re-divert system resources (see pre-emptive multitasking) or by resource-unavailability (such as power-outages). For example, POSIX
-compliant systems provide the
that allows applications to atomically open a file. Other popular system-calls that may assist in achieving atomic operations from userspace include
The hardware level requires atomic operations
such as test-and-set
(TAS), or atomic increment/decrement operations. In their absence, or when necessary, raising the interrupt level to disable all possible interrupts (of hardware and software origin) may serve to implement the atomic synchronization function primitives
. Systems often implement these low-level operations in machine language or in assembly language
.
In NoSQL data store
s with eventual consistency, the atomicity is also weaker specified than in relational database systems, and exists only in rows (i.e. column families
).
Database system
A database system is a term that is typically used to encapsulate the constructs of a data model, database Management system and database....
s, atomicity (or atomicness; from Gr.
Greek language
Greek is an independent branch of the Indo-European family of languages. Native to the southern Balkans, it has the longest documented history of any Indo-European language, spanning 34 centuries of written records. Its writing system has been the Greek alphabet for the majority of its history;...
a-tomos, undividable) is one of the ACID
ACID
In computer science, ACID is a set of properties that guarantee database transactions are processed reliably. In the context of databases, a single logical operation on the data is called a transaction...
transaction
Database transaction
A transaction comprises a unit of work performed within a database management system against a database, and treated in a coherent and reliable way independent of other transactions...
properties. In an atomic transaction, a series of database operations either all occur, or nothing occurs. A guarantee of atomicity prevents updates to the database occurring only partially, which can cause greater problems than rejecting the whole series outright. In other words, atomicity means indivisibility and irreducibility.
The etymology of the phrase originates in the Classical Greek concept of a fundamental and indivisible component; see atom
Atom
The atom is a basic unit of matter that consists of a dense central nucleus surrounded by a cloud of negatively charged electrons. The atomic nucleus contains a mix of positively charged protons and electrically neutral neutrons...
.
An example of atomicity is ordering an airline ticket where two actions are required: payment, and a seat reservation. The potential passenger must either:
- both pay for and reserve a seat; OR
- neither pay for nor reserve a seat.
The booking system does not consider it acceptable for a customer to pay for a ticket without securing the seat, nor to reserve the seat without payment succeeding.
An another example:
If one want to transfer some amount of money from one account to another, he/she would do procedure for it, but if there will be some failure during the process, due to atomicty the process of transfering amount will either done completely or will not even start. Thus atomicity protects the user from losing money due to a failed transaction. This is the main advantage of database over the file system.
Orthogonality
Atomicity does not behave completely orthogonally with regard to the other ACIDACID
In computer science, ACID is a set of properties that guarantee database transactions are processed reliably. In the context of databases, a single logical operation on the data is called a transaction...
properties of the transactions. For example, isolation
Isolation (computer science)
In database systems, isolation is a property that defines how/when the changes made by one operation become visible to other concurrent operations. Isolation is one of the ACID properties.-Isolation levels:...
relies on atomicity to roll back changes in the event of isolation failures such as deadlock
Deadlock
A deadlock is a situation where in two or more competing actions are each waiting for the other to finish, and thus neither ever does. It is often seen in a paradox like the "chicken or the egg"...
; consistency also relies on rollback in the event of a consistency-violation by an illegal transaction. Finally, atomicity itself relies on durability
Durability (computer science)
In database systems, durability is the ACID property which guarantees that transactions that have committed will survive permanently.For example, if a flight booking reports that a seat has successfully been booked, then the seat will remain booked even if the system crashes.Durability can be...
to ensure the atomicity of transactions even in the face of external failures.
As a result of this, failure to detect errors and manually roll back the enclosing transaction may cause failures of isolation and consistency.
Implementation
Typically, systems implement atomicity by providing some mechanism to indicate which transactions have started and which finished; or by keeping a copy of the data before any changes occurred. Several filesystems have developed methods for avoiding the need to keep multiple copies of data, using journaling (see journaling file systemJournaling file system
A journaling file system is a file system that keeps track of the changes that will be made in a journal before committing them to the main file system...
). Databases usually implement this using some form of logging/journaling to track changes. The system synchronizes the logs (often the metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...
) as necessary once the actual changes have successfully taken place. Afterwards, crash recovery simply ignores incomplete entries. Although implementations vary depending on factors such as concurrency issues, the principle of atomicity — i.e. complete success or complete failure — remain.
Ultimately, any application-level implementation relies on operating-system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
functionality, which in turn makes use of specialized hardware to guarantee that an operation remains non-interruptible: either by software attempting to re-divert system resources (see pre-emptive multitasking) or by resource-unavailability (such as power-outages). For example, POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...
-compliant systems provide the
open(2)
system callSystem call
In computing, a system call is how a program requests a service from an operating system's kernel. This may include hardware related services , creating and executing new processes, and communicating with integral kernel services...
that allows applications to atomically open a file. Other popular system-calls that may assist in achieving atomic operations from userspace include
fcntl(2)
, fdatasync(2)
, flock(2)
, fsync(2)
, mkdir(2)
, rasctl(2)
(NetBSD re-startable sequences), rename(2)
, semop(2)
, sem_post(2)
, and sem_wait(2)
.The hardware level requires atomic operations
Linearizability
In concurrent programming, an operation is atomic, linearizable, indivisible or uninterruptible if it appears to the rest of the system to occur instantaneously. Atomicity is a guarantee of isolation from concurrent processes...
such as test-and-set
Test-and-set
In computer science, the test-and-set instruction is an instruction used to write to a memory location and return its old value as a single atomic operation. If multiple processes may access the same memory, and if a process is currently performing a test-and-set, no other process may begin...
(TAS), or atomic increment/decrement operations. In their absence, or when necessary, raising the interrupt level to disable all possible interrupts (of hardware and software origin) may serve to implement the atomic synchronization function primitives
Language primitive
In computing, language primitives are the simplest elements available in a programming language. A primitive can be defined as the smallest 'unit of processing' available to a programmer of a particular machine, or can be an atomic element of an expression in a language.-Machine level primitives:A...
. Systems often implement these low-level operations in machine language or in assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...
.
In NoSQL data store
Data store
A data store is a data repository of a set of integrated objects. These objects are modeled using classes defined in database schemas. Data store includes not only data repositories like databases, it is a more general concept that includes also flat files that can store data.Some data stores do...
s with eventual consistency, the atomicity is also weaker specified than in relational database systems, and exists only in rows (i.e. column families
Column family
A column family is a NoSQL object that contains columns of related data. It is a tuple that consists of a key-value pair, where the key is mapped to a value that is a set of columns. In analogy with relational databases, a column family is as a "table", each key-value pair being a "row". Each...
).
See also
- Atomic operation
- Transaction processingTransaction processingIn computer science, transaction processing is information processing that is divided into individual, indivisible operations, called transactions. Each transaction must succeed or fail as a complete unit; it cannot remain in an intermediate state...
- Long-running transaction