Transação Gerência de Transações Distribuídas Uma é uma unidade de computação consistente e confiável Transparência de concorrência Transparência de falhas Fernanda Baião baiao@cos.ufrj.br Banco de dados em um estado consistente Banco de dados pode estar em um estado inconsistente durante a execução Banco de dados em um estado consistente Outubro de 2003 Begin Transaction execução da End Transaction 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 2 Transação Exemplo Consulta SQL Simples Transaction BUDGET_UPDATE EXEC SQL UPDATE PROJ SET BUDGET = BUDGET * 1.1 WHERE PNAME = CAD/CAM end. Banco de Dados exemplo Considere uma base de reservas aéreas com as relações FLIGHT(FNO, DATE, SRC, DEST, STSOLD, CAP) CUST(CNAME, ADDR, BAL) FC(FNO, DATE, CNAME,SPECIAL) 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 3 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 4 Transação exemplo Versão SQL EXEC SQL UPDATE FLIGHT SET STSOLD = STSOLD + 1 EXEC SQL INSERT INTO FC(FNO, DATE, CNAME, SPECIAL); VALUES (flight_no, date, customer_name, null); end. {Reservation} 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 5 Terminação de Transações EXEC SQL SELECT STSOLD,CAP INTO temp1,temp2 FROM FLIGHT if temp1 = temp2 then output( no free seats ); Abort else EXEC SQL UPDATEFLIGHT SET STSOLD = STSOLD + 1 EXEC SQL INSERT INTO FC(FNO, DATE, CNAME, SPECIAL); VALUES (flight_no, date, customer_name, null); 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 temp Read(flight_no(date).stsold); if temp = flight(date).cap then output( no free seats ); Abort end else Write(flight(date).stsold, temp + 1); Write(flight(date).cname, customer_name); Write(flight(date).special, null); ; end end. {Reservation} Caracterização Conjunto leitura (RS) Conjunto de itens de dados lidos por uma Conjunto escrita (WS) Conjunto de itens de dados modificados por uma Conjunto base (BS) RS WS 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 7 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 8 Representação DAG Considere a Read(x) Read(y) x x + y 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 9 Propriedades das Transações ATOMICIDADE Tudo ou nada Em caso de falha, resultados parciais são desfeitos Recuperação de 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 ( 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 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 10 Isolamento - Exemplo Tipos de Transações Considere as 2 transações T1: Read(x) T2: Read(x) x x+1 x x+1 Sequências de execução possíveis T1: Read(x) T1: Read(x) T1: x x+1 T1: x x+1 T1: T2: Read(x) T1: T1: T2: Read(x) T2: x x+1 T2: x x+1 T2: T2: T1: T2: T2: Dados sujos e atualização perdida! Baseados em Áreas das aplicações não distribuídas x distribuídas transações compensatórias transações heterogêneas Duração da on-line (curta duração) x batch (longa duração) Organização das ações de leitura e atualizaçã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 transações planas transações aninhadas workflows 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 11 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 12 2
Workflow - Exemplo Modelo de Arquitetura 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 13 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 14 Execução de Transações Centralizadas Execução de Transações Distribuídas 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 15 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 16 Controle Distribuído da 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 lê um mesmo item de dado mais de uma vez, deve sempre encontrar o mesmo valor Escalonamento (Schedule, ou History) de Execução A ordem na qual as operações de um conjunto de transações são executadas, intercaladamente T1: Read(x) T2: T3: Read(x) Write(y) Read(y) Read(z) Read(z) H1={W2(x),R1(x), R3(x),W1(x),C1,W2(y),R3(y),R2(z),C2,R3(z),C3} 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 17 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 18 3
Escalonamento de Execução 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 Escalonamento completo estabelece a ordem de execução de todas as operações em seu domínio Escalonamento Completo - Exemplo Dadas 3 transações T1 : Read(x) T2 : T3 :Read(x) Write(y) Read(y) Read(z) Read(z) Um possível escalonamento completo é dado como o DAG falhas resultam em escalonamentos incompletos... como lidar com eles? 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 19 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 20 Algoritmos de Controle de Sincronizam execução concorrente de transações mais cedo Pessimistas Algoritmos de Controle da Atrasam a sincronização das transações até o seu término Otimistas Algoritmos de Controle de Pessimistas Validate Read Compute Write Bloqueio (2PL) Centralizado Ordenação de timestamp Básicos Híbridos Bloqueio Ordenação de timestamp Otimistas Cópia Primária Distribuídos Várias Versões Conservativos Read Compute Validate Write 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 21 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 22 Algoritmos de Bloqueio 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 rl yes no 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 Bloqueio em 2 fases (2PL) Uma bloqueia um objeto antes de usá-lo Quando um objeto está bloqueado por outra, a solicitante do bloqueio deve aguardar Quando uma libera um bloqueio, não pode solicitar outro bloqueio 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 (Ti ) Gerenciador de transações atribui o timestamp a todas as operações da 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) for Wi (x) if ts(ti) < wts(x) if ts(ti)<rts(x) and ts(ti)<wts(x) then reject Ri(x) then reject Wi(x) else accept Ri(x) else accept Wi(x) rts(x) <- ts(ti) wts(x) <- ts(ti) Modelo de execução da : dividir em subtransações, cada uma executando em um nó Tij : 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 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 25 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 26 Teste de Validação de CC Otimistas Ordens possíveis Impasses (Deadlocks) Um impasse pode ocorrer porque as transações esperam uma pela outra Uma 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 Ti estiver esperando que outra Tj libere um bloqueio sobre alguma entidade. 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 27 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 28 WFG locais x globais 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) 29 Gerência de Impasses 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 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 popular) 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