stringtranslate.com

Распределенная транзакция

Распределенная транзакция — это транзакция базы данных , в которой участвуют два или более сетевых хоста. Обычно хосты предоставляют транзакционные ресурсы , а менеджер транзакций создает и управляет глобальной транзакцией, охватывающей все операции с такими ресурсами. Распределенные транзакции, как и любые другие транзакции , должны иметь все четыре свойства ACID (атомарность, согласованность, изоляция, долговечность) , при этом атомарность гарантирует результаты «все или ничего» для единицы работы (пакета операций).

Консорциум поставщиков Open Group предложил модель обработки распределенных транзакций X/Open (X/Open XA), которая стала де-факто стандартом поведения компонентов модели транзакций.

Базы данных являются общими транзакционными ресурсами, и часто транзакции охватывают несколько таких баз данных. В этом случае распределенную транзакцию можно рассматривать как транзакцию базы данных , которую необходимо синхронизировать (или предоставить свойства ACID ) между несколькими участвующими базами данных , которые распределены по разным физическим местоположениям. Свойство изоляции (I ACID) представляет собой особую проблему для транзакций с несколькими базами данных, поскольку свойство (глобальной) сериализуемости может быть нарушено, даже если каждая база данных предоставляет его (см. также глобальную сериализуемость ). На практике большинство коммерческих систем баз данных используют сильную строгую двухфазную блокировку (SS2PL) для управления параллелизмом , что обеспечивает глобальную сериализуемость, если все участвующие базы данных используют ее. (см. также порядок выполнения обязательств для мультибаз данных.)

Распространенным алгоритмом обеспечения правильного завершения распределенной транзакции является двухфазная фиксация (2PC). Этот алгоритм обычно применяется для обновлений, которые могут быть зафиксированы за короткий период времени, от пары миллисекунд до пары минут.

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

На практике долгоживущие распределенные транзакции реализуются в системах на базе веб-сервисов . Обычно в этих транзакциях используются принципы компенсирующих транзакций , оптимизма и изоляции без блокировки. Стандарт X/Open не распространяется на долгоживущие распределенные транзакции. [ нужна цитата ]

Некоторые технологии, включая Jakarta Enterprise Beans и Microsoft Transaction Server, полностью поддерживают стандарты распределенных транзакций.

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

Рекомендации

дальнейшее чтение