Transaction processing means dividing information processing up into individual, indivisible
operations, called transactions, that complete or fail as a whole; a transaction can’t remain
in an intermediate or incomplete state (so other processes can’t access the transaction’s data
until either the transaction has completed or it has been “rolled back” after failure).
Transaction processing is designed to maintain database integrity (the consistency of related
data items) in a known, consistent state.
A transaction, a typical example of which would be a customer order, consists of a series of
events (accepting the order, allocating stock and so forth) that are treated as a whole. While
theoretically transaction processing is a subset of event processing the integrity
considerations described above mean that it is treated as a separate function.
Transaction processing databases are databases that have been designed specifically to
optimise the performance of transaction processing, which is often referred to as OLTP
(online transaction processing).
Relational database management systems (DBMSs) were originally designed to support
transaction processing. An example of a transaction would be processing a customer order
and all the ancillary requirements that go along with that, such as decrementing inventory,
arranging shipping, placing manufacturing orders and so on. Transactions may also occur in
other environments, for example between an organisation and its staff (HR applications), in
marketing, production control and elsewhere. Typically, but not always, these types of
applications have been implemented on top of relational databases.
However, relational DBMSs are not the only vehicles for transaction processing for historical
reasons as well as (sometimes) for valid technical reasons.In addition to transactional
applications based on purely relational data, relational databases have subsumed XML and
object-oriented capabilities over the years so that hybrid transactional environments that
require the use of these technologies alongside relational data also fall into this category
though pure-play XML and object-oriented databases remain part of the market for
specialist applications.
In addition, there are still many companies that rely on older, hierarchical DBMSs for OLTP
(on-line transaction processing) partly because of the difficulties involved with migrating
away from those platforms and also partly because these types of databases are very
efficient for this type of workload. There are also large numbers of companies that rely on
multi-valued (sometimes called NF2) databases for applications that have typically been
provided as a package by a third party.
Apart from performance and other generalised considerations the major requirements for
transaction processing databases are so-called ACID properties and, typically, support for
XA-compliant two-phase commit (where an XA compliant driver is a driver that can
participate in anXA compliant transaction as defined by the X/Open specification). The
former are properties that ensure that transactions are processed reliably and the latter
specifically supports atomicity (the A in ACID), ensuring that all transactions are either
completed in full or rolled back. Note that there are a variety of XML, NoSQL and Graph
databases that are both ACID and XA compliant.