Banco de Dados - Senado Transações, Isolamento, Concorrência e Bloqueio Banco de Dados Distribuído Ilka Kawashita [email protected] Material preparado :Prof. Marcio Vitorino Transações n n n n Uma transação é uma unidade lógica do processamento do banco, que inclui uma ou mais operações de acesso ao banco de dados que precisa ser completada (ou desfeita) integralmente para garantir precisão. Essas operações podem incluir inclusão, exclusão, modificação ou seleção. Iniciar: start transaction (begin). Finalizar: commit (work). Prof.: Ilka Kawashita [email protected] Procedural Language / SQL n Controle de transações: BEGIN ........ SAVEPOINT P1; ........ END; ROLLBACK TO SAVEPOINT P1; n RELEASE SAVEPOINT P1 (destruir um ponto de salvamento) Obs: Blocos não caracterizam início e término de transação. n Prof.: Ilka Kawashita [email protected] Propriedades de uma Transação n n n n Atomicidade: uma transação é uma unidade de processamento, é realizada integralmente ou não é realizada. Consistência: uma transação leva um banco de dados de um estado consistente para outro estado consistente. Isolamento: uma transação deve parecer como se estivesse sendo executada isoladamente. Durabilidade: as alterações aplicadas a um banco de dados por meio de uma transação confirmada (commited) devem persistir no banco de dados. Prof.: Ilka Kawashita [email protected] Escalonamento de Transações n n n n Quando transações estão sendo executadas concorrentemente e de modo entrelaçado, a ordem de execução das operações das várias transações é conhecida como escalonamento (schedule). Dois escalonamentos são considerados seriais quando as operações de cada transação são executadas em série, consecutivamente, sem quaisquer operações entrelaçadas as outra transação. Um escalonamento é serial se, para todas as transações T participantes do escalonamento, todas as operações de T forem executadas consecutivamente no escalonamento; caso contrário, o escalonamento é dito não-serial. Um escalonamento S de n transações é seriável (ou serializável) se for equivalente a algum escalonamento serial das mesmas n transações. Prof.: Ilka Kawashita [email protected] Escalonamento de Transações n T1: q q q q n Op1 Op2 Op3 Op4 T2: q q q q Op1 Op2 Op3 Op4 Escalonamento Serial: n n n Op1 Op2 Op3 Op4 Op1 Op2 Op3 Op4 Escalonamento Serializável ou Seriável: n n Op1 Op1 Op2 Op2 Op3 Op4 Op3 Op4 Op1 Op2 Op1 Op3 Op2 Op3 Op4 Op4 Prof.: Ilka Kawashita [email protected] Problemas de Consistência n n n n Leitura Suja: leitura de dados não confirmados de uma linha existente, podendo ocasionar a leitura de uma informação nunca confirmada. Leitura Não-Repetida: duas leituras de dados na mesma transação não se repetem. Na segunda leitura, dados não existem ou foram modificados. Leitura Fantasma: na releitura de um conjunto de dados, surgem novas informações no conjunto. Perda de atualização: duas transações que ocorrem simultaneamente atualizam o mesmo dado. Isto pode ocorrer em uma seqüência segundo a qual uma das atualizações é perdida. Prof.: Ilka Kawashita [email protected] Níveis de isolamento (SQL) n SERIALIZABLE: uma transação é totalmente isolada das outras. Caso a transação tenha comandos DML que tentem atualizar dados não gravados de outra transação, essa transação não será efetuada. n REPEATABLE READ: os dados podem ser lidos mais de uma vez, e se outra transação tiver incluído ou atualizado linhas e estas forem gravadas no banco de dados entre uma e outra leitura dos dados, então os dados retornados da última busca serão diferentes dos dados da busca anterior. Esse efeito é conhecido como leitura fantasma. n READ COMMITED: caso a transação utilize comando DML que precise do bloqueio de linhas que outras transações estão utilizando, a operação somente será concluída após a liberação da linha da outra transação. n READ UNCOMMITED: serão lidos conteúdos não gravados ainda pelo banco de dados (transações passíveis de ROLLBACK). Há um enorme risco nessas operações, visto que o usuário que está bloqueando a informação pode descartá-la. Esse efeito é conhecido como leitura suja. n Exemplo: q START TRANSACTION SERIALIZABLE q SET TRANSACTION LEVEL SERIALIZABLE Prof.: Ilka Kawashita [email protected] Níveis de isolamento (Resumo) Prof.: Ilka Kawashita [email protected] Bloqueio n Um bloqueio (lock) é uma variável associada a um item de dado que descreve o status do item com relação a possíveis operações que podem ser aplicadas ao mesmo: q Bloqueio Binário: locked (1) ou unlocked (0). n n n q lock_item read_item ou write_item unlock_item Bloqueios Compartilhados/Exclusivos: Read/Write. n n n read_lock (share-locked) write_lock (exclusive-locked) unlock Prof.: Ilka Kawashita [email protected] Granularidade de Itens de Dados n Todas as técnicas de controle de concorrência consideram que o banco de dados é formado a partir de uma série de itens de dados com nomes. Um item de dados pode ser escolhido como sendo: q q q q q Um valor de um campo de um registro do banco de dados. Um registro do banco de dados. Um bloco de disco. Um arquivo inteiro. Todo o banco de dados. Prof.: Ilka Kawashita [email protected] Técnicas de Controle de Concorrência n Protocolos de Serialização: q q q Técnica de Bloqueio. Ordenamento de Registros de Timestamp (data/ hora/minuto/segundo). Validação (otimistas). Prof.: Ilka Kawashita [email protected] Bloqueio em Duas Fases (2PL) Diz-se que uma transação segue o protocolo de bloqueio em duas fases se todas as operações de bloqueio (read_lock ou write_lock) precedem a primeira operação de desbloqueio na transação. Essa transação pode ser dividida em duas fases: uma fase de expansão ou crescimento, durante a qual podem-se obter novos bloqueios em itens mas nenhum pode ser liberado; e uma fase de encolhimento ou retração (segunda fase), durante a qual bloqueios existentes podem ser liberados, mas nenhum bloqueio pode ser obtido. T1 _____________ read_lock(Y); read_item(Y); write_lock(X); unlock(Y); read_item(X); X:=X+Y; write_item(X); unlock(X); Prof.: Ilka Kawashita [email protected] Bloqueio em Duas Fases (2PL) n n 2PL básico: 2PL conservador: q q q q n 2PL estrito: q q n requer que uma transação bloqueie todos os itens que acessa antes que a transação inicie sua execução; se qualquer um dos itens não puder ser bloqueado, a transação não bloqueia item algum; é livre de deadlock; é difícil de se utilizar na prática. uma transação T não libera qualquer um de seus bloqueios exclusivos (de gravação) até que conclua (commit) ou seja abortada; nenhuma outra transação pode ler ou gravar um item que esteja gravado por T até que T esteja concluída (commit); 2PL rigoroso: q q uma transação T não libera qualquer um de seus bloqueios exclusivos ou compartilhados (de gravação ou leitura) até que conclua (commit) ou seja abortada; nenhuma outra transação pode ler ou gravar um item que esteja gravado por T até que T esteja concluída (commit). Prof.: Ilka Kawashita [email protected] Ordenamento de Registros de Timestamp n n n n Não utilizam bloqueios (sem deadlock). As transações são ordenadas com base em seus registros de timestamp. Um escalonamento no qual as transações participam é então serializável e o escalonamento serial equivalente tem as transações na ordem de seus valores de timestamp. Pode causar rollback em cascata. Prof.: Ilka Kawashita [email protected] Validação ou Certificação (Otimistas) n n n n n Nenhuma verificação é realizada enquanto a transação está sendo executada. As atualizações na transação não são aplicadas diretamente aos itens de dados até que a transação atinja seu final. Durante a execução da transação, todas as atualizações são aplicadas a cópias locais dos itens de dados que são mantidos para a transação. Ao final da execução da transação, a fase de validação verifica se qualquer uma das atualizações da transação viola a serialização. Se a serialização não for violada, a transação é concluída; caso contrário, a transação é abortada e posteriormente reiniciada. Prof.: Ilka Kawashita [email protected] Banco de Dados Distribuídos Prof.: Ilka Kawashita [email protected] Banco de Dados Distribuído n n Tecnologias associadas: q Banco de Dados; q Redes de computadores. Sistema de computação distribuído: q C o n s i s t e em uma série de elementos de processamento, não necessariamente homogêneos, que são interligados por um sistema de rede de computadores e que cooperam na realização de determinadas tarefas específicas. q Repartem um problema grande e não gerenciável em partes menores e resolvem o mesmo de maneira eficiente e coordenada. Prof.: Ilka Kawashita [email protected] Banco de Dados Distribuído n Banco de Dados Distribuído (BDD): q n Uma coleção de vários bancos de dados logicamente inter-relacionados, distribuídos ao longo de um sistema de rede de computadores. Sistema de Gerência de Banco de Dados Distribuídos (SGBDD): q Um sistema de software que gerencia um banco de dados distribuído ao mesmo tempo tornando a distribuição transparente para o usuário. Prof.: Ilka Kawashita [email protected] Vantagens de BDD q Gerência de dados distribuídos com diferentes níveis de transparência: n n n q q q Transparência de distribuição ou de rede: libera o usuário dos detalhes sobre a rede. Transparência de replicação: cópias dos dados podem ser armazenadas em vários sites para aprimorar a disponibilidade, desempenho e confiabilidade. Transparência de fragmentação: o usuário não toma conhecimento da existência dos fragmentos horizontais (linhas) ou verticais (colunas). Confiabilidade e disponibilidade crescentes. Melhor desempenho. Expansão mais fácil. Prof.: Ilka Kawashita [email protected] Funções Adicionais de um SGBDD q q q q q n Controlar dados: fragmentação, replicação, etc. Gerenciamento de transações distribuídas. Recuperação de BDD. Segurança. Gerenciamento do catálogo distribuído. Projeto de Banco de Dados Distribuídos: q q q Fragmentação; Replicação; Alocação. Prof.: Ilka Kawashita [email protected] Fragmentação n Consiste na técnica de dividir o banco de dados em unidades lógicas chamadas fragmentos, que podem ser armazenados em sites diferentes. n Fragmentação de Banco de Dados: q q q Horizontal: um fragmento horizontal de uma relação é um subconjunto das tuplas dessa relação. Vertical: um fragmento vertical de uma relação mantém somente certos atributos da relação. Mista ou Híbrida: combinação dos dois tipos anteriores. Prof.: Ilka Kawashita [email protected] Banco de Dados Distribuído n Esquema de fragmentação: q n Consiste da definição de um conjunto de fragmentos que inclui todos os atributos e tuplas do banco de dados e satisfaz a condição de que todo o banco de dados pode ser reconstruído a partir dos fragmentos. Esquema de alocação: q Descreve a alocação dos fragmentos aos sites do SBDD; portanto, é um mapeamento que especifica para cada fragmento o site no qual será armazenado. Prof.: Ilka Kawashita [email protected] Replicação n Consiste em gerar cópias controladas das relações ou dos fragmentos. n Replicação de Banco de Dados: q q q Melhora a disponibilidade. Melhora desempenho. Desacelera operações de atualização. Prof.: Ilka Kawashita [email protected] Tipos de SBDD q q n Homogêneo ou Heterogêneo. Com ou sem autonomia local. SGBDD Federado: q q q Composto por vários SGBDs independentes e autônomos com seus usuários e transações. Não possui um esquema global. O esquema global é montado interativamente por parte da aplicação que o acessa. Prof.: Ilka Kawashita [email protected] Controle de Concorrência e Recuperação Várias cópias dos itens de dados; q Falhas de sites individuais; q Falhas nos links de comunicação; q Commit distribuído (protocolo de commit de duas fases); q Deadlock distribuído. q Prof.: Ilka Kawashita [email protected] Banco de Dados Distribuído n Controle de concorrência distribuída baseado em cópia distinta de um item de dado: q q q n Técnica do site primário (principal); Site primário (principal) com site de backup; Técnica da cópia primária ( principal). Controle de concorrência distribuída baseado em Votação. Prof.: Ilka Kawashita [email protected] Técnica do site primário (principal) q q q q q q q q Todas as cópias distintas dos itens de dados são mantidas no mesmo site; Um único site é designado coordenador; Todos os bloqueios são mantidos neste site; Todas as solicitações de bloqueio e desbloqueio são enviadas para este site; É uma extensão do bloqueio centralizado; Causa sobrecarga do site; Falha do site primário paralisa o sistema; Uma vez que uma transação obtenha um bloqueio em um item de dado no site primário, ela pode acessar qualquer cópia desse item de dado. Prof.: Ilka Kawashita [email protected] Site primário (principal) com site de backup q q q q Caso anterior com um site de backup; As informações de bloqueio são mantidas nos dois sites (primário e backup); O site de backup assume no caso de falha do site primário e um novo site de backup é escolhido; Desacelera o processo de aquisição de bloqueio. Prof.: Ilka Kawashita [email protected] Técnica da Cópia Primária (principal) q q q Distribui a carga da coordenação de bloqueio entre vários sites, fazendo com que cópias distintas de diferentes itens de dados sejam armazenados em sites diferentes. Falhas em um site afetam quaisquer transações que estejam acessando bloqueios em itens cujas cópias primárias residam naquele site, mas outras transações não são afetadas; Esta método também pode utilizar sites de backup para melhorar a disponibilidade. Prof.: Ilka Kawashita [email protected] Controle de Concorrência Distribuída baseado em Votação q q q q q q Não existe uma cópia distinta como nos casos anteriores; Uma solicitação de bloqueio é enviada para todos os sites que possuem uma cópia do item de dado; Cada cópia mantém seu próprio bloqueio e pode conceder ou negar o pedido; Se uma transação tem o bloqueio concedido pela maioria das cópias, ela segura o bloqueio e informa a todas as cópias que teve o bloqueio concedido; Caso contrário ela informa o cancelamento da requisição; É um método verdadeiramente distribuído. Prof.: Ilka Kawashita [email protected] Recuperação Distribuída n Em alguns casos, é bastante difícil determinar se um site está fora do ar, sem trocar inúmeras mensagens com outros sites. Por exemplo, suponha que um site X envie a mensagem para o site Y e não recebe uma resposta: q q q A mensagem não foi enviada a Y devido a uma falha de comunicação; O site Y está fora do ar e não pode responder; O site Y está no ar e enviou uma resposta, mas a resposta não foi entregue. Prof.: Ilka Kawashita [email protected] Commit em Duas Fases (2PC) n Um mecanismo de commit em duas fases garante que todos os servidores de banco de dados que participam de uma transação distribuída tenham o commit ou rollback da transação. Prof.: Ilka Kawashita [email protected] Commit em Duas Fases (2PC) n n n Algoritmo que garante a consistência da terminação da transação: Atomic Commitment Protocol (ACP). 1ª Fase: todos os nós participantes da transação sinalizam ao coordenador que sua parte da transação foi realizada. O coordenador envia uma mensagem preparar para commit . Cada nó fará uma gravação forçada em disco de todos os registros de log e informações necessárias para recuperação local, e em seguida envia um sinal OK ao coordenador, caso contrário envia um sinal não OK . Na falta de uma resposta o coordenador considera o nó não OK . 2ª Fase: se todos os nós respondem OK e o voto do coordenador também for OK , a transação foi bem sucedida e o coordenador envia um sinal commit para os nós, caso contrário, a transação falhou e o coordenador envia uma mensagem para rollback . Neste caso a transação será desfeita utilizando-se os arquivos de log. Prof.: Ilka Kawashita [email protected] Commit em Duas Fases (2PC) Prof.: Ilka Kawashita [email protected] Commit em Três Fases (3PC) n n n 1ª Fase: o coordenador envia uma mensagem canCommit para os nós e passa para o estado waiting . Os nós respondem com OK ou não OK . 2ª Fase: se o coordenador receber alguma mensagem não OK a transação é abortada e manda a mensagem abort para os nós que passam para o estado abort . Caso contrário o coordenador envia a mensagem preCommit para os nós e estes passam para o estado prepared . 3ª Fase: o coordenador recebe o OK de todos os nós e todos passam para o estado commit , caso contrário aborta a transação. Prof.: Ilka Kawashita [email protected] Commit em Três Fases (3PC) Prof.: Ilka Kawashita [email protected]