Компенсационная сделка

Выполнение бизнес-процесса состоит из одной или нескольких транзакций . Каждая транзакция может состоять из нескольких отдельных операций, но в целом она перемещает систему между последовательными состояниями.

Существуют две группы систем, в которых может применяться компенсационная транзакция :

1. В контексте базы данных это часто легко достигается с помощью транзакций и механизма фиксации / отката . [1] Компенсирующая логика транзакций может быть реализована как дополнительная поверх базы данных, поддерживающей фиксацию/откат. В этом случае мы можем уменьшить гранулярность бизнес-транзакций.

2. Для систем без механизма фиксации/отката можно отменить неудачную транзакцию с помощью компенсирующей транзакции , которая вернет систему в исходное состояние. Обычно это всего лишь обходной путь , который должен быть реализован вручную и не может гарантировать, что система всегда будет в конечном итоге в согласованном состоянии. Разработчику системы может потребоваться рассмотреть, что произойдет, если компенсирующая транзакция также даст сбой.

Компенсирующие транзакции также используются в случае, когда транзакция является долгоживущей (обычно называемой транзакциями Saga ), например, в бизнес-процессе, требующем ввода данных пользователем. В таких случаях данные будут зафиксированы в постоянном хранилище, но впоследствии может потребоваться их откат, возможно, из-за того, что пользователь решит отменить операцию. В отличие от обычных откатов, для отката долгоживущей транзакции и восстановления системы в исходное состояние обычно требуется определенная бизнес-логика. Этот тип транзакции отличается от распределенных транзакций (часто реализуемых с использованием протокола двухфазной фиксации ), поскольку, хотя оба типа транзакций могут привести к обновлению нескольких хранилищ данных, компенсирующие транзакции позволяют обновлениям охватывать длительный период времени.

Компенсационные транзакции часто проектируются в виде веб-сервисов , которые участвуют в выполнении бизнес-процессов, являющихся частью сервисно-ориентированного архитектурного решения.

Обратите внимание, что компенсационные транзакции не всегда работают. [2]

Смотрите также

Ссылки

  1. ^ Грей, Джим (июнь 1981 г.). «Концепция транзакций: достоинства и ограничения». Труды конференции по очень большим базам данных .
  2. ^ Основы архитектуры программного обеспечения: инженерный подход . O'Reilly Media. 2020. ISBN 978-1492043454.
Взято с "https://en.wikipedia.org/w/index.php?title=Компенсационная_транзакция&oldid=1227504219"