11.04.2013 Views

Aula 18 - Bruno Neiva Moreno

Aula 18 - Bruno Neiva Moreno

Aula 18 - Bruno Neiva Moreno

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Banco de Dados I<br />

<strong>Aula</strong> <strong>18</strong> - Prof. <strong>Bruno</strong> <strong>Moreno</strong><br />

22/11/2011


Plano de <strong>Aula</strong><br />

• Introdução<br />

– SPT<br />

– Sistemas monousuários e multiusuários<br />

– Sistemas multiprogramados<br />

• Transação - Definição<br />

• Concorrência de Transações<br />

• Log do Sistema<br />

• Propriedades ACID<br />

• Históricos (planos)<br />

11:40


Sistemas de Processamento<br />

de Transações – SPT<br />

• Grandes bancos de dados<br />

11:40<br />

– Muitos usuários executando transações<br />

concorrentes<br />

– Exemplos<br />

• Sistemas de reservas de passagens<br />

• Sistemas bancários<br />

• Sistemas de cartões de crédito<br />

• Sistemas de ações<br />

Alta disponibilidade e baixo<br />

tempo de resposta


Sistemas monousuários vs<br />

multiusuários<br />

• Um dos critérios de classificação de bancos de<br />

dados<br />

• Monousuário<br />

– Somente um usuário pode acessar o sistema em<br />

um determinado instante<br />

• Multiusuário<br />

11:40<br />

– Muitos usuários podem usá-lo concorrentemente


Multiprogramação<br />

• Sistemas com uma só CPU: processamento<br />

concorrente é simultâneo<br />

11:40<br />

– É ilusão o processamento de diversos processos<br />

ao mesmo tempo.<br />

– Em sistemas operacionais fala-se em paralelismo<br />

(pseudo-paralelismo)<br />

• Sistemas multi-programados realizam pseudoparalelismo<br />

A multiprogramação permite que o computador<br />

execute diversos programas – ou processos – ao<br />

“mesmo tempo”


Multiprogramação<br />

• A multiprogramação utiliza o conceito de que<br />

processos são parados e retomados de acordo<br />

com determinadas regras<br />

11:40<br />

Concorrência intercalada Paralelismo real


Transações – Definição<br />

• “é um programa que representa uma unidade<br />

lógica de processamento do banco de dados”<br />

Navathe<br />

– Inserções<br />

– Exclusão<br />

– Alteração<br />

– Recuperação<br />

• Uma transação é estabelecida com<br />

delimitadores de início e fim.<br />

11:40


Transações – Operações<br />

• Operações básicas<br />

11:40<br />

– Ler_item(X)<br />

• Lê um item X do banco de dados<br />

– Gravar_item(X)<br />

• Grava um item X no banco de dados


Transações – Operações<br />

• Ler_item(X)<br />

11:40<br />

1) Encontrar o endereço do bloco do disco que<br />

contém o item X<br />

2) Copiar esse bloco para um buffer na memória<br />

principal<br />

3) Copiar o item X do buffer para a variável X do<br />

programa


Transações – Operações<br />

• Gravar_item(X)<br />

11:40<br />

1) Encontrar o endereço do bloco de disco que<br />

contém o item X;<br />

2) Copiar esse bloco do disco para um buffer na<br />

memória principal;<br />

3) Copiar o item X de uma variável de programa<br />

chamada X para seu local correto no buffer<br />

4) Armazenar o bloco atualizado no buffer de volta<br />

para o disco (atualização de fato)


Transações - Exemplos<br />

(a) Transferência bancária do valor N da conta de<br />

saldo X para a conta de saldo Y<br />

(b) Depósito do valor M para conta de saldo X<br />

11:40


Concorrência de Transações<br />

• Diferentes transações podem ser executadas<br />

concorrentemente mesmo se acessando os<br />

mesmos itens no banco de dados<br />

11:40


Concorrência de Transações<br />

• Se a execução delas for descontrolada,<br />

ocorrerão problemas de inconsistência no<br />

banco de dados<br />

11:40


Transações descontroladas<br />

• Transações descontroladas geram três tipos de<br />

problemas<br />

(1) Atualização perdida<br />

(2) Atualização temporária (dirty read)<br />

(3) Sumário Incorreto<br />

• Considere um exemplo de sistema de reservas<br />

11:40


Transações descontroladas<br />

Problema 1: Atualização Perdida<br />

11:40<br />

– Duas transações acessam os mesmos itens e<br />

possuem suas operações intercaladas, tornando<br />

os valores destes itens como incorretos.<br />

