BDD - Gerencia de Transacoes Distribuidas

Propaganda
Transação
Gerência de Transações
Distribuídas
„
Fernanda Baião
[email protected]
Uma transação é uma unidade de
computação consistente e confiável
‰
Transparência de concorrência
‰
Transparência de falhas
Banco de
dados em um
estado
consistente
Banco de dados pode estar em um
estado inconsistente durante a
execução
Begin
Transaction
execução da
transação
Banco de
dados em um
estado
consistente
Outubro de 2003
End
Transaction
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Transação – Exemplo
Consulta SQL Simples
2
Banco de Dados exemplo
„
Transaction BUDGET_UPDATE
Considere uma base de reservas aéreas com as
relações
begin
EXEC SQL
FLIGHT(FNO, DATE, SRC, DEST, STSOLD, CAP)
CUST(CNAME, ADDR, BAL)
FC(FNO, DATE, CNAME,SPECIAL)
UPDATE PROJ
SET BUDGET = BUDGET * 1.1
WHERE PNAME = “CAD/CAM”
end.
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
3
Transação exemplo – Versão SQL
4
Terminação de Transações
Begin_transaction Reservation
begin
input(flight_no, date, customer_name);
EXEC SQL UPDATE FLIGHT
SET STSOLD = STSOLD + 1
WHERE FNO = flight_no AND DATE = date;
EXEC SQL INSERT
INTO FC(FNO, DATE, CNAME, SPECIAL);
VALUES (flight_no, date, customer_name, null);
output(“reservation completed”)
end . {Reservation}
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
5
Begin_transaction Reservation
begin
input(flight_no, date, customer_name);
EXEC SQL SELECT STSOLD,CAP
INTO temp1,temp2
FROM FLIGHT
WHERE FNO = flight_no AND DATE = date;
if temp1 = temp2 then
output(“no free seats”);
Abort
else
EXEC SQL UPDATEFLIGHT
SET STSOLD = STSOLD + 1
WHERE FNO = flight_no AND DATE = date;
EXEC SQL INSERT
INTO FC(FNO, DATE, CNAME, SPECIAL);
VALUES (flight_no, date, customer_name, null);
Commit
output(“reservation completed”)
endif
end . {Reservation}
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
6
1
Transação exemplo – Leituras e
Escritas
Caracterização
Begin_transaction Reservation
begin
input(flight_no, date, customer_name);
temp ← Read(flight_no(date).stsold);
if temp = flight(date).cap then
begin
output(“no free seats”);
Abort
end
else begin
Write(flight(date).stsold, temp + 1);
Write(flight(date).cname, customer_name);
Write(flight(date).special, null);
Commit;
output(“reservation completed”)
end
end. {Reservation}
‰
‰
‰
ATOMICIDADE
Tudo ou nada
Em caso de falha, resultados parciais são desfeitos
Recuperação de transação x recuperação de falha
‰
‰
‰
Read(x)
Read(y)
x ←x + y
Write(x)
Commit
CONSISTÊNCIA
„
Não viola restrições de integridade (programa correto)
Vários “graus”: T não sobrescreve dados ainda em atualização por
outra transação (“sujos”),
T não efetiva nenhuma escrita entes do EOT,
T não lê dados sujos,
dados lidos por T não são sujos antes do seu término
‰
‰
ISOLAMENTO
„
Atualizações concorrentes são invisíveis
Se várias transações são executadas concorrentemente, os
resultados devem ser os mesmos como se elas fossem executadas
serialmente em alguma ordem
‰
‰
DURABILIDADE
„
Atualizações completadas com sucesso (commit) são persistentes
‰
9
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Isolamento - Exemplo
„
„
T2:
Read(x)
x ←x+1
Write(x)
Commit
Read(x)
x ←x+1
Write(x)
Commit
Read(x)
x ←x+1
Write(x)
Commit
T1:
T1:
T2:
T1:
T2:
T2:
T1:
T2:
Áreas das aplicações
„
„
„
Duração da transação
‰
Organização das ações de leitura e atualização
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
„
„
„
Dados sujos e
atualização
perdida!
‰
on-line (curta duração) x batch (longa duração)
duas etapas (primeiro leituras, depois escritas)
restrita (toda atualização é precedida de uma leitura)
modelo de ação (restrita, cada par <leitura, escrita> é executado de
forma atômica)
Estrutura
„
„
„
11
não distribuídas x distribuídas
transações compensatórias
transações heterogêneas
‰
„
Read(x)
x ←x+1
Read(x)
Write(x)
x ←x+1
Write(x)
Commit
Commit
10
Baseados em
‰
Sequências de execução possíveis
T1:
T1:
T1:
T1:
T2:
T2:
T2:
T2:
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Tipos de Transações
Considere as 2 transações
Read(x)
x ←x+1
Write(x)
Commit
8
Propriedades das Transações
Considere a transação
T1:
RS ∪ WS
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
„
„
Conjunto de itens de dados modificados por uma
transação
Conjunto base (BS)
„
Representação DAG
„
Conjunto de itens de dados lidos por uma
transação
Conjunto escrita (WS)
„
7
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Conjunto leitura (RS)
„
transações planas
transações aninhadas
workflows
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
12
2
Workflow - Exemplo
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Modelo de Arquitetura
13
Execução de Transações Centralizadas
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Execução de Transações Distribuídas
15
„
Escalonamento (Schedule, ou History)
de Execução
O problema de sincronizar transações
concorrentes de forma a manter a
consistência do banco de dados e atingir, ao
mesmo tempo, nível elevado de concorrência
Anomalias:
‰
Atualizações perdidas
„
‰
16
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Controle Distribuído da Concorrência
„
14
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Os efeitos de algumas transações não são refletidos no
banco
„
A ordem na qual as operações de um conjunto
de transações são executadas,
intercaladamente
T1: Read(x)
Write(x)
Commit
T2:
Write(x)
Write(y)
Read(z)
Commit
T3: Read(x)
Read(y)
Read(z)
Commit
Leituras inconsistentes
„
Se uma transação lê um mesmo item de dado mais de
uma vez, deve sempre encontrar o mesmo valor
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
H1={W2(x),R1(x), R3(x),W1(x),C1,W2(y),R3(y),R2(z),C2,R3(z),C3}
17
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
18
3
Escalonamento de Execução
Escalonamento Completo - Exemplo
Dadas 3 transações
„
‰
‰
„
T1 : Read(x)
Write(x)
Commit
2 operações Oij(x) e Okl(x) estão em conflito se pelo
menos 1 delas é operação de gravação
leitura-gravação, gravação-gravação
ordem de execução é importante
T2 :Write(x)
Write(y)
Read(z)
Commit
T3 :Read(x)
Read(y)
Read(z)
Commit
Um possível escalonamento completo é dado como o DAG
Escalonamento completo
‰
estabelece a ordem de execução de todas as operações em seu
domínio
falhas resultam em escalonamentos incompletos... como lidar
com eles?
19
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Algoritmos de Controle de
Concorrência
Sincronizam execução
concorrente de
transações mais cedo
Algoritmos de
Controle da
Concorrência
Pessimistas
Bloqueio
(2PL)
Ordenação
de timestamp
Algoritmos de Controle de
Concorrência
Atrasam a
sincronização das
transações até o seu
término
„
Bloqueio
Ordenação
de timestamp
„
Centralizado
Básicos
Cópia
Primária
Várias
Versões
Distribuídos
Conservativos
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
21
„
„
rl
yes
no
Write
Compute
Validate
Write
22
Bloqueio em 2 fases (2PL)
„
Transações indicam suas intenções solicitando bloqueios
do escalonador (gerenciador de bloqueios).
Bloqueios podem ser de leitura (rl) [bloqueio
compartilhado] ou bloqueio de gravação (wl) [bloqueio
exclusivo]
Bloqueios de leitura e de gravação conflitam (porque
operações de leitura e escrita são incompatíveis
rl
wl
Compute
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
„
„
Read
Otimistas
Read
Algoritmos de Bloqueio
„
Pessimistas
Validate
Otimistas
Híbridos
20
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
„
Uma transação bloqueia um objeto antes de usá-lo
Quando um objeto está bloqueado por outra transação, a transação
solicitante do bloqueio deve aguardar
Quando uma transação libera um bloqueio, não pode solicitar outro
bloqueio
wl
no
no
Bloqueios funcionam bem ao permitir processamento
concorrente de transações
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
23
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
24
4
Ordenação por timestamp
„
„
„
„
Algoritmos de CC Otimistas
É atribuído um timestamp único global ts(Ti ) para cada transação (Ti )
Gerenciador de transações atribui o timestamp a todas as operações da
transação
A cada item de dado é atribuído um timestamp de gravação (wts) e um
timestamp de leitura (rts)
‰ rts(x) = maior timestamp das transações que leram x
‰ wts(x) = maior timestamp das transações que gravaram x
Operações conflitantes são resolvidas pela ordem do timestamp.
Algoritmo básico:
for Ri (x)
if ts(Ti) < wts(x)
then reject Ri(x)
else accept Ri(x)
rts(x) <- ts(Ti)
„
‰
„
„
„
for Wi (x)
if ts(Ti)<rts(x) and ts(Ti)<wts(x)
then reject Wi(x)
else accept Wi(x)
wts(x) <- ts(Ti)
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
25
Teste de Validação de CC Otimistas
„
„
Nível mais alto de concorrência
Custo de armazenamento mais elevado
„
„
„
„
Um impasse pode ocorrer porque as transações esperam uma pela
outra
Uma transação está em “deadlock” se está bloqueada e permanecerá
assim até que ocorra uma intervenção externa
Algoritmos de CC baseados em bloqueio podem resultar em
impasses
Algoritmos de ordenação de timestamp que exigem a espera de
transações também podem causar impasses
Gráfico de espera (Wait-for graph – WFG)
‰
27
WFG locais x globais
Existe um arco Ti →Tj no WFG se a transação Ti estiver esperando que
outra transação Tj libere um bloqueio sobre alguma entidade.
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
28
Gerência de Impasses
„
Ignorar…
„
Prevenção
‰
‰
„
„
Garantir que os impasses nunca ocorram. Gerenciador de transações
verifica uma transação quando ela é iniciada e não permite que ela
prossiga se houver possibilidade de impasse. Não exigem suporte em
tempo de execução. Não adequada p/ SGBD
Detectam situações potenciais de impasse com antecedência e asseguram
que eles não ocorrerão (ordem pré-definida, timestamp). Exigem suporte
em tempo de execução.
Detecção e Recuperação (mais popular)
‰
29
Deixe que o programador da aplicação lide com ele, ou re-inicie o sistema
Anulação
‰
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
26
Impasses (Deadlocks)
Ordens possíveis
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Tij : transação Ti que executa no nó j
Transações executam independentemente em cada nó até que
alcançam o final da sua fase de leitura
Todas as subtransações recebem um timestamp no final da sua fase
de leitura
Teste de Validação realizado durante a fase de validação. Se um
falha, todas são rejeitadas
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
„
„
Modelo de execução da transação: dividir em subtransações, cada
uma executando em um nó
Permitem que impasses ocorram, detectam-nos monitorando formação de
ciclos no WFG e rompendo-os. Exigem suporte em tempo de execução
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
30
5
Download