Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

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

Распределенные транзакцииТранзакции, охватывающие несколько баз данных, называют Распределенными. Такие транзакции по своей природе достаточно сложны и требуют дополнительных знаний и навыков.

В Oracle 11g детали обработки транзакций скрыты посредством Связей базы данных, полностью квалифицирующих объекты. Сервер СУБД управляет этими транзакциями и полностью отвечает за целостность данных. Специальная инструкция advise определяет, должна ли транзакция откатываться или подтверждаться, если ее состояние в базе данных становится сомнительным. В IBM DB2 9.5 распределенные транзакции маркируются как DUOW (Distributed Unit Of Work — распределенная единица работы), при этом их координированием занимается диспетчер базы данных (Database Manager).

Распределенные транзакции предполагают двухэтапное выполнение инструкции commit, основанное на стандартном протоколе X/Open XA координации обработки DUOW. Это позволяет участвовать в транзакции гетерогенным источникам данных. К примеру, пакетный запрос может модифицировать таблицы в Oracle 11g, DB2 9.5 и Microsoft SQL Server 2008 в контексте одной транзакции. В Microsoft SQL Server 2008 задача управления распределенными транзакциями возлагается на координатор распределенных транзакций (MSDTC). (Могут быть задействованы и другие диспетчеры транзакций, совместимые с протоколом X/Open XA.) Распределенная транзакция должна начинаться явно инструкцией begin distributed transaction] . Распределенные транзакции должны минимизировать риск потери данных в случае сетевого сбоя. Реализация двухэтапного выполнения инструкции commit отличается в разных реализациях, однако имеет следующие общие черты. Подготовительный этап. Когда координатор транзакций получает инструкцию commit, он направляет ее всем диспетчерам ресурсов, вовлеченным в транзакцию, и те выполняют подготовку к подтверждению транзакции. Этап подтверждения. На этом этапе выполняется реальная фиксация изменений в базах данных; отчет об успешном подтверждении направляется диспетчеру транзакций. Когда все подтверждения получены, координатор отправляет уведомление клиентскому приложению. Если какой-либо из диспетчеров ресурсов не уведомил координатора об успешной фиксации изменений в своей базе, всем диспетчерам ресурсов отправляется команда rollback. Для выполнения отката после подтверждения транзакции диспетчеры ресурсов обычно используют журнал транзакций.