Transactions and beyond it..
While data integrity is managed very effectively within a single database with row locking, deadlock detection, and roll-back features, distributed data integrity is far more complex. Recovery in a distributed database environment involves ensuring that the entire transaction has completed successfully before issuing a COMMIT to each of the subcomponents in the overall transaction. This can often be a cumbersome chore, and it is the idea behind the the two-phase commit.
One popular alternative to the two-phase commit is replicating information and relying on asynchronous replication techniques to enforce the data integrity. e.g. MS's implementation- https://technet.microsoft.com/en-us/library/ms152501(v=sql.105).aspx