Bancos de Dados - Aula 24 - Transações
Introdução ao Sistema Gerenciador de Banco de Dados (SGBD)
O que são transações?
- As transações são um conjunto de operações executadas sobre o banco de dados, consideradas uma única unidade do ponto de vista do usuário.
- Um exemplo prático é a transferência entre contas bancárias, onde todas as operações devem ser bem-sucedidas para garantir a consistência dos dados.
- Se alguma operação falhar durante a transferência, o sistema deve garantir que nenhuma alteração seja feita no banco de dados.
Importância da Consistência
- O SGBD deve assegurar que todas as operações dentro de uma transação sejam concluídas ou revertidas em caso de falha.
- Isso envolve procedimentos específicos e módulos dentro do SGBD que garantem a integridade dos dados durante o processamento das transações.
Execução Concorrente
- É fundamental que várias transações possam ser executadas simultaneamente sem gerar inconsistências nos dados.
- Por exemplo, duas transferências para o mesmo destinatário não podem interferir uma na outra, exigindo um controle rigoroso por parte do SGBD.
Arquitetura Interna do SGBD
- A arquitetura interna inclui módulos responsáveis por gerenciar as operações das transações e garantir a consistência dos dados.
- Um exemplo genérico é apresentado com uma implementação da transferência de valores, envolvendo leitura e verificação do saldo da conta.
Mecanismos Necessários para Transações
- Para executar transações consistentemente, são necessárias marcações específicas como "begin transaction" e "end transaction".
- Essas marcações ajudam o SGBD a identificar quando uma transação começa e termina, garantindo sua execução completa.
Resultados das Transações
- O comando "commit" indica que todas as operações foram realizadas com sucesso e podem ser gravadas permanentemente no banco de dados.
Transações em Sistemas de Gerenciamento de Banco de Dados
Princípios das Transações
- As transações devem ser revertidas se não forem executadas completamente, garantindo o princípio "ou tudo ou nada".
- Existem duas operações principais: a operação de execução e a operação de reversão, que são coordenadas pelos módulos do SGB.
Ciclo de Vida da Transação
- O ciclo começa com o estado ativo, onde ocorrem operações de leitura e escrita.
- O SGB controla as operações para garantir a consistência dos dados durante a execução da transação.
- Após a execução, uma transação pode entrar em um estado de efetivação parcial antes da finalização.
Falhas e Recuperação
- Se ocorrer uma falha durante a execução, a transação deve ser encerrada e os dados restaurados ao seu estado anterior.
- A passagem do estado de efetivação parcial para efetivada é crucial para garantir que os dados possam ser recuperados em caso de falha.
Operações Fundamentais
- A operação de leitura transfere dados do banco para um buffer local específico da transação.
- A operação de escrita grava os dados alterados no banco após serem processados na memória local da transação.
Propriedades das Transações
- As propriedades das transações garantem que todas as operações sejam refletidas corretamente no banco ou nenhuma delas será considerada executada.
- Um exemplo prático ilustra como uma falha pode afetar uma transferência bancária, destacando a importância da atomicidade nas transações.
Atomicidade e Consistência
- A atomicidade assegura que se uma parte da transação falhar, todo o processo deve ser revertido para manter a integridade dos dados.
Propriedades das Transações em Sistemas de Banco de Dados
Propriedade de Consistência
- A propriedade de consistência assegura que o código executado durante uma transação deve ser correto e seguir a especificação definida, garantindo que as alterações no banco de dados sejam válidas.
- É responsabilidade do programador garantir que o código comece e termine em um estado consistente do banco de dados, refletindo mudanças que são coerentes com o mundo real.
Propriedade de Isolamento
- O isolamento é garantido pelo sistema gerenciador de banco de dados (SGBD), permitindo que múltiplas transações ocorram simultaneamente sem interferir umas nas outras.
- Durante a execução, os programadores não precisam se preocupar com ações concorrentes; cada transação deve operar como se fosse isolada, evitando problemas nos dados.
Propriedade de Durabilidade
- A durabilidade garante que após uma transação ser concluída com sucesso, suas alterações persistem mesmo diante de falhas no sistema.
- Após o commit da transação, qualquer problema subsequente deve ser tratado para assegurar que as modificações feitas estejam presentes no banco.
Execução Concorrente
- Exemplos gráficos ilustram como duas transações podem operar sobre os mesmos dados simultaneamente e os riscos associados à intercalá-las incorretamente.
- Uma execução serial ocorre quando uma transação completa sua operação antes da outra iniciar, resultando em estados consistentes do banco.
Problemas na Concorrência
- Quando duas transações são executadas ao mesmo tempo e suas operações se entrelaçam inadequadamente, pode resultar em um estado inconsistente dos dados.
Problemas de Concorrência em SGBD
Problemas Causados por Execuções Simultâneas
- Durante a execução simultânea de transações em um Sistema de Gerenciamento de Banco de Dados (SGBD), podem ocorrer problemas como alterações temporárias, alterações perdidas e resumos incorretos.
- Esses problemas surgem devido ao nível de segurança do SGBD que permite intercalar operações, resultando em situações não ideais.
Teoria da Serialização
- A teoria da serialização afirma que toda execução concorrente deve gerar resultados equivalentes a uma execução serial das mesmas transações.
- Exemplos mostram que com duas transações, existem duas possíveis reduções seriais: a primeira transação seguida pela segunda ou vice-versa.
- Qualquer execução concorrente deve intercalar as operações para garantir que o resultado final seja equivalente a uma dessas execuções seriais.
Conclusão e Estudo Futuro