TRANSAÇÕES EM UM SGBD

 

Uma transação é uma unidade lógica de trabalho que consiste em uma ou mais operações de banco de dados. Essas operações podem ser inserções, atualizações ou exclusões de dados.

 

Comparando ao mundo real, uma transação poderia ser comparada a realizar uma receita, onde as operções seriam o passo a passo, e a receita final só estaria pronta se todos os passos fossem executados corretamente.

 

Ao realizar transações, o SGBD segue as seguintes propriedades para garantir a integridade dos dados:

     
  • Atomicidade: todas as operações são feitas com sucesso ou nenhuma altera o banco
  • Consistência: garante que o banco de dados passe de um estado válido para outro estado válido após a conclusão de uma transação
  • Isolamento: as transações ocorram de forma independente e sem interferências umas nas outras
  • Durabilidade: uma vez que uma transação seja confirmada, seus efeitos permaneçam permanentemente no banco de dados, mesmo em caso de falhas
  •  

Estado das transações

 

Os estados das transações são uma representação das diferentes fases pelas quais uma transação passa durante sua execução em um Sistema Gerenciador de Banco de Dados (SGBD). Existem quatro estados principais:

 
     
  • Ativa: A transação entra no estado ativo quando começa a executar suas operações.
  • Parcialmente Efetivada: Após o término das operações da transação, ela entra no estado parcialmente confirmada.Todas as operações foram executadas com sucesso, mas a transação ainda não foi definitivamente confirmada.
  • Falha: Houve algum problema e não será possível efetivar
  • Abortada: Se ocorrer algum erro durante a execução da transação, a transação entra no estado abortado, onde todas as operações da transação são desfeitas, e o banco de dados retorna ao estado anterior.
  • Efetivada: Todas as alterações feitas pela transação são permanentemente gravadas no banco de dados, e a transação é concluída com sucesso.
  •  
estadosTransacoes
 

Transações concorrentes

 

Imagine um sistema de gerenciamento de biblioteca, onde os usuários podem consultar livros disponíveis, fazer reservas e realizar empréstimos. Nesse cenário, o SGBD desempenha um papel fundamental para garantir que as informações sobre os livros e os usuários sejam armazenadas e recuperadas de forma eficiente.

 

Os usuários do sistema (clientes) podem usar uma interface de usuário que se comunica com o SGBD para realizar as operações de consulta, reserva e empréstimo. O SGBD, por sua vez, gerencia o acesso aos dados, garantindo que as informações não sejam corrompidas e que as operações concorrentes sejam tratadas corretamente.

 

As transações concorrentes podem trazer uma maior agilidade na realização de tarefas, mas dependendo da forma como é utilizada também pode gerar problemas em relação à consistência dos dados. Por isso é importante realizar o controle de concorrência, que evita que informações erradas sejam colocadas no banco.

Por exemplo, suponha que inicialmente, o produto "Camiseta" possui um estoque de 50 unidades no banco de dados e as seguintes transações sejam efetuadas ao mesmo tempo:

 
exemploTransacao
 

Se não houver controle de concorrência, as duas transações podem executar suas operações simultaneamente, o que pode levar a resultados indesejados, como a perda de atualizações.

Para aplicar o controle de concorrência com o uso de bloqueios, antes de executar suas atualizações, tanto a T1 quanto a T2 solicitem um bloqueio exclusivo (X) no produto "Camiseta". Apenas uma transação poderá obter o bloqueio exclusivo e realizar a atualização, enquanto a outra terá que esperar. Usando disso, podemos remodelar o exemplo da seguinte forma:

 
exemploTransacao2
  

Essa técnica deve ser usada de forma controlada, de forma a evitar deadlocks(duas ou mais transações ficam bloqueadas, cada uma esperando que a outra libere um recurso necessário para prosseguir).Além do controle de concorrência baseado em bloqueios, existem outras formas mais sofisticadas de gerenciar a concorrência em bancos de dados, visando trazer maior segurança e eficiência nas transações. Entre os principais métodos estão o Isolamento de Níveis, a implementação de Controle de Versões, o uso de Protocolos de Prevenção de Deadlock e o Controle de Concorrência Baseado em Transações. Essas abordagens avançadas oferecem mecanismos mais elaborados para garantir a integridade dos dados e o correto isolamento entre as transações, permitindo um ambiente concorrente mais seguro e eficiente no acesso ao banco de dados.

 

Atividade de Fixação

 

No intuito de fixar a aprendizagem iniciada por meio deste módulo e verificar como está sua compreensão sobre o mesmo, são sugeridos alguns exercícios de fixação para serem resolvidos. Clique no link de exercícios ao lado, pois será por meio dele iniciada a lista de exercícios sobre os conteúdos estudados até este momento. Boa revisão sobre os mesmos!!