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