Sistemas Distribuídos

Documentos relacionados
Sincronização e Concorrência

Processamento de Transações. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Processamento de Transações. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Controle de Transação

Banco de Dados I. Aula 18 - Prof. Bruno Moreno 22/11/2011

TRANSAÇÕES E CONTROLE DE CONCORRÊNCIA Em resumo: Transações: clientes podem necessitar que um servidor execute uma sequência de requisições de forma a

Banco de Dados I 6 Transações e Controle de Concorrência

Sistemas Distribuídos Transações

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Criando Transações. Prof. Fernanda Baião. TbEstoqueLivros. TbEstoqueLivros. ID IDLoja IDLivro Estoque

Relógio Lógico Algoritmo de Lamport. Relógio Lógico Algoritmo de Lamport. Relógio Físico Algoritmo Centralizado. Relógio Físico Algoritmo Centralizado

Sincronização e Comunicação entre Processos. Adão de Melo Neto

PROCESSAMENTO DE TRANSAÇÕES

Sincronização em SDs I. Bruno M. Carvalho Sala: 3B2 Horário: 35T34

Processamento de Transações

UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA. Banco de Dados II. Recuperação. Carlos Eduardo Portela Serra de Castro

Processamento de Transações

ANÁLISE E PROJETO DE BANCO DE DADOS

Orientações. Transações - PostgreSQL. Relembrando: Propriedades desejáveis. Abrir Prompt de comando ROLLBACK

Sistemas Distribuídos Aula 20

Desenvolvimento de Aplicações Distribuídas

Sistemas Operacionais. Sistema de entrada e Saída

BDII SQL TRANSAÇÃO Revisão 2

23/05/12. Conteúdo. Introdução ao gerenciamento de transações. Motivação. Motivação. Motivação. Motivação

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

SISTEMA DE ARQUIVOS DO SISTEMA OPERACIONAL

Concorrência. Sistemas Distribuídos e Tolerância a Falhas. Lia Ribeiro 1

Sumário. Recuperação de Falhas

Comunicação entre processos

Controle de Concorrência

Barramento. Prof. Leonardo Barreto Campos 1

Aula 03. Evandro Deliberal

Banco de Dados. Controle de Concorrência e Recuperação de Transação. Prof. João Eduardo Ferreira Prof. Osvaldo Kotaro Takai

Sistemas Distribuídos. 13 Transações Distribuídas. Transações Distribuídas. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Roteiro. Introdução Sincronização de Relógio Físico Sincronização de Relógio Lógico Exclusão Mútua

Processamento de Transações

Sistemas Distribuídos Capítulo 8 - Aula 15

BANCO DE DADOS 2 TRANSAÇÃO

Gerenciamento de Transações em Banco de Dados

Controle de Transações. Banco de Dados André Luiz do Vale Soares

Universidade Federal do Maranhão

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Revisão e Introdução 23/05/12. Controle Distribuído da Concorrência. Revisão de Conceitos. Revisão de Conceitos. Transação Operação

Infra-Estrutura de Software

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

SSC510 Arquitetura de Computadores. 8ª aula

Parte I Multiprocessamento

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Introdução aos Sistemas Distribuídos

e c d o o r B s s n i : l e F s

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Fundamentos de Sistemas Operacionais

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES SISTEMAS DE COMPUTAÇÃO. Cristina Boeres

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Introdução aos Sistemas Operacionais

Sistemas Distribuídos

Aluísio Augusto Silva Gonçalves 17 de maio de 2018

Programação Concorrente e Paralela. Noemi Rodriguez

Concorrência em Processos

Técnicas de Recuperação em Banco de Dados

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 21. Escola Politécnica da Universidade de São Paulo

Formação de DBAs SQL Server 2008

Modelo de Programação Paralela

Sistemas Distribuídos Capítulo 8 - Aula 13

Sistemas Distribuídos

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Sistemas de arquivos distribuídos. ECO036 - Sistemas Paralelos e Distribuídos

GERENCIAMENTO DE TAREFAS. Prof. Me. Hélio Esperidião

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

BD II (SI 587) Técnicas de Recuperação. Josenildo Silva.

08/08/2016. Metodologia de trabalho Sistema de notas Trabalhos Artigos Celulares Presença Entrega de trabalhos Uso de laboratório

Sistemas Distribuídos

TRANSAÇÕES: SISTEMA DE RECUPERAÇÃO E CONTROLE DE CONCORRÊNCIA

