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