Введение в BackOffice 2.5

Организация распределенных вычислений, MS DTC


В версию SQL Server 6.5 была впервые добавлено средство, автоматизирующее обработку распределенных транзакций в среде Windows NT и Windows95 - Microsoft Distributed Transaction Coordinator (MS DTC).

MS DTC является одним из первых примеров реализаций архитектуры Distributed Common Object Model. Он обеспечивает прикладным программам возможность использовать механизм OLE для манипуляции локальными и сетевыми объектами с автоматическим поддержанием распределенных транзакций на пространстве этих OLE объектов.

MS DTC в составе SQL Server 6.5 поддерживает подмножество OLE-DB для работы с данными, хранимыми на сервере, и управления самим SQL сервером.

В терминологии распределенных вычислений транзакцией называют процесс манипуляции данными, отвечающий требованиям ACID, что раскрывается как:

  • Atomicity, неделимость - либо все изменяемые данные переходят в новое состояние (фиксация), либо все изменения отменяются (откат);

  • Consistency, целостность - после изменения данные остаются непротиворечивыми;

  • Isolation, изолированность - состояние незавершенной транзакции не зависит от изменений, и состояния других незавершенных транзакций;

  • Durability, долговечность - после завершения транзакции, её результаты сохраняются даже при выходе системы из строя.

    Если программа для выполнения последовательности действий обращается только к одному серверу, функции DTC сводятся к передаче запросов программы SQL серверу, который обеспечивает выполнение транзакции собственными средствами, и результатов - прикладной программе.

    В случае, когда в процессе исполнения программы ей требуется доступ к удаленным источникам данных, схема взаимодействия усложняется, возникает необходимость координации выполнения запросов и применения механизма двухфазной фиксации транзакций. Рассмотрим рисунок 22.

    Рис. 22. Схема взаимодействия в распределенной транзакции

    Для выполнения согласованной фиксации или отката транзакции необходимо наличие координатора. Координатор порождает объект, представляющий распределённую транзакцию, и следит за согласованным выполнением операций ведомыми менеджерами транзакций и сохраняет статус текущей транзакции до момента её завершения.




    В SQL Server распределенная транзакция может быть инициирована явно, командой BEGIN DISTRIBUTED TRANSACTION, либо неявно, в момент вызова удаленной хранимой процедуры. В процессе исполнения прикладная задача может конкретно указать имя компьютера, DTC которого будет выполнять роль координатора. Если имя координатора не задано, то берется имя из реестра локальной станции, задаваемое в процессе настройки клиентской рабочей станции. Программа настройки входит в комплект клиентской части SQL Server и регистрирует себя в контрольной панели. Если и здесь имя не задано, в роли координатора выступает DTC сервера, к которому прикладная программа обратилась. Если распределённая транзакция инициируется неявно, методом вызова удаленной хранимой процедуры, координатором всегда становится локальный DTC.

    Кроме MS DTC для выполнения операций над распределенными данными может использоваться любой монитор, совместимый со стандартом TP-XA, к примеру TUXEDO, ECINA или TOPEND. Настройки SQL Server для использования с мониторами транзакций третьих фирм не входят в программу курса и далее не рассматриваются. За более подробной информацией следует обращаться к руководству по SQL Server, технической библиотеке Tech-Net и документации по конкретному XA-совместимому монитору.

    Настройка серверной компоненты DTC выполняется в SQL Enterprise Manager. Администратор может установить уровень отладочных сообщений в журнале регистрации распределенных транзакций, разрешить или запретить трассировку, просмотреть историю исполнения транзакций, просмотреть список незавершенных транзакций, их текущее состояние и принять решение о принудительной фиксации или откате.


    Содержание раздела