Sincronização em Sistemas Distribuídos

Sistemas de Informação e Bases de Dados 2012/2013. Transações. Alberto Sardinha

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Comunicação entre Processos

Introdução à Computação: Sistemas de Computação

Processamento Paralelo

BD II (SI 587) Algoritmos de recuperação Avançado e ARIES. Josenildo Silva.

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Bancos de Dados Distribuídos. Lucas Henrique Samuel Queiroz

Tempos e Estados Globais. ECO036 - Sistemas Paralelos e Distribuídos

BD II (SI 587) Controle de Concorrência. Josenildo Silva.

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

Processamento de Transações II

Variáveis e Memória. Revisão. Conceitos. Operações sobre a memória

Sistemas de Informação. Sistemas Operacionais

Programação Concorrente

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

SISTEMAS OPERACIONAIS

Sistemas da Informação. Banco de Dados I. Edson Thizon

Sistemas Distribuídos. Capítulo 6 - Aula 10

slide Pearson Prentice Hall. Todos os direitos reservados.

Transcrição:

Sistemas Distribuídos Transações atômicas Conteúdo O modelo transacional Armazenamento estável Primitivas transacionais Propriedades das transações Transações aninhadas Implementação Área de trabalho privada Listas de escrita adiantadas Protocolo de aceitação em duas fases Controle de concorrência Bloqueio Controle otimista Método do carimbo

INTRODUÇÃO TRANSAÇÕES ATÔMICAS Método de abstração de sincronização em sistemas distribuídos de nível mais alto, ocultando semáforos, monitores e troca de mensagens VANTAGEM: o programador concentra-se na maneira que os processos trabalham em paralelo, nos algoritmos das aplicações História -- Transações Atômicas Modelo baseado no mundo de negócios: negociação entre empresas para fechar um contrato Negociações Conceito evoluiu do funcionamento das máquinas dos anos 60 (tudo-ou-nada)

Transações Atômicas em Sistemas Distribuídos Transações Atômicas em Sistemas Distribuídos Exemplo: Transferência de Fundos Bancários 1- Saque (250, conta1) 2- Depósito (250, conta2) Conta1 Saldo = 500 Banco Cliente Conta2 Saldo = 300 Pedido de Transferência

Transações Atômicas em Sistemas Distribuídos Exemplo: Transferência de Fundos Bancários 1- Saque (250, conta1) 2- Depósito (250, conta2) Conta1 Saldo = 250 Saque = 250 Banco Cliente Conta2 Saldo = 300 Pedido de Transferência Transações Atômicas em Sistemas Distribuídos Exemplo: Transferência de Fundos Bancários 1- Saque (250, conta1) 2- Depósito (250, conta2) Conta1 Saldo = 250 Banco Cliente Conta2 Saldo = 300 Pedido de Transferência

Transações Atômicas em Sistemas Distribuídos Exemplo: Transferência de Fundos Bancários 1- Saque (250, conta1) 2- Depósito (250, conta2) Conta1 Saldo = 500 Banco Cliente Conta2 Saldo = 300 Operação Abortada! Modelo Transacional O sistema transacional é constituído de um conjunto de processos independentes, podendo cada um falhar aleatóriamente. A comunicação entre eles geralmente não é confiável, podendo haver perda de mensagens. Assim, veremos como os erros na comunicação serão tratados de forma transparente pelo software.

ARMAZENAMENTO ESTÁVEL A informação é armazenada de três maneiras: 1- RAMs comuns a informação é perdida quando há falha na alimentação ou quando a máquina apresenta algum defeito (volátil) 2- Discos sobrevivem à falha do processador, porém podem se perder no caso de problemas da cabeça de leitura e gravação, entre outros. ARMAZENAMENTO ESTÁVEL 3- Memória estável projetada para sobreviver a tudo, exceto a calamidades. Alto grau de tolerância a falhas. Drive 1 Drive 2 A B A B C D C D O drive 2 possui uma cópia do drive 1

ARMAZENAMENTO ESTÁVEL 3- Memória estável projetada para sobreviver a tudo, exceto a calamidades. Alto grau de tolerância a falhas. Drive 1 Drive 2 A B A B C D C D Atualizado o Drive 1 ARMAZENAMENTO ESTÁVEL 3- Memória estável projetada para sobreviver a tudo, exceto a calamidades. Alto grau de tolerância a falhas. Drive 1 Drive 2 A B A B C D C D O drive 2 é atualizado assim que o sistema é recuperado

ARMAZENAMENTO ESTÁVEL 3- Memória estável projetada para sobreviver a tudo, exceto a calamidades. Alto grau de tolerância a falhas. Drive 1 Drive 2 A B A Checksum... Errado... C D C D Regenera o bloco defeituoso a partir do drive 1 PRIMITIVAS TRANSACIONAIS Primitivas para programação. Ex.: BEGIN_TRANSACTION: marca o início da transação END_TRANSACTION: termina a transação e tenta fazer o commit ABORT_TRANSACTION: destrói a transação; restaura os valores anteriores (ao início da transação) READ: lê dados de um objeto (por exemplo, um arquivo) WRITE: escreve dados em um objeto Primitivas dependem da aplicação.

PRIMITIVAS TRANSACIONAIS BEGIN_TRANSACTION.................. END_TRANSACTION CORPO DA }TRANSAÇÃO SÃO USADAS PARA DELIMITAR O ESCOPO DE UMA TRANSAÇÃO PS. A REGRA É QUE TODAS OU NENHUMA DESTAS OPERAÇÕES SÃO EXECUTADAS. PRIMITIVAS TRANSACIONAIS Exemplo de uma transação completa São Paulo BEGIN_TRANSACTION Reserva São Paulo - Campinas Reserva Campinas - Araçatuba Reserva Araçatuba - Campo Grande END_TRANSACTION Campo Grande

PRIMITIVAS TRANSACIONAIS Exemplo de uma transação abortada São Paulo BEGIN_TRANSACTION Reserva São Paulo - Campinas Reserva Campinas - Araçatuba Araçatuba - Campo Grande (LOTADO) ABORT_TRANSACTION Campo Grande PROPRIEDADES DAS TRANSAÇÕES SERIALIZAÇÃO As transações concorrentes não podem interferir umas com as outras. ATOMICIDADE As transações devem parecer indivisível para o mundo exterior. PERMANÊNCIA Havendo acordo entre as partes, as mudanças efetuadas passam a ser permanentes.

SERIALIZAÇÃO Serialização: assegura que se duas ou mais transações estiverem rodando, o resultado final aparece como se todas rodassem seqüencialmente em alguma ordem, ou seja, cada uma não deve poder interferir nas outras. Exemplo da execução de 3 transações para diferentes escalonamentos escalonamento 1: serializado e legal escalonamento 2: não serializado e legal escalonamento 3: não serializado e ilegal SERIALIZAÇÃO BEGIN_TRANSACTION x = 0; x = x + 1; END_TRANSACTION BEGIN_TRANSACTION x = 0; x = x + 2; END_TRANSACTION BEGIN_TRANSACTION x = 0; x = x + 3; END_TRANSACTION TRÊS TRANSAÇÕES SENDO EXECUTADAS SIMULTANEAMENTE

SERIALIZAÇÃO ESCALONAMENTOS Escalonamento 1 Escalonamento 2 Escalonamento 3 x = 0; x = x + 1; x = 0; x = x + 2; x = 0; x = x + 3; x = 0; x = 0; x = x + 1; x = x + 2; x = 0; x = x + 3; x = 0; x = 0; x = x + 1; x = 0; x = x + 2; x = x + 3; Legal Serializado Legal Não Serializado Ilegal Livre Ordenação ATOMICIDADE Atomicidade: as transações devem permanecer indivisíveis para o mundo exterior, ou seja, ou todos os comandos da transação são executados ou nenhum comando é executado. Enquanto a transação estiver em curso nenhum outro processo tem acesso aos estados intermediários Ex.: Um determinado arquivo tem 10 bytes quando se inicia uma transação que tem como objetivo acrescentar novos bytes a tal arquivo. Se algum outro processo vier a ler o arquivo enquanto a transação estiver se realizando, ele só vai enxergar os 10 bytes originais.

PERMANÊNCIA Permanência: uma vez que as partes envolvidas em uma transação entrem em acordo, as mudanças efetuadas passam a ser permanentes Ex.: Entre 2 empresas, primeiramente são feitos acordos verbalmente, podendo ser cancelado a qualquer momento. A partir do instante em que esses acordos são firmados através de um contrato, ambas as partes devem seguir em frente e os resultados obtidos devem ser permanentes, isto é, nenhuma alteração interna em ambas as partes poderá alterar o resultado obtido. TRANSAÇÕES ANINHADAS As transações podem conter subtransações Estas subtransações podem rodar em processos diferentes Subtransação de alto nível, que pode dar origem a vários filhos para rodar em paralelo uns com os outros, em processadores diferentes. OBJETIVO: Melhorar a performance e simplificar a programação.

TRANSAÇÕES ANINHADAS PROBLEMA: Caso uma transação de mais alto nível venha a abortar (restarurando os valores iniciais), os resultados processados por uma transação filha devem ser desconsiderados, furando a propriedade da permanência a propriedade de permanência só vale para a transação de mais alto nível TRANSAÇÕES ANINHADAS Transação Mãe Resultado Visível a Mãe Transações Filhas Transação Efetivada

IMPLEMENTAÇÃO Métodos usados na Implementação das Transações Área de Trabalho Privada Lista de Escrita Adiantadas Protocolo de Aceitação em Duas Fases ÁREA DE TRABALHO PRIVADA Quando uma transação se inicia ela recebe uma área de trabalho privada. Tudo que o processo ler ou escrever vai para esta área, ao invés de ir para a área real (sistema de arquivos e objetos normal do sistema). DESVANTAGEM: O custo de copiar tudo para uma área privada é proibitivo.

ÁREA DE TRABALHO PRIVADA Otimizações: 1ª - Se o processo somente lê o arquivo não há necessidade da cópia. Necessidade de cópia apenas para os arquivos modificados, fazendo leituras da área de trabalho real. Quando iniciada uma transação, a área de trabalho privada é vazia. 2ª - Copia-se para a área privada apenas a tabela de índices dos arquivos utilizados. Se o processo modificar o arquivo faz-se a cópia dos blocos modificados para a área privada e atualiza-se a tabela. ÁREA DE TRABALHO PRIVADA Antes da Transação 0 1 2 Índice 1 2 0 Disco Blocos Livres

ÁREA DE TRABALHO PRIVADA Durante a Transação Índice Original 0 1 2 0 1 2 Área de trabalho privada 1 2 0 ÁREA DE TRABALHO PRIVADA Durante a Transação Índice Original 0 1 2 0 1 2 3 Área de trabalho privada 1 2 0 0 3

ÁREA DE TRABALHO PRIVADA Após o término da Transação 0 1 2 3 1 2 0 3 LISTA DE ESCRITAS ADIANTADAS As modificações são realmente realizadas em suas devidas posições, mas antes de modificar é feito um registro na lista de escritas adiantadas, na área de memória estável, informando: qual a transação que está fazendo a mudança, qual o arquivo e bloco que está sendo modificado quais os valores antigos e os novos. Só depois que estas informações forem escritas com sucesso, o arquivo é modificado se a transação tiver sucesso OK se a transação abortar a lista é utilizada para recuperar os valores originais (rollback)

LISTA DE ESCRITAS ADIANTADAS x = 0; y = 0; BEGIN_TRANSACTION x = x + 1; y = y + 2; x = y * y; END_TRANSACTION Buffer X = 0/1 Y = 0/2 X = 1/4 Rollback O processo também pode ser utilizado na recuperação de falhas PROTOCOLO DE ACEITAÇÃO EM DUAS FASES A ação de aceitação de uma determinada transação deve ser feita atomicamente e pode requerer a cooperação de vários processos rodando em máquinas diferentes, onde cada um trata de algumas das variáveis, arquivos e base de dados a serem modificadas no decorrer da execução. Protocolo de aceitação de transação (Gray - 1978). Um dos processos funciona como coordenador.

PROTOCOLO DE ACEITAÇÃO EM DUAS FASES O coordenador escreve em um buffer (memória estável) PREPARE, indicando início dos procedimentos de aceitação e envia msgs aos outros processos envolvidos na transação para que preparem a aceitação. Quando um subordinado recebe msg ele verifica se está preparado e escreve em um buffer PRONTO ou NÃO-PRONTO e envia a decisão de volta ao coordenador. PROTOCOLO DE ACEITAÇÃO EM DUAS FASES Quando o coordenador tiver recebido todas as respostas, ele decide se a transação foi aceita ou não. Se um dos processos não tiver aceitado, a transação é abortada. Em ambos os casos ele escreve ACEITA ou NÃO-ACEITA no buffer e manda msgs aos subordinados. Como o buffer está em memória estável, este protocolo é tolerante a falhas.

