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

редактировать

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

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

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

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

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

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

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

См. Также

Ссылки

Дополнительная литература

  • Герхард Вейкум, Готфрид Фоссен, Транзакционные информационные системы: теория, алгоритмы, а также практика контроля и восстановления параллелизма, Морган Кауфманн, 2002, ISBN 1-55860-508-8
Последняя правка сделана 2021-05-17 09:16:28
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте