DDBMS - Sistemas de processamento de transações
Este capítulo discute os vários aspectos do processamento de transações. Também estudaremos as tarefas de baixo nível incluídas em uma transação, os estados da transação e as propriedades de uma transação. Na última parte, examinaremos os cronogramas e a serializabilidade dos cronogramas.
Transações
Uma transação é um programa que inclui uma coleção de operações de banco de dados, executadas como uma unidade lógica de processamento de dados. As operações realizadas em uma transação incluem uma ou mais operações de banco de dados, como inserir, excluir, atualizar ou recuperar dados. É um processo atômico que é executado totalmente ou não é executado de forma alguma. Uma transação envolvendo apenas recuperação de dados sem nenhuma atualização de dados é chamada de transação somente leitura.
Cada operação de alto nível pode ser dividida em várias tarefas ou operações de baixo nível. Por exemplo, uma operação de atualização de dados pode ser dividida em três tarefas -
read_item() - lê o item de dados do armazenamento para a memória principal.
modify_item() - altera o valor do item na memória principal.
write_item() - escrever o valor modificado da memória principal para o armazenamento.
O acesso ao banco de dados é restrito às operações read_item () e write_item (). Da mesma forma, para todas as transações, ler e escrever formam as operações básicas do banco de dados.
Operações de transação
As operações de baixo nível realizadas em uma transação são -
begin_transaction - Um marcador que especifica o início da execução da transação.
read_item or write_item - Operações de banco de dados que podem ser intercaladas com as operações da memória principal como parte da transação.
end_transaction - Um marcador que especifica o fim da transação.
commit - Um sinal para especificar que a transação foi concluída com êxito em sua totalidade e não será desfeita.
rollback- Um sinal para especificar que a transação não foi bem-sucedida e que todas as mudanças temporárias no banco de dados foram desfeitas. Uma transação confirmada não pode ser revertida.
Estados de transação
Uma transação pode passar por um subconjunto de cinco estados, ativo, parcialmente confirmado, confirmado, falhou e abortado.
Active- O estado inicial em que a transação entra é o estado ativo. A transação permanece neste estado enquanto está executando a leitura, gravação ou outras operações.
Partially Committed - A transação entra neste estado após a última instrução da transação ter sido executada.
Committed - A transação entra neste estado após a conclusão bem-sucedida da transação e as verificações do sistema emitiram um sinal de confirmação.
Failed - A transação vai de um estado parcialmente confirmado ou estado ativo para um estado de falha quando é descoberto que a execução normal não pode mais prosseguir ou que as verificações do sistema falham.
Aborted - Este é o estado após a transação ter sido revertida após a falha e o banco de dados ter sido restaurado ao seu estado anterior ao início da transação.
O diagrama de transição de estado a seguir descreve os estados na transação e as operações de transação de baixo nível que causam mudanças nos estados.
Propriedades Desejáveis de Transações
Qualquer transação deve manter as propriedades ACID, viz. Atomicidade, consistência, isolamento e durabilidade.
Atomicity- Esta propriedade afirma que uma transação é uma unidade atômica de processamento, ou seja, é realizada em sua totalidade ou não é realizada. Nenhuma atualização parcial deve existir.
Consistency- Uma transação deve levar o banco de dados de um estado consistente para outro estado consistente. Não deve afetar adversamente nenhum item de dados no banco de dados.
Isolation- Uma transação deve ser executada como se fosse a única no sistema. Não deve haver nenhuma interferência de outras transações simultâneas em execução simultaneamente.
Durability - Se uma transação confirmada ocasiona uma mudança, essa mudança deve ser durável no banco de dados e não perdida em caso de falha.
Programações e conflitos
Em um sistema com várias transações simultâneas, um scheduleé a ordem total de execução das operações. Dado um cronograma S composto por n transações, digamos T1, T2, T3 ……… ..Tn; para qualquer transação Ti, as operações em Ti devem ser executadas conforme estabelecido no cronograma S.
Tipos de horários
Existem dois tipos de horários -
Serial Schedules- Em uma programação em série, em qualquer ponto do tempo, apenas uma transação está ativa, ou seja, não há sobreposição de transações. Isso é ilustrado no gráfico a seguir -
Parallel Schedules- Em programações paralelas, mais de uma transação está ativa simultaneamente, ou seja, as transações contêm operações que se sobrepõem no momento. Isso é ilustrado no gráfico a seguir -
Conflitos nas programações
Em uma programação que compreende várias transações, um conflictocorre quando duas transações ativas executam operações não compatíveis. Duas operações são consideradas em conflito, quando todas as três condições a seguir existem simultaneamente -
As duas operações são partes de transações diferentes.
Ambas as operações acessam o mesmo item de dados.
Pelo menos uma das operações é uma operação write_item (), ou seja, tenta modificar o item de dados.
Serializabilidade
UMA serializable schedulede 'n' transações é uma programação paralela que é equivalente a uma programação em série que compreende as mesmas 'n' transações. Uma programação serializável contém a exatidão da programação serial enquanto verifica a melhor utilização da CPU da programação paralela.
Equivalência de horários
A equivalência de dois horários pode ser dos seguintes tipos -
Result equivalence - Duas programações que produzem resultados idênticos são consideradas equivalentes de resultado.
View equivalence - Duas programações que executam ações semelhantes de maneira semelhante são consideradas visualizações equivalentes.
Conflict equivalence - Duas programações são consideradas conflito equivalente se ambas contiverem o mesmo conjunto de transações e tiverem a mesma ordem de pares conflitantes de operações.