Gerenciamento de Transação e Suporte

Uma introdução ao gerenciamento de transações e como IBM® MQ suporta transações.

Um gerenciador de recursos é um subsistema do computador que possui e gerencia recursos que podem ser acessados e atualizados por aplicativos. Aqui estão exemplos de gerenciadores de recursos:
  • Um gerenciador de filas IBM MQ , com recursos que são suas filas
  • Um banco de dados Db2® , com recursos que são suas tabelas

Quando um aplicativo atualiza os recursos de um ou mais gerenciadores de recursos, pode haver um requisito de negócios para assegurar que determinadas atualizações sejam concluídas com êxito como um grupo ou que nenhuma delas seja concluída. A razão para este tipo de requisito é que os dados de negócios seriam deixados em um estado inconsistente se algumas destas atualizações fossem concluídas com êxito mas outras não.

As atualizações nos recursos que são gerenciados desta maneira são para ocorrer em uma unidade de trabalho ou em uma transação. Um programa de aplicativo pode agrupar um conjunto de atualizações em uma unidade de trabalho.

Durante uma unidade de trabalho, um aplicativo emite pedidos para gerenciadores de recursos atualizarem seus recursos. A unidade de trabalho é finalizada quando o aplicativo emite um pedido para confirmar todas as atualizações. Até as atualizações serem confirmadas, nenhuma delas se torna visível para outros aplicativos que estão acessando os mesmos recursos. Alternativamente, se o aplicativo decidir que ele não pode concluir a unidade de trabalho por qualquer razão, ele poderá emitir um pedido para restaurar todas as atualizações que ele solicitou até esse ponto. Neste caso, nenhuma das atualizações se tornará visível para outros aplicativos. Essas atualizações são relacionadas logicamente e devem ser todas bem-sucedidas para que a integridade de dados seja preservada. Se uma atualização for bem-sucedida enquanto outra falhar, a integridade de dados será perdida.

Quando uma unidade de trabalho for concluída com êxito, será considerada confirmada. Uma vez confirmadas, todas as atualizações feitas nessa unidade de trabalho serão permanentes e irreversíveis. No entanto, se a unidade de trabalho falhar, todas as atualizações serão revertidas. Este processo, no qual as unidades de trabalho são confirmadas ou revertidas com integridade, é conhecido como coordenação do ponto de sincronização.

O momento em que todas as atualizações em uma unidade de trabalho são confirmadas ou revertidas é chamado de sync point. Uma atualização em uma unidade de trabalho deve ocorrer no controle do ponto de sincronização. Se um aplicativo solicitar uma atualização que está fora do controle do ponto de sincronização, o gerenciador de recursos confirmará a atualização imediatamente, mesmo se houver uma unidade de trabalho em progresso e a atualização não puder ser revertida posteriormente.

O subsistema do computador que gerencia unidades de trabalho é chamado de gerenciador de transações, ou ponto de coordenador.

Uma unidade de trabalho local é aquela em que os únicos recursos atualizados são aqueles do gerenciador de filas IBM MQ . Aqui a coordenação do ponto de sincronização é fornecida pelo próprio gerenciador de filas usando um processo de confirmação de fase única.

Uma unidade global global é aquela na qual os recursos que pertencem a outros gerenciadores de recursos, como bancos de dados compatíveis com XA, também são atualizados. Aqui, um procedimento de confirmação de duas fases deve ser usado e a unidade de trabalho pode ser coordenada pelo próprio gerenciador de filas ou externamente por outro gerenciador de transações compatível com XA, como IBM TXSeries® ou BEA Tuxedo.

Um gerenciador de transações é responsável por assegurar que todas as atualizações nos recursos em uma unidade de trabalho sejam concluídas com êxito ou que nenhuma delas seja concluída. É para um gerenciador de transações que um aplicativo emite um pedido para confirmar ou restaurar uma unidade de trabalho. Exemplos de gerentes de transações são CICS® e WebSphere® Application Server, embora ambos estes possuam outra função também.

Alguns gerenciadores de recursos fornecem sua própria função de gerenciamento de transação. Por exemplo, um gerenciador de filas IBM MQ pode gerenciar unidades de trabalho envolvendo atualizações em seus próprios recursos e atualizações em tabelas Db2 . O gerenciador de filas não precisa de um gerenciador de transações separado para executar esta função, embora um possa ser usado se ele for um requisito do usuário. Se um gerenciador de transações separado for usado, ele será referido como um gerenciador de transações externo.

Para um gerenciador de transações externo gerenciar uma unidade de trabalho, deve haver uma interface padrão entre o gerenciador de transações e cada gerenciador de recursos que está participando da unidade de trabalho. Esta interface permite que o gerenciador de transações e um gerenciador de recursos se comuniquem entre si. Uma destas interfaces é a Interface XA, que é uma interface padrão suportada por vários gerenciadores de transações e gerenciadores de recursos. A Interface XA é publicada pelo The Open Group em Processamento de Transações Distribuídas: A Especificação XA.

Quando mais de um gerenciador de recursos participa de uma unidade de trabalho, um gerenciador de transações deve usar um protocolo two-phase commit para assegurar que todas as atualizações na unidade de trabalho sejam concluídas com êxito ou que nenhuma delas seja concluída, mesmo se houver uma falha do sistema. Quando um aplicativo emitir um pedido para um gerenciador de transações confirmar uma unidade de trabalho, o gerenciador de transações fará o seguinte:
Fase 1 (Preparação para Confirmação)
O gerenciador de transações solicita a cada gerenciador de recursos que participa da unidade de trabalho para assegurar que todas as informações sobre as atualizações destinadas aos seus recursos estejam em um estado recuperável. Um gerenciador de recursos normalmente faz isto gravando as informações em um log e assegurando que as informações sejam gravadas no disco rígido. A Fase 1 é concluída quando o gerenciador de transações recebe notificação de cada gerenciador de recursos de que as informações sobre as atualizações destinadas aos seus recursos estão em um estado recuperável.
Fase 2 (Confirmação)
Quando a Fase 1 estiver concluída, o gerenciador de transações tomará a decisão irrevogável de confirmar a unidade de trabalho. Ele solicitará a cada gerenciador de recursos que participa da unidade de trabalho para confirmar as atualizações em seus recursos. Quando um gerenciador de recursos receber este pedido, ele deverá confirmar as atualizações. Ele não tem a opção de restaurar este estágio. A Fase 2 é concluída quando o gerenciador de transações recebe notificação de cada gerenciador de recursos de que ele confirmou as atualizações em seus recursos.
A Interface XA um protocolo two-phase commit.

Para obter mais informações, consulte Cenários de suporte transacional.

O IBM MQ também fornece suporte para o Microsoft Transaction Server (COM+). O uso do Microsoft Transaction Server (COM+) fornece informações sobre como configurar o IBM MQ para aproveitar o suporte do COM+.