Распределенная транзакция является транзакций базы данных , в которой участвуют два или более сетевых хостов. Обычно хосты предоставляют транзакционные ресурсы , в то время как менеджер транзакций отвечает за создание и управление глобальной транзакцией, которая охватывает все операции с такими ресурсами. Распределенные транзакции, как и любые другие транзакции , должны обладать всеми четырьмя свойствами ACID (атомарность, согласованность, изоляция, долговечность) , где атомарность гарантирует результат «все или ничего» для единицы работы (пакета операций).
Open Group, консорциум поставщиков, предложил модель X / Open Distributed Transaction Processing (DTP) Model (X / Open XA), которая стала фактическим стандартом поведения компонентов модели транзакций.
Базы данных являются общими транзакционными ресурсами, и часто транзакции охватывают несколько таких баз данных. В этом случае распределенную транзакцию можно рассматривать как транзакцию базы данных, которая должна быть синхронизирована (или предоставлять свойства ACID ) между несколькими участвующими базами данных, которые распределены между различными физическими местоположениями. Свойство изоляции (I ACID) представляет собой особую проблему для транзакций с несколькими базами данных, поскольку свойство (глобальной) сериализуемости может быть нарушено, даже если каждая база данных предоставляет его (см. Также глобальную сериализуемость ). На практике большинство коммерческих систем баз данных используют строгую двухфазную блокировку (SS2PL) для управления параллелизмом , которая обеспечивает глобальную сериализуемость, если все участвующие базы данных используют ее. (см. также заказ обязательств для нескольких баз данных.)
Распространенным алгоритмом обеспечения правильного завершения распределенной транзакции является двухфазная фиксация (2PC). Этот алгоритм обычно применяется для обновлений, которые могут быть зафиксированы за короткий период времени, от пары миллисекунд до пары минут.
Также существуют долговременные распределенные транзакции, например транзакция по бронированию поездки, которая состоит из бронирования рейса, аренды автомобиля и отеля. Поскольку бронирование рейса может занять до дня, чтобы получить подтверждение, двухэтапная фиксация здесь не применима, она заблокирует ресурсы на это время. В этом случае используются более сложные методы, включающие несколько уровней отмены. Так же, как вы можете отменить бронирование отеля, позвонив на стойку регистрации и отменив бронирование, система может быть разработана для отмены определенных операций (если они не были окончательно завершены).
На практике долгоживущие распределенные транзакции реализуются в системах на основе веб-сервисов . Обычно в этих транзакциях используются принципы компенсационных транзакций , оптимизма и изоляции без блокировки. Стандарт X / Open не распространяется на долгоживущие DTP.
Некоторые современные технологии, включая Enterprise Java Beans (EJB) и Microsoft Transaction Server (MTS), полностью поддерживают стандарты распределенных транзакций.
Смотрите также
Рекомендации
- «Транзакции веб-сервисов» . Архивировано из оригинала на 11 мая 2008 года . Проверено 2 мая 2005 года .
- "Гайки и болты обработки транзакций" . Статья об управлении транзакциями . Проверено 3 мая 2005 года .
- «Подробное сравнение моделей Enterprise JavaBeans (EJB) и Microsoft Transaction Server (MTS)» .
дальнейшее чтение
- Герхард Вейкум, Готфрид Фоссен, Транзакционные информационные системы: теория, алгоритмы и практика управления параллельным выполнением и восстановления , Морган Кауфманн, 2002, ISBN 1-55860-508-8