T 1: Transferência de Reservas<br />

X → Poltronas Reservadas no vôo X<br />

Y → Poltronas Reservadas no vôo Y<br />

N → Reservas transferidas<br />

T 2: Reserva de Poltronas em X<br />

X → Poltronas Reservadas no vôo X<br />

M → Reserva de poltronas<br />

Operações intercaladas geraram<br />

um valor incorreto de X para T 2


Transações descontroladas<br />

Problema 2: Atualização Temporária<br />

11:40<br />

– Uma transação atualiza um item de BD e, a seguir,<br />

falha por alguma razão.<br />

Se a transação T 1 falhar deverá retornar ao<br />

seu valor original, senão T 2 lê o valor errado.


Transações descontroladas<br />

• Problema 3: Sumário Incorreto<br />

11:40<br />

– Uma transação aplica uma função agregada para<br />

um número de registros enquanto outra transação<br />

está atualizando um destes registros<br />

T 3 lê X já subtraído de N<br />

T 3 lê Y antes de T 1 somar N a Y


Recuperação de Transações<br />

• Um SGBD deve garantir que<br />

ATOMICIDADE<br />

11:40<br />

(1) Todas as operações na transação foram<br />

completadas com sucesso e seu efeito será<br />

persistido DURABILIDADE<br />

(2) A transação que falhou não terá nenhum efeito<br />

CONSISTÊNCIA<br />

sobre o banco de dados ou<br />

ISOLAMENTO<br />

(3) Transações devem operar isoladamente, sem<br />

trazer nenhum efeito sobre outras transações


Tipos de falhas<br />

(1) Computador falhar<br />

– Hardware, software,rede<br />

(2) Erro de transação ou sistema<br />

– Estouro de memória, erro de divisão, parâmetros<br />

errados<br />

(3) Erros locais ou condições de exceção<br />

detectadas<br />

11:40<br />

– Saldo insuficiente em uma operação bancária


Tipos de falhas<br />

(4) Imposição do controle de concorrência<br />

– O método de controle de concorrência decide<br />

abortar uma transação que viola a serialização ou<br />

devido a um deadlock, por exemplo<br />

(5) Falha de disco<br />

(6) Problemas físicos e<br />

catástrofes<br />

11:40


Estados de Transações<br />

Uma transação é uma unidade atômica de<br />

trabalho que ou estará completa ou não foi<br />

realizada<br />

• Para controlar uma transação o sistema de<br />

controle precisa saber quando uma transação<br />

inicia, quando termina e de suas efetivações e<br />

interrupções<br />

11:40<br />

– Begin, read, write, end, commit e rollback (abort)


Estados de Transações<br />

11:40


11:40<br />

Onde ficam os registros das ocorrências das<br />

transações e dos instantes em que iniciaram e<br />

finalizaram?<br />

Log do Sistema


Log do Sistema<br />

• Controla operações da transação que afetem valores<br />

dos itens do BD<br />

• Registros de log<br />

– [start_transaction, T]:<br />

• Transação T começou a ser executada<br />

– [escrever_item, T, X, valor_antigo, novo_valor]<br />

• T mudou o valor de X do valor_antigo para o novo_valor<br />

– [ler_item, T, X]<br />

• T leu o item X do banco de dados<br />

– [commit, T]<br />

• T foi completada com sucesso e seus efeitos podem ser efetivados<br />

– [abort, T]<br />

• Indica que a transação T foi interrompida<br />

11:40


Ponto de Efetivação<br />

• Uma transação alcança seu ponto de efetivação<br />

quando todas as operações foram registradas no<br />

log<br />

• No ponto de efetivação, a transação é efetivada<br />

(committed) e seu efeito é registrado no BD<br />

• Quando efetivada, a transação escreve no log<br />

uma entrada do tipo [commit, T]<br />

• Uma transação é cancelada quando possui uma<br />

entrada [start_transaction, T] no log mas nenhum<br />

[commit, T]<br />

11:40


Propriedades das<br />

Transações<br />

• Propriedades ACID<br />

11:40<br />

Atomicidade: Uma transação é uma unidade atômica.<br />

Consistente: A execução completa de uma transação faz<br />

o BD passar de um estado consistente para outro.<br />

Isolamento: Uma transação é executada isoladamente<br />

das demais.<br />

Durabilidade: As mudanças realizadas por uma<br />

transação no banco de dados são persistidas.


Propriedades das<br />

Transações<br />

• Atomicidade<br />

11:40<br />

– Garante que uma transação seja executada por<br />

