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

Транзакция базы данных между двумя или более сетями

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

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

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

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

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

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

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

Синхронизация

В архитектурах, управляемых событиями , распределенные транзакции могут быть синхронизированы с использованием парадигмы «запрос-ответ» , и это может быть реализовано двумя способами: [2]

  • Создание двух отдельных очередей : одна для запросов, другая для ответов. Производитель событий должен ждать, пока не получит ответ.
  • Создание одной выделенной эфемерной очереди для каждого запроса.

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

Ссылки

  1. ^ Грей, Джим. Концепции и методы обработки транзакций . Морган Кауфманн. ISBN 9780080519555.
  2. ^ Ричардс, Марк. Основы архитектуры программного обеспечения: инженерный подход . O'Reilly Media. ISBN 978-1492043454.
  • "Web-Services Transactions". Архивировано из оригинала 11 мая 2008 г. Получено 2 мая 2005 г.
  • "Nuts And Bolts Of Transaction Processing". Статья об управлении транзакциями . Архивировано из оригинала 13 июля 2018 г. Получено 3 мая 2005 г.
  • «Подробное сравнение моделей Enterprise JavaBeans (EJB) и Microsoft Transaction Server (MTS)».

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

  • Герхард Вайкум, Готтфрид Фоссен, Транзакционные информационные системы: теория, алгоритмы и практика управления и восстановления параллелизма , Морган Кауфманн, 2002, ISBN 1-55860-508-8 
Получено с "https://en.wikipedia.org/w/index.php?title=Распределенная_транзакция&oldid=1253861283"