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