completo<br />

– É de responsabilidade do subsistema de<br />

restauração de transações do SGBD garantir essa<br />

propriedade<br />

– Se uma transação falhar, o SGBD garante que<br />

todos os efeitos serão desfeitos.


Propriedades das<br />

Transações<br />

• Consistência<br />

11:40<br />

– É de responsabilidade do programador<br />

(especialmente do projetista)<br />

• Restrições de integridade são garantidas pelo SGBD<br />

mas devem ser implementadas pelo projetista<br />

– O que é um estado consistente?<br />

– O SGBD garante que qualquer estado do BD é<br />

consistente.


Propriedades das<br />

Transações<br />

• Isolamento<br />

11:40<br />

– Imposto pelo subsistema de controle de<br />

concorrência do SGBD<br />

– Um SGBD deve garantir que uma transação torna<br />

suas atualizações invisíveis até que seja efetivada.


Propriedades das<br />

Transações<br />

• Durabilidade<br />

11:40<br />

– Responsabilidade do subsistema de restauração<br />

do SGBD.<br />

Propriedade Responsabilidade<br />

Atomicidade Subsistema de Restauração de Transações<br />

Consistência Programador e SGBD<br />

Isolamento Subsistema de Controle de Concorrência<br />

Durabilidade Subsistema de Restauração de Transações


Planos de Execução<br />

• Representa todas as operações das transações<br />

11:40<br />

– Para um plano S de n transações T 1, T 2, ..., T n, S<br />

deve conter as operações na mesma ordem em<br />

que elas ocorrem em T i<br />

– Operações de outras transações T j poderão ser<br />

intercaladas com as operações de T i em S<br />

– Notação para codificação de um plano<br />

• r, w, c e a para read, write, commit e abort


Planos de Execução<br />

• S a: r 1(X); r 2(X); w 1(X); r 1(Y); w 2(X); w 1(Y);<br />

11:40


Planos de Execução<br />

• S b: r 1(X); w 1(X); r 2(X); w 1(X); r 1(Y);<br />

11:40


Planos de Execução<br />

• Duas operações em um plano estão em<br />

conflito se eles satisfizerem as seguintes<br />

condições<br />

(1) Forem de transações diferentes;<br />

(2) Acessarem o mesmo item X;<br />

(3) Pelo menos uma das operações for de escrita.<br />

• Exemplo 1: r 1(X); r 2(X); w 1(X); r 1(Y); w 2(X); w 1(Y);<br />

• Exemplo 2: r 1(X); w 1(X); r 2(X); w 1(X); r 1(Y);<br />

11:40


Classificação de planos<br />

• Planos podem ser classificados de acordo com<br />

a restaurabilidade ou baseado na serialidade<br />

11:40<br />

– Um plano S é restaurável se nenhuma transação T<br />

de S for efetivada (commit) até que todas as<br />

transações T’ que tiverem gravado um item lido<br />

por T, tenham sido efetivadas.<br />

S c: r 1(X); w 1(X); r 2(X); r 1(Y); w 2(X); c 2; a 1;<br />

– A transação 2 escreve X depois da transação 1 lê-lo?<br />

Não-restaurável


Classificação de planos<br />

• Planos podem ser classificados de acordo com<br />

a restaurabilidade ou baseado na serialidade<br />

11:40<br />

– Um plano S é restaurável se nenhuma transação T<br />

de S for efetivada (commit) até que todas as<br />

transações T’ que tiverem gravado um item lido<br />

por T, tenham sido efetivadas.<br />

S d: r 1(X); w 1(X); r 1(Y); w 2(X); w 1(Y); c 1; c 2;<br />

– A transação 2 escreve X depois da transação 1 lê-lo?<br />

Restaurável


Classificação de planos<br />

baseado na serialidade<br />

• Considere um sistema de reservas onde T1 e<br />

T2 ocorrem aproximadamente ao mesmo<br />

tempo<br />

11:40


Classificação de planos<br />

baseado na serialidade<br />

• Se a intercalação de operações não for<br />

permitida temos as duas opções:<br />

11:40<br />

(I) (II)


Classificação de planos<br />

baseado na serialidade<br />

• Se a intercalação de operações for permitida,<br />

temos diversas opções. Dentre elas:<br />

• Serialidade de planos permite identificar planos<br />

corretos quando há intercalação de operações<br />

11:40<br />

(III) (IV)


Classificação de planos<br />

baseado na serialidade<br />

• Planos seriais são planos em que as operações<br />

de cada transação são executadas<br />

