보상거래

Compensating transaction

비즈니스 프로세스의 실행은 하나 이상의 거래로 구성된다.각 거래는 여러 개의 개별적인 영업으로 구성될 수 있지만 전체적으로 일관된 상태 사이에서 시스템을 이동시킨다.

보상거래를 적용할 수 있는 시스템에는 다음과 같은 두 가지 그룹이 있다.

1. 데이터베이스의 맥락에서, 이것은 종종 트랜잭션커밋/롤백 메커니즘을 사용하여 쉽게 달성된다.[1]보상 트랜잭션 논리는 커밋/롤백을 지원하는 데이터베이스 위에 추가적으로 구현될 수 있다.그 경우, 우리는 비즈니스 거래의 세분화를 줄일 수 있다.

2. 커밋/롤백 메커니즘이 없는 시스템의 경우, 보상 거래로 실패한 거래를 취소할 수 있으며, 이는 시스템을 초기 상태로 되돌릴 것이다.일반적으로 이것은 수동으로 구현해야 하는 해결책일 뿐이며 시스템이 항상 일관된 상태로 종료된다는 것을 보장할 수 없다.시스템 설계자는 보상거래도 실패하면 어떻게 되는지 고려할 필요가 있을 수 있다.

보상거래는 거래가 오래 존속된 경우(일반적으로 사가 거래라고 함), 예를 들어 사용자 입력이 필요한 사업 프로세스에서도 사용된다.이 경우 데이터는 영구 스토리지에 커밋되지만 사용자가 작업을 취소하기로 선택했기 때문에 나중에 롤백해야 할 수 있다.기존의 롤백과는 달리, 특정 비즈니스 논리는 일반적으로 오래 지속된 거래를 롤백하고 시스템을 원래 상태로 복원하기 위해 요구될 것이다.이러한 유형의 트랜잭션은 분산 트랜잭션(두 단계 커밋 프로토콜을 사용하여 구현되는 경우가 많음)과는 다르다. 두 유형의 트랜잭션 모두 여러 데이터 저장소를 업데이트하는 결과를 초래할 수 있지만, 보상 트랜잭션은 업데이트를 장기간 지속할 수 있도록 허용하기 때문이다.

보상거래는 종종 서비스 지향 아키텍처 솔루션의 일부인 비즈니스 프로세스의 실행에 참여하는 웹 서비스로 설계된다.

참고 항목

참조

  1. ^ Gray, Jim (June 1981). "The transaction concept: Virtues and limitations". Proceedings of the Very Large Database Conference.