Unidade I - Transações em Banco de Dados

Síntese

Transação

Vários processos existentes no mundo real devem ser mapeados e implementados em sistemas de informação, tais sistemas devem refletir as ações do mundo real em um sistema off-line ou on-line. Atualmente podemos efetuar compra e venda pela internet, ter acesso a vários tipos de prestação de serviço através de um telefone ou dispositivo móvel. Todas essas vantagens do mundo moderno são possíveis pelo uso de um Banco de Dados. Cada ação executada em um banco de dados tem o nome de transação, muitos são os conceitos encontrados mas a maioria deles nos remete a um mesmo entendimento.

Para DATE, “Transação é uma unidade lógica de trabalho, envolvendo diversas operações de bancos dados.

“...uma transação é uma sequência de operações num sistema de gerência de banco de dados que são tratadas como um bloco único e indivisível (atômico) durante uma recuperação de falhas e também prover isolamento entre acessos concorrentes na mesma massa de dados.” Wikipedia.

Podemos considerar que uma transação é qualquer operação de escrita em uma tabela em um banco de dados. Quando executamos uma instrução UPDATE estamos executando uma transação, da mesma forma quando executamos um DELETE ou um INSERT. Esse trio de comandos efetivamente altera o conteúdo dos dados dentro de uma tabela.

O controle de transações nos possibilita definir regras de negócio para o funcionamento das Bases de Dados. Na verdade, devemos controlar múltiplas transações, torná-las consistentes e dependentes entre si, mas devemos fazer isso  de forma segura tendo como objetivo primeiro a preservação dos dados e a integridade Base de Dados.

Propriedades ACID

As propriedades ACID, são atributos que toda transação precisa ter para que não existam problemas durante a execução. ACID é uma sigla que significa Atomicidade, Consistência, Isolamento e Durabilidade. A seguir apresentaremos o conceito de cada um deles:

Atomicidade: Uma transação é uma unidade indivisível de alteração da base de dados: ou ela é executada por completo, ou então nada é executado;

Consistência: as transações devem preservar a consistência do banco de dados, ou seja, transforma um estado consistente do banco de dados em outro estado consistente, sem necessariamente preservar o estado de consistência em todos os pontos intermediários;

Isolamento: Outras transações não devem “ver” alterações parcialmente realizadas por uma transação, até seu encerramento com sucesso;

Durabilidade: uma vez comprometida uma transação, suas atualizações sobrevivem no banco de dados mesmo que haja uma queda subsequente do sistema.

Tipos de Transações

Transações Implícitas - São transações que ocorrem automaticamente quando enviamos os comandos INSERT,UPDATE e DELETE para o BD. Essas transações são chamadas de implícitas pois não precisamos indicar o início através de um comando BEGIN TRANSACTION ou um térmico através do comando COMMIT ou ROLLBACK.

Transações Explícitas – Utilizam-se do conceito formal de transações. Nas transações explícitas devemos informar o início o o fim da transação, devemos utilizar o  comando BEGIN TRANSACTION para indicar o seu início e os comandos COMMIT ou ROLLBACK para indicar o fim da transação.

COMMIT – quando a transação foi finalizada com sucesso.

ROLLBACK - quando a transação foi finalizada com falha ou abortada.

Transações Automáticas - é o modo padrão de gerenciamento de transações da maioria dos SGBD’s. Uma instrução Transact-SQL é confirmada ou revertida quando concluída. Se uma instrução for concluída com sucesso, será confirmada; se ocorrer uma falha, será revertida. Esse mecanismo de atua em modo de confirmação automática sempre que esse modo padrão não for substituído por transações explícitas ou implícitas.

Administrando Falhas

Reconstrução (recovery)

Em algum momento no tempo, todo sistema computacional apresentará uma falha.

O SGBD deve incorporar mecanismos de proteção e recuperação em caso de falhas

Tipos de falhas