consecutivamente, sem intercalação<br />

11:40<br />

(I) (II)


Classificação de planos<br />

baseado na serialidade<br />

• Planos não seriais<br />

11:41<br />

(III) (IV)


Classificação de planos<br />

baseado na serialidade<br />

• Exemplos<br />

11:41<br />

– X = 90, Y = 90, N = 3 e M = 2<br />

(I)<br />

X = 89 e Y = 93<br />

T 1<br />

read_item X → 90<br />

X = 90-3= 87<br />

write_item X → 87<br />

read_item Y → 90<br />

Y = 90 + 3 = 93<br />

write_item Y → 93<br />

T 2<br />

read_item X → 87<br />

X = 87+2= 89<br />

write_item X → 89


Classificação de planos<br />

baseado na serialidade<br />

• Exemplos<br />

11:41<br />

– X = 90, Y = 90, N = 3 e M = 2<br />

(II)<br />

X = 89 e Y = 93<br />

T 2<br />

read_item X → 90<br />

X = 90+2= 92<br />

write_item X → 92<br />

T 1<br />

read_item X → 92<br />

X = 92-3= 89<br />

write_item X → 89<br />

read_item Y → 90<br />

Y = 90 + 3 = 93<br />

write_item Y → 93


Classificação de planos<br />

baseado na serialidade<br />

• Exemplos<br />

Atualização<br />

Perdida!<br />

11:41<br />

– X = 90, Y = 90, N = 3 e M = 2<br />

(III)<br />

X = 92 e Y = 93<br />

Valor Incorreto!<br />

T 1<br />

read_item X → 90<br />

X = 90-3= 87<br />

T 2<br />

read_item X → 90<br />

X = 90+2= 92<br />

T 1<br />

write_item X → 87<br />

read_item Y → 90<br />

T 2<br />

write_item X → 92<br />

T 1<br />

Y = 90 + 3 = 93<br />

write_item Y → 93


Classificação de planos<br />

baseado na serialidade<br />

• Exemplos<br />

11:41<br />

– X = 90, Y = 90, N = 3 e M = 2<br />

(IV)<br />

X = 89 e Y = 93<br />

T 1<br />

read_item X → 90<br />

X = 90-3= 87<br />

write_item X → 87<br />

T 2<br />

read_item X → 87<br />

X = 87+2= 89<br />

write_item X → 89<br />

T 1<br />

read_item Y → 90<br />

Y = 90 + 3 = 93<br />

write_item Y → 93<br />

Plano é não-serial com<br />

resultado correto!


11:41<br />

A serialidade é um conceito que<br />

determina se um plano não-<br />

serial é capaz de fornecer um<br />

resultado correto.<br />

Serialidade tem a ver com<br />

equivalência de planos não<br />

seriais com planos seriais


Classificação de planos<br />

baseado na serialidade<br />

• Um plano é serializável se ele for equivalente a<br />

algum plano serial com as mesmas transações<br />

• Dizer que um plano não serial é serializável é<br />

equivalente a dizer que é correto<br />

11:41<br />

– Deixa o BD em um estado consistente<br />

– A intercalação é apropriada e o resultado é o mesmo<br />

se o plano fosse serial<br />

– Porém mais eficiente do que um plano serial<br />

• Concorrência


Equivalência de planos<br />

• Equivalência quanto a resultado<br />

11:41<br />

– Planos equivalentes produzem o mesmo resultado<br />

– Equivalência por resultado não é satisfatória<br />

• S1: r(X); X:=X+10; w(X)<br />

• S2: r(X); X:=X*1,1; w(X)<br />

• Equivalentes com valor de X inicial igual a 100


Equivalência de planos<br />

• Equivalência de conflito<br />

11:41<br />

– Dois planos são conflito equivalentes se a ordem<br />

de quaisquer duas operações conflitantes for a<br />

mesma em ambos os planos<br />

– Um plano S é conflito serializável se ele for<br />

conflito equivalente a um plano serial S’


Equivalência de planos<br />

• Equivalência de conflito<br />

11:41<br />

– O plano (IV) é conflito serializável porque é<br />

equivalente ao plano (I)<br />

(IV) (I)


Equivalência de planos<br />

• Equivalência de<br />

conflito<br />

11:41<br />

– O plano (III) é<br />

equivalente aos plano<br />

(I) e (II)?<br />

(I) (II)<br />

(III)


11:41<br />

Projeto: ultima iteração dia<br />

25/11


11:41<br />

Prova dia 02/12


11:41<br />

Freqüência!<br />

22/11/2011

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!