DB2 Connect. Быстрый старт PE

Изменение информации на нескольких узлах (двухфазное принятие)

Этот раздел содержит обзор функции изменения информации на нескольких узлах для сценариев, которые включают серверы баз данных хоста и AS/400. Здесь описаны продукты и компоненты, необходимые для реализации программ PC, UNIX и Web, которые изменяют несколько баз данных DB2 за одну транзакцию.

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

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

Продукты DB2 полностью поддерживают многоузловые изменения. Эта поддержка действует как для прикладных программ, использующих обычный SQL, так и для прикладных программ, использующих продукты монитора транзакций, которые соответствуют спецификации интерфейса X/Open XA. Примеры таких продуктов - IBM TxSeries (CICS и Encina), IBM Message and Queuing Series, IBM Component Broker Series, IBM San Francisco Project, а также Microsoft Transaction Server (MTS), BEA Tuxedo и некоторые другие. Требования к настройке зависят от того, используется ли многоузловое изменение на основе самого SQL или многоузловое изменение на основе монитора транзакций.

Программы многоузлового изменения - и использующие собственно SQL, и использующие монитор транзакций - надо прекомпилировать с опциями CONNECT 2 SYNCPOINT TWOPHASE. В обоих случаях оператор SQL CONNECT указывает, какие базы данных надо использовать для последующих операторов SQL. Если монитор транзакций не сообщает DB2, что будет координировать транзакции (для этого он посылает DB2 вызов xa_open для установления соединения с базой данных), то для координации транзакций будет использоваться программное обеспечение DB2.

При использовании многоузлового изменения на основе TP Monitor прикладная программа должна затребовать принятие или откат, используя API TP Monitor, например, CICS SYNCPOINT, Encina Abort(), MTS SetAbort().

Когда используется многоузловое изменение на основе самого SQL, нужно использовать обычные операторы SQL COMMIT и ROLLBACK.

Монитор транзакций при многоузловом изменении может координировать транзакцию, которая обращается к менеджерам ресурсов как DB2, так и других СУБД, например, Oracle, Informix или SQLServer. Многоузловое изменение на основе SQL используется только с серверами DB2.

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

Распределенная транзакция может производить изменения на любом наборе поддерживаемых серверов баз данных. Например, прикладная программа может изменять несколько таблиц в DB2 Universal Database на Windows NT или Windows 2000, базу данных DB2 for OS/390 и базу данных DB2/400 в одной транзакции.


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]