PROTOCOLO DE ACEITAÇÃO EM DUAS FASES Escreve Prepare no buffer Envie msg de Preparação Fase 1 Escreve Pronto no buffer Envie msg de Pronto Coleta todas as respostas Fase 2 Escreve Aceito no buffer Envie msg de Aceitação Aceitação Envie msg de Fim Coordenador Subordinado PROTOCOLO DE ACEITAÇÃO EM DUAS FASES Escreve Prepare no buffer Envie msg de Preparação Fase 1 Escreve Não Pronto no buffer Envie msg de Não Pronto Coleta todas as respostas Fase 2 Escreve Não Aceito no buffer Envie msg de Não Aceito Não Aceito Envie msg de Fim Coordenador Subordinado

PROTOCOLO DE ACEITAÇÃO EM DUAS FASES Memória Estável Se o coordenador falhar: - após ter escrito prepare no buffer: (após o boot ele poderá continuar de onde parou) - após ter escrito no buffer o resultado da consulta: (após o boot ele consulta o buffer e informa o resultado aos subordinados) Se o subordinado falhar: - antes de ter respondido a mensagem: (coordenador continua enviando mensagens por um determinado tempo) - após ter enviado mensagem de pronto : (consulta o buffer e continua de onde parou) CONTROLE DE CONCORRÊNCIA Algoritmo para tratar que processos diferentes sendo executados concorrentemente não interfiram uns com os outros. 1- Bloqueio (Travamento) 2- Controle Otimista da Concorrência 3- O Método do Carimbo

BLOQUEIO Quando um processo precisa ler ou escrever em um arquivo ou em outro objeto, ele primeiro bloqueia o acesso dos demais processos ao arquivo. Esse bloqueio é realizado utilizando um único gerenciador de bloqueio podendo ser um gerenciador centralizado ou um gerenciador local. Este por sua vez possui uma lista dos arquivos bloqueados e rejeita todas as tentativas de bloquear arquivos já bloqueados. BLOQUEIO Pode-se distinguir um bloqueio de leitura de um bloqueio de escrita Leitores Escritor Acesso Exclusivo Acesso Compartilhado

BLOQUEIO Granularidade de bloqueio: unidade usada no bloqueio. Ex.: registro, página, bloco etc custo do bloqueio x grau de paralelismo BLOQUEIO EM 2 FASES Em primeiro momento o processo adquire todos os bloqueios que ele necessita, que é chamado de fase de crescimento e no segundo momento libera os bloqueios durante a fase de encolhimento. Ponto de Bloqueio Fase de crescimento Fase de encolhimento Número de Bloqueios Tempo

BLOQUEIO EM 2 FASES Em muitos sistemas a fase de encolhimento começa apenas quando a transação tiver terminado o seu processamento, isto é denominado bloqueio estrito em duas fases. Garante a serialização dos processos. Se 2 processos tentarem adquirir o mesmo par de bloqueios, mas na ordem oposta, pode ocorrer um deadlock. * se ocorrer algum problema, libera-se todos os bloqueios, espera-se um tempo e reinicia-se o processo CONTROLE OTIMISTA DA CONCORRÊNCIA IDÉIA (Kung e Robinson - 1981): Vá em frente e faça tudo o que você precisa fazer, sem prestar atenção naquilo que os outros estão fazendo. Se houver algum problema preocupese com ele mais tarde. Conflitos não ocorrem com freqüência portanto na maior parte do tempo o algoritmo funciona bem. Controla-se quais arquivos foram lidos ou escritos. Ao final da transação verifica-se se algum deles foi modificado. Se isso ocorreu aborta-se a transação Vantagens: Imune ao deadlock e permite um alto grau de paralelismo. Desvantagem: Caso falhe, a transação é novamente. executada

MÉTODO DO CARIMBO Cada transação recebe um carimbo (único), quando ela executa um BEGIN_TRANSACTION. Os arquivos (objetos) são carimbados com um carimbo de leitura e/ou um de escrita a cada transação que os use. Os carimbos são únicos e ordenados o que significa que as transações são processadas em ordem. O algoritmo de Lamport garante a ordenação dos carimbos. Portanto, quando for verificado que uma transação iniciada depois da que está corrente, acessou o arquivo e foi aceita, significa que a ordem não foi respeitada e que a transação corrente está atrasada e portanto deve ser abortada. Regra: As transações com carimbo de menor valor sempre vem na frente. USO DE TRANSAÇÕES VANTAGENS: Técnica muito promissora para a construção de sistema distribuídos confiáveis, pois não há possibilidade de deadlock. DESVANTAGENS: Imensa complexidade de sua implementação, resultando em uma baixa performance