|
Acadêmico(a): Christiano Marcio Borchardt |
Título: Desenvolvimento de um Mecanismo Gerenciador de Transações para Sistemas Distribuídos |
|
Introdução: |
Um “sistema distribuído” é qualquer sistema que envolve múltiplas localidades conectadas juntas em uma espécie de rede de comunicações, nas quais o usuário (usuário final ou programador de aplicação) de qualquer localidade pode acessar os dados armazenados em outro local (Date, 1988). Segundo uma recente publicação de Raynal (2001), sistemas distribuídos são difíceis de modelar e de implementar, por causa da imprevisibilidade e demora de transferência de mensagens, velocidade de execução de processos e tratamento de falhas. Tais variáveis tornam o sistema vulnerável a anormalidades, principalmente quando este estiver executando uma transação envolvendo diversas operações. Grandes corporações em transportes, finanças, telecomunicações, órgãos governamentais e militares, necessitam que suas aplicações se utilizem de mecanismos de transação para garantir a integridade das tarefas e dados de suas aplicações. Uma transação de negócios normalmente requer a execução de múltiplas operações. Por exemplo, considera-se a compra de um item em um grande departamento de vendas. Uma operação registra o pagamento do item e outra operação registra a remoção do item do local de estocagem. A transação deve ser feita por completo, ou seja, se uma das operações acima for executada com sucesso, e a outra não, haverá uma grande falha na consistência dos dados, pois a venda do item pode ser registrada e a quantidade em estoque não corresponde a realidade por motivo de alguma falha na baixa. A finalidade de qualquer banco de dados é executar transações. No entanto, a noção de transação requer definição cuidadosa no ambiente distribuído, porque ela pode envolver a execução de código em múltiplos componentes do sistema (processamento de transações distribuído). Uma transação é definida como sendo uma unidade de recuperação (uma unidade lógica de trabalho) e um agente como sendo a execução do processo por conta de alguma transação em particular, em algum elemento em especial (isto é, um representante daquela transação, naquele componente) (Date, 1991). Um sistema de processamento de transações é uma coleção de programas de transação designados a fazer as funções necessárias para automatizar uma atividade de negócio. O primeiro sistema de transação on-line foi um sistema de reservas de uma companhia aérea. O sistema foi chamado de SABRE, desenvolvido em meados de 1960, como uma união entre a IBM e a American Airlines. SABRE foi um dos maiores esforços em sistemas computacionais até aquele momento, e certamente é um dos maiores sistemas de processamento de transações no mundo (Bernstein, 1997). Em um sistema distribuído, uma transação freqüentemente envolve vários elementos como participantes. No final de uma transação, estes participantes precisam de um protocolo para concluir (commit) a transação, caso tudo ocorrer normalmente, ou abortar (abort) se algo ocorrer errado. Segundo Bernstein (1997), uma transação possui quatro propriedades que devem ser atendidas (ACID): atomicidade (a transação executa completamente ou não executa nada), consistência (deve preservar a consistência interna da base de dados), isolamento (precisam ser executadas uma de cada vez), e durabilidade (o resultado de uma transação não deve ser perdido por motivo de falha). Para atender estas propriedades em sistemas distribuídos, devem ser explorados conceitos e mecanismos fundamentais como time-out, multicast, problemas de consenso e detecção de falhas. No gerenciamento de transações em ambientes distribuídos, atualmente é necessário a presença de um banco de dados com estas características avançadas. No entanto, o custo de aquisição e gerenciamento de um banco de dados deste tipo não é acessível para usuários de aplicação de pequeno e médio porte. O trabalho proposto consiste em estudo dos principais mecanismos de transações existentes e implementação de uma biblioteca de gerenciamento de transações em ambientes distribuídos para uso da ferramenta Visual C++ 6.0. A comunicação entre os componentes distribuídos será feita utilizando-se a tecnologia COM/DCOM da Microsoft, e a gravação dos dados será feita através de sistema de arquivos, sem o uso de banco de dados. O desenvolvimento será feito utilizando-se a linguagem C++ e a técnica para especificação será a UML (Unified Modeling Language). |
|
|