分散トランザクション
複数のDBやサービスにまたがるトランザクション。古典的な解はXAプロトコルによる2PC(二相コミット)だが、コーディネーターが落ちると宙づりになり、往復通信のせいで遅くもなる。
典型例は二つの銀行間の送金や、注文DBと在庫DBにまたがる受注処理である。XAコーディネーターにはAtomikos、Narayana(JBoss)、MS DTCなどがある。PostgreSQLはJava/JTA経由でXAに対応する。現代のマイクロサービスでは分散トランザクションを避け、補償処理を使うSagaパターンやイベントソーシングで代替することが多い。SpannerやCockroachDBはPaxos/Raftによって内部で透過的に実現している。CAP定理の通り、複数ノードにまたがる強い一貫性は、ネットワーク分断時の可用性と引き換えになる。