Compensating transaction とは

ビジネスプロセスの実行は、1つ以上のトランザクションで構成されます。各トランザクションは、いくつかの個別の操作で構成されていますが、全体としては、システムを一貫した状態に移動します。
補償取引が適用されるシステムには、2つのグループがあります。
1.データベースのコンテキストでは、これはトランザクションとコミット/ロールバックメカニズムを使用して容易に達成されることがよくあります。トランザクションロジックを補償することは、コミット/ロールバックをサポートするデータベースの上に追加して実装することができます。その場合、ビジネストランザクションの粒度を減らすことができます。
2.コミット/ロールバック機構が利用できないシステムでは、補償トランザクションで失敗したトランザクションを元に戻すことができます。これにより、システムは初期状態に戻ります。通常、これは手動で実装する必要がある回避策であり、システムが常に一貫した状態で終了することを保証するものではありません。システム設計者は、補償トランザクションも失敗した場合に何が起こるかを考慮する必要があります。
補償取引は、取引が長期間行われる場合(一般には佐賀取引と呼ばれる)、例えばユーザ入力を必要とするビジネスプロセスにおいても使用される。そのような場合、データは永続的な格納にコミットされますが、おそらくユーザーが操作をキャンセルすることを選択したためにロールバックする必要があります。従来のロールバックとは異なり、通常は長期間のトランザクションをロールバックしてシステムを元の状態に復元するために、特定のビジネスロジックが必要になります。このタイプのトランザクションは分散型トランザクション(2フェーズコミットプロトコルを使用して実装されることが多い)とは異なります。両方のタイプのトランザクションで複数のデータストアが更新される可能性がありますが、補償トランザクションにより、
補償トランザクションは、サービス指向アーキテクチャー・ソリューションの一部であるビジネス・プロセスの実行に関与するWebサービスに設計されることがよくあります。