Transações Controle Distribuído de Concorrência Métodos de

Propaganda
Gerência de Transações Distribuídas
Gerência de Transações Distribuídas
Alcides Pamplona
[email protected]
Alcides Pamplona 2010 ©
© 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião)
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Conteúdo
Transações
Controle Distribuído de Concorrência
Métodos de Controle de Concorrência
Deadlocks
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
1
Gerência de Transações Distribuídas
Conceitos Básicos
Uma transação é definida como uma ou mais
operações que alteram o estado do banco de
dados.
As transações devem ser atômicas, ou seja,
indivisíveis. Só possuindo um estado, se algo
impedir o término da transação o banco deve
ser restaurado ao estado anterior ao início da
transação através de um mecanismo de
rollback.
3
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Banco de
Dados pode
ficar
inconsistente
durante a
transação
Fim da
Transação
Inicio da
Transação
Banco de Dados em
Estado Consistente
Banco de dados em
Estado Consistente
Estados da Transação
Execução da
Transação
4
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
2
Gerência de Transações Distribuídas
Propriedade das Transações
ATOMICIDADE
Tudo ou nada
Em caso de falha, resultados parciais são desfeitos
Recuperação de transação x recuperação de falha
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 5
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Processamento de Transações
Para processar uma transação, cada nó do sistema
contém dois subsistemas, um Gerenciador de Transações
e um Coordenador de Transações.
Gerenciador de Transações: é responsável pelo
gerenciamento de execuções das transações (ou
subtransações), que acessam dados armazenados em
um nó local, além de garantir as propriedades ACID.
Coordenador de Transações coordena a execução de
várias transações (locais e globais) iniciados naquele nó e
deve garantir a atomicidade da transação através do
protocolo de efetivação, em que o protocolo mais utilizado
é o Protocolo de Efetivação em duas fases (two-phase
commit protocol) que será detalhado mais à frente.
6
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
3
Gerência de Transações Distribuídas
Protocolo Two-fase commit (2PC)
Serve para assegurar a consolidação atômica
de transações distribuídas.
Uma transação distribuída necessita de um
commit especial. Durante uma transação, o
gerenciador não pode aguardar indefinidamente
a resposta de commit de um dos sites, pois, se
durante o commit de um deles, ocorrer um erro,
e outros já deram commit, não será possível dar
rollback na transação.
Por isso o 2PC divide esta tarefa em duas fases:
7
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Protocolo Two-fase commit (2PC)
Fase 1 - preparação
O gerenciador de transação envia uma mensagem “prepare” a
todos os sites participantes e entra em estado de espera. Os
gerenciadores locais de cada site participante da transação
verificam a possibilidade de consolidar a transação e
respondem. Depois de receber uma resposta de todos os
participantes, o gerenciador decide entre consolidar ou abortar
a transação (Fase Commit).
8
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
4
Gerência de Transações Distribuídas
Protocolo Two-fase commit (2PC)
Fase 2 - Commit
O gerenciador decide sobre a transação através de duas
regas:
Se um dos participantes votar por abortar a transação, o
gerenciador tem de chegar a uma decisão de abortar global.
Se todos os participantes votarem por consolidar a transação, o
gerenciador tem de chegar a uma decisão de consolidação
global.
9
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Controle de Concorrência
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
Os efeitos de algumas transações não são refletidos no
banco
Leituras inconsistentes
Se uma transação lê um mesmo item de dado mais de
uma vez, deve sempre encontrar o mesmo valor
10
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
5
Gerência de Transações Distribuídas
Controle de Concorrência
Inicio()
Inicio()
Leia (Saldo)
Saldo = 100
Some (10)
Saldo = 100
Escreva (Saldo)
Commit()
Leia (Saldo)
Subtraia (30)
Escreva (Saldo)
Saldo = 110
Saldo = 70
Alcides Pamplona 2010 ©
Commit()
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Algoritmos de controle de concorrência
Algoritmos de
Controle de
Concorrência
Otimistas
Pessimistas
Bloqueios
(2PL)
Ordenação de
timestamp
Centralizados
Básicos
Cópia
Primária
Várias
Versões
Distribuídos
Conservativos
Híbridos
Bloqueio
Ordenação
de timestamp
12
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
6
Gerência de Transações Distribuídas
Algoritmos de controle de concorrência
PESSIMISTAS
Validação
Leitura
Cálculo
Escrita
Cálculo
Validação
Escrita
OTIMISTAS
Leitura
13
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Controle distribuído de concorrência
Um dos algoritmos mais difundidos é o bloqueio
(lock). Este mecanismo funciona quando algum
processo (o que dá início à transação) requer
operações de leitura ou gravação sobre registros
(ou outro objeto do banco de dados). Como parte
da transação, ele deve primeiro obter o bloqueio do
recurso ou dos recursos que irá utilizar. Se outros
processos requisitarem esses recursos não irão
obtê-los, pelo fato destes estarem bloqueados.
O gerenciador mantém uma lista de objetos
bloqueados e assim rejeita todas as demais
tentativas de bloqueio.
14
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
7
Gerência de Transações Distribuídas
Bloqueios
Transações indicam suas intenções solicitando bloqueios do
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
rl
Sim
Não
wl
Não
Não
Bloqueios funcionam bem ao permitir processamento
concorrente de transações
15
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Controle de concorrência
Centralizado: Um único nó se responsabiliza por
gerenciar as solicitações de bloqueio e desbloqueio
para todos os nós
Cópia primária: Uma cópia de cada objeto é
chamada de cópia primária. Todas as requisições
de bloqueio ou desbloqueio de uma cópia do objeto
são gerenciadas pelo nó onde a cópia primária está
armazenada.
Distribuido: Requisição de bloqueio ou desbloqueio
de uma cópia do objeto é manipulada pelo
gerenciador de bloqueio do nó onde está
armazenada
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
8
Gerência de Transações Distribuídas
Bloqueio em duas Fases (2PL)
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
17
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Ordenação por timestamp
É 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
O número de timestamp é caracterizado por um
grupo de dois dígitos
O digito menos significante identifica o nó no qual o
evento ocorre
O dígito mais significante identifica o evento que ocorre
naquele nó.
Operações conflitantes são resolvidas pela ordem
do timestamp.
18
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
9
Gerência de Transações Distribuídas
Exemplo de uso de Timestamp
Nó 1
Nó 2
Nó 3
19
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Controle de Concorrência Otimista
Modelo de execução da transação: dividir em
subtransações, cada uma executando em um nó
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
Nível mais alto de concorrência
Custo de armazenamento mais elevado
20
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
10
Gerência de Transações Distribuídas
Deadlocks
Um deadlock ou 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)
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.
21
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
Gerência de Transações Distribuídas
Gerência de deadlocks
Ignorar
Deixe que o programador da aplicação lide com ele, ou
re-inicie o sistema
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
Anulação
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 usual)
Permitem que impasses ocorram, detectam-nos monitorando
formação de ciclos no WFG e rompendo-os. Exigem suporte em
tempo de execução
Alcides Pamplona 2010 ©
22
Banco de Dados Distribuídos
11
Gerência de Transações Distribuídas
Exercício 04
Dado o conjunto de Transações abaixo
defina a melhor forma de ordená-los e que
método seria indicado.
T1
T2
T3
Leia (x)
Escreva(x)
Leia(x)
Escreva (x)
Escreva(y)
Leia(y)
Commit
Leia(z)
Leia(z)
Commit
Commit
23
Alcides Pamplona 2010 ©
Banco de Dados Distribuídos
12
Download