Integridade x confiabilidade
Update tbContas set SALDO = 1000 where Cliente = 1;
Select SALDO from tbContas where Cliente = 1;
Resultado:
Saldo
1000.00
3
Integridade x confiabilidade
Integridade física (hardware)
Integridade de regra de negócios
Integridade relacional
4
Integridade x confiabilidade
Integridade física (hardware)
- Problemas de disco, memória, portas, cabos…
5
Integridade x confiabilidade
Integridade de negócio
Create table tbprofessor
(Codprofessor integer,
Nomeprofessor varchar(50) not null,
Apelido varchar(50) unique,
Sexo varchar(1) check (‘M’,’F’),
Primarykey Codprofessor);6
Integridade x confiabilidade
Integridade relacional
Create table tbdisciplinas
(Coddisciplina integer,
Nomedisciplina varchar(50) not null,
Codprofessor integer not null,
Primary key coddisciplina,
Foreign key (coddprofessor) references tbprofessor.codprofessor
on delete restrict
on update cascade 7
Transação
O problema da conta bancária
Select Saldo from tbContas where Cliente = 1
Update tbContas set Saldo = Saldo – 50 where Cliente = 1
Select Saldo from tbContas where Cliente = 2
Update tbConta set Saldo = Saldo + 50 where Cliente = 2
9
??
Transação
Coleção de operações, executado como uma só operação
Executa tudo ou nada
Begin transaction
Comando 1
Comando 2…
Commit10
Estados da Transação
12
AtivaAtiva
Parcialmente confirmada
Parcialmente confirmada
FalhaFalha AbortadaAbortada
ConfirmadaConfirmada
Implantação de atomicidadee durabilidade
Visando garantir a consistência do banco de dados
Técnica Cópia de sombra
13
Cópia de sombra - pressupostos
14
1) Uma transação ativa por vez
2) Banco de dados está gravado em um único arquivo
Cópia de sombra
15
DBPointer
Banco de dados
TRANSAÇÃO
DBPointer
Banco de dados antigo Nova cópia do BD
Cópia de sombra - algoritmo
16
1) Recebe pedido de transação
2) Copia todo o banco de dados para um novo BD
3) Deixa a cópia de sombra intocável
4) Se a transação for concluída, aguarda confirmação do S.O. de que todas as páginas foram gravadas ok.
5) Depois que o S.O. Confirma, o db pointer aponta para a nova cópia
6) Cópia antiga é excluída
Cópia de sombra – falha de transação/sistema
17
O que fazer ?
Continuar apontando o DB Pointer para o antigo
Desprezar a nova cópia do banco
Cópia de sombra – exemplo
18
Editor de texto
1) Cria um novo arquivo temporário
2) Executa as alterações neste arquivo
3) Ao gravar, renomeia o arquivo temporário->real
3.1) Apaga o arquivo antigo
Execuções simultâneas de transações
23
Esquemas de controle de concorrência
read(A);A := A -50;Write (A);Read (B);B := B + 50;Write (B);
T1
read(A);Temp := A*0.1A := A – temp;Write (A);Read (B);B := B + temp;Write (B);
T2
Execuções simultâneas
24
T1
read(A);A := A -50;Write (A);Read (B);B := B + 50;Write (B);
T2read(A);Temp := A*0.1A := A – temp;Write (A);Read (B);B := B + temp;Write (B);
Execuções simultâneas
25
T1
read(A);A := A -50;Write (A);Read (B);B := B + 50;Write (B);
T2
read(A);Temp := A*0.1A := A – temp;Write (A);Read (B);B := B + temp;Write (B);
Execuções simultâneas
26
T1
read(A);A := A -50;Write (A);
Read (B);B := B + 50;Write (B);
T2
read(A);temp := A*0.1A := A – temp;Write (A);
Read (B);B := B + temp;Write (B);
Execuções simultâneas
27
T1
read(A);A := A -50;
Write (A);Read (B);B := B + 50;Write (B);
T2
read(A);temp := A*0.1A := A – temp;Write (A);Read (B);
B := B + temp;Write (B);
RESUMO
Cópia de sombra – atomicidade/durabilidade
Vantagens e desvantagens
Execuções simultâneas de transações
Melhor utilização de recursos
O problema do schedule
29