UNDB BANCO DE DADOS II Prof. Alessandro Gonçalves [email protected] 1 2 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) tbprofessor.codprofessor references on delete restrict on update cascade 7 Integridade x confiabilidade O operador queria lançar um novo SALDO DE R$ 1.000,00 8 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… Commit 10 Transação A - Atomicidade C - Consistência I - Isolamento D - Durabilidade 11 Estados da Transação Parcialmente confirmada Confirmada Ativa Falha Abortada 12 Implantação de atomicidade e durabilidade Visando garantir a consistência do banco de dados Técnica Cópia de sombra 13 Cópia de sombra - pressupostos 1) Uma transação ativa por vez 2) Banco de dados está gravado em um único arquivo 14 Cópia de sombra DBPointer Banco de dados DBPointer T R A N S A Ç Ã O Banco de dados antigo Nova cópia do BD 15 Cópia de sombra - algoritmo 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 16 Cópia de sombra – falha de transação/sistema O que fazer ? Desprezar a nova cópia do banco Continuar apontando o DB Pointer para o antigo 17 Cópia de sombra – exemplo 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 18 Cópia de sombra – vantagens/desvantagens Simples de implantar Lento Não permite simultaneidade 19 Execuções simultâneas de transações Geram problemas ? Por que usar ? 20 Execuções simultâneas de transações Melhor throughput e utilização de recursos 21 Execuções simultâneas de transações Tempo de espera reduzido 22 Execuções simultâneas de transações Esquemas de controle de concorrência T1 read(A); A := A -50; Write (A); Read (B); B := B + 50; Write (B); T2 read(A); Temp := A*0.1 A := A – temp; Write (A); Read (B); B := B + temp; Write (B); 23 Execuções simultâneas T1 read(A); A := A -50; Write (A); Read (B); B := B + 50; Write (B); T2 read(A); Temp := A*0.1 A := A – temp; Write (A); Read (B); B := B + temp; Write (B); 24 Execuções simultâneas T2 T1 read(A); A := A -50; Write (A); Read (B); B := B + 50; Write (B); read(A); Temp := A*0.1 A := A – temp; Write (A); Read (B); B := B + temp; Write (B); 25 Execuções simultâneas T1 T2 read(A); A := A -50; Write (A); read(A); temp := A*0.1 A := A – temp; Write (A); Read (B); B := B + 50; Write (B); Read (B); B := B + temp; Write (B); 26 Execuções simultâneas T1 T2 read(A); A := A -50; read(A); temp := A*0.1 A := A – temp; Write (A); Read (B); Write (A); Read (B); B := B + 50; Write (B); B := B + temp; Write (B); 27 Seriação Como garantir a ordem correta de execução nos schedules ? 28 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 UNDB BANCO DE DADOS II Prof. Alessandro Gonçalves [email protected] 30