Propriedades
ACID (Atomicity, Consistency, Isolation, Durability):
Atomicidade: as operações da transação ocorrem de forma indivisível (atómica), i.e.:
ou todas (commit) - executada com sucesso
ou nenhuma (rollback) - falha
Consistência: Após as operações o estado de integridade tem de se manter.
Isolamento: O sistema deve dar a cada transação a ilusão de ser única. As transações concorrentes não interferem entre si.
Persistência: os efeitos de uma transação terminada com um commit são permanentes e visíveis para outras transações.
Atomicidade
Princípio do “Tudo ou Nada”
ou todas as operações da transação são efetivadas com sucesso na BD ou nenhuma delas se efetiva
fundamental para preservar a integridade do BD
É da responsabilidade do SGBD a recuperação de falhas
desfazer as operações da transação parcialmente executadas.
Exemplo “clássico”:
E se o sistema falhar a meio da transação?
entre o write(A) e o write(B);
motivo... falta de energia, falha na máquina ou erros de software.
Base de dados corrompida -> Estado de Inconsistência
desapareceriam 50€ da conta A que nunca chegaram à B
Conclusão: Só faz sentido efetuarmos ambas as operações em conjunto.
Ação: as operações prévias à falha devem ser desfeitas.
Consistência
Uma transação deve transportar sempre a base de dados de uma estado de integridade para outro estado de integridade.
Responsabilidade:
do programador da aplicação que codifica a transação.
do SGBD no caso de falhas (crash) do sistema
Durante a execução pode ser momentaneamente violada mas no final a integridade tem de ser garantida.
Isolamento
É desejável que as transações possam ser executadas de forma concorrente.
No entanto, a execução de uma transação Ti deve ser realizada como se ela estivesse a ser executada de forma isolada.
Ti não deve sofrer interferências de outras transações executadas concorrentemente.
Garante que a execução simultânea das transações resulta numa estado equivalente ao que seria obtido caso elas tivessem sido executadas em série (uma de cada vez).
Recurso a técnicas de escalonamento (schedule).
Define a ordem pela qual são executadas as operações read/write, do conjunto de transações concorrentes.
Exemplo
Persistência
SGBD deve garantir que as modificações realizadas por uma transação concluída com sucesso persistem na base de dados.
Nenhuma falha (na BD) ocorrida posteriormente deve afetar essa modificações.
Pressupõem um estado de efetivação do commit.
descarga de todos os buffers em disco, gravação em Logs, etc.
Commit -> |
Last updated