– Uma transação que está executando alterações sobre a base de dados termina de forma anormal

– Causas:

– O SGBD encerra sua execução enquanto há transações de alteração em execução

– Causas:

– Parte ou toda a base de dados está inacessível ou incorreta (falha no meio de armazenamento, falha na controladora,programas fazem alterações incorretas,…)

Recuperação de erro de transação

Deve ser executada pelo SGBD quando uma transação que estava sendo executada é cancelada (explicita- ou implicitamente):

– Programa que executava a transação foi descontinuado (divide-byzero, etc…)

Recuperação:

– Os efeitos da transação em execução devem ser desfeitos (“undo”)

– Somente esses efeitos são atingidos pela reconstrução

– Consequências.

Recuperação de falhas no meio de armazenamento

A base de dados está danificada. Deve ser usada uma cópia de segurança. A partir dela, todas operações sobre a área afetada devem ser refeitas. A cópia de segurança pode ser de diferentes tipos:

Total

Parcial

Incremental

“On-line”

COMANDO

FUNÇÃO

ALTER GROUP 

  Inclui ou exclui usuários em um grupo.

ALTER TABLE 

  Altera a definição da tabela.

ALTER USER 

  Altera a conta de um usuário do banco de dados.

BEGIN 

  Inicia um bloco de transação.

COMMIT 

  Efetiva a transação corrente.

CREATE CONSTRAINT TRIGGER 

  Define um novo gatilho de restrição.

CREATE DATABASE 

  Cria um banco de dados novo.

CREATE FUNCTION 

 Define uma nova função.

CREATE GROUP 

  Define um novo grupo de usuários.

CREATE INDEX 

  Define um índice novo.

CREATE RULE 

  Define uma nova regra.

CREATE SEQUENCE 

  Define um novo gerador de seqüência.

CREATE TABLE 

 Define uma nova tabela.

CREATE TABLE AS 

 Cria uma nova tabela a partir do resultado de uma consulta.

CREATE TRIGGER 

  Define um novo gatilho.

CREATE TYPE 

  Define um novo tipo de dado.

CREATE USER 

  Define uma nova conta de usuário do banco de dados.

CREATE VIEW 

  Define uma nova visão.

DELETE 

  Exclui linhas de uma tabela.

DROP DATABASE 

  Remove um banco de dados.

DROP FUNCTION 

  Remove uma função definida pelo usuário.

DROP GROUP 

  Remove um grupo de usuários.

DROP INDEX 

  Remove um índice.

DROP OPERATOR 

  Remove um operador definido pelo usuário.

DROP RULE 

  Remove uma regra.

DROP SEQUENCE 

  Remove uma seqüência.

DROP TABLE 

  Remove uma tabela.

DROP TRIGGER 

  Remove um gatilho.

DROP TYPE 

  Remove um tipo de dado definido pelo usuário.

DROP USER 

  Remove uma conta de usuário do banco de dados.

DROP VIEW 

  Remove uma visão.

END 

  Efetiva a transação corrente.

GRANT 

 Define privilégios de acesso.

INSERT 

  Cria novas linhas na tabela.

LOCK 

  Bloqueia explicitamente uma tabela.

REINDEX 

  Reconstrói índices corrompidos.

REVOKE 

 Revoga privilégios de acesso.

ROLLBACK 

  Aborta a transação corrente.

SELECT 

  Retorna linhas de uma tabela ou de uma visão.

SELECT INTO 

  Cria uma nova tabela a partir do resultado de uma consulta.

SET 

 Muda um parâmetro de tempo de execução.

SET CONSTRAINTS 

 Especifica o modo de restrição da transação corrente.

SET SESSION AUTHORIZATION 

 Define o identificador do usuário da sessão e o identificador do usuário corrente, da sessão corrente.

SHOW 

 Mostra o valor de um parâmetro de tempo de execução.

UPDATE 

  Atualiza linhas de uma tabela.