Distributed transaction
Transaction that spans multiple DBs or services. Classic solution: 2PC (Two-Phase Commit) via XA protocol. Notoriously complex: coordinator failure = stuck transactions, performance poor due to roundtrips.
Use case: bank transfer between two banks, order fulfillment over order DB + inventory DB. Modern microservices avoid distributed transactions — use Saga pattern (compensating actions) or event sourcing instead. XA coordinators: Atomikos, Narayana (JBoss), MS DTC. PostgreSQL supports XA via Java/JTA. Spanner + CockroachDB make distributed transactions transparent internally via Paxos/Raft. CAP theorem trade-off: strong consistency across multiple nodes = worse availability during partitions.