Baixe o app para aproveitar ainda mais
Prévia do material em texto
ESTUDO DE ALGORITMOS E TÉCNICAS DE REPLICAÇÃO DE BANCO DE DADOS EM SOFTWARE LIVRE Daniel Afonso Heisler Lajeado, junho de 2008 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) CENTRO UNIVERSITÁRIO UNIVATES CURSO DE ENGENHARIA DA COMPUTAÇÃO ESTUDO DE ALGORITMOS E TÉCNICAS DE REPLICAÇÃO DE BANCO DE DADOS EM SOFTWARE LIVRE Daniel Afonso Heisler Trabalho de Conclusão de Curso – Etapa II, apresentado ao Curso de Engenharia da Computação, do Centro Universitário UNIVATES, para a obtenção do título de Engenheiro de Computação. Orientador: Maglan Cristiano Diemer Lajeado, julho de 2008 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) Dedico este trabalho aos meus pais que me deram a educação para que eu conseguisse fazer minhas escolhas com sabedoria. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) AGRADECIMENTOS Agradeço a Deus pela minha vida e toda a saúde para chegar até aqui; agradeço a meus pais, à minha namorada, aos meu irmãos por todo o apoio e amor necessário para chegar até aqui; agradeço a meus amigos e colegas de aula pela ajuda e compreensão necessária; agradeço aos mestres por todos seus ensinamentos e companheirismo; agradeço ao meu orientador por todo o apoio e incentivo para conseguir elaborar este trabalho. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) Quem quer fazer alguma coisa encontra um meio. Quem não quer fazer nada encontra uma desculpa. Roberto Shinyashiki B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) RESUMO A tecnologia de sistemas de bancos de dados distribuídos é a união de duas abordagens para processamento de dados: as tecnologias de sistemas de bancos de dados e de redes de computadores. Existem diversas técnicas para que seja possível a distribuição de bancos de dados, uma delas é a replicação. Este trabalho visa estudar os diferentes algoritmos e as técnicas de replicação para banco de dados em software livre. PALAVRASCHAVE: Banco de dados distribuídos. Replicação. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) ABSTRACT The tecnology of distributed database systems is a union of two approaches to processing data: the tecnology of databases systems and computer networks. There are several techniques in order to the database distribution, one of them is a replication. This paper aims to study the various algorithms and techniques of database replication in free softwares. KEYWORDS: Distributed database. Replication. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) LISTA DE FIGURAS FIGURA 1 Rede de computadores.......................................................................35 FIGURA 2 Modelo relacional................................................................................42 FIGURA 3 Arquitetura cliente/servidor de referência...........................................47 FIGURA 4 Arquitetura de banco de dados distribuído de referência...................48 FIGURA 5 Arquitetura de SVBD com um ECG....................................................49 FIGURA 6 Exemplo do modelo de replicação singlemaster...............................56 FIGURA 7 Exemplo do modelo de replicação multimaster.................................57 FIGURA 8 Exemplo de replicação utilizando a ferramenta DBLink com Triggers .................................................................................................................................66 FIGURA 9 Exemplo de servidores de banco de dados utilizando a ferramenta PgCluster para replicação.......................................................................................69 FIGURA 10 Exemplo de servidores com replicação de de banco de dados cascateada utilizando a ferramenta SlonyI............................................................70 FIGURA 11 Exemplo de disposição dos computadores na rede do laboratório..74 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 8 FIGURA 12 Definição da estrutura do cenário 1..................................................76 FIGURA 13 Definição da estrutura do cenário 2..................................................77 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) LISTA DE GRÁFICOS GRÁFICO 1 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves as alterações da base de dados, geradas por 1 cliente, durante aproximadamente 10 minutos...............................85 GRÁFICO 2 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 5 clientes, durante aproximadamente 10 minutos..............................87 GRÁFICO 3 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 10 clientes, durante aproximadamente 10 minutos............................88 GRÁFICO 4 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 20 clientes, durante aproximadamente 10 minutos............................90 GRÁFICO 5 Dados coletados na replicação entre os três servidores, durante 10 minutos, onde suas bases de dados foram acessadas por apenas 1 cliente........94 GRÁFICO 6 Dados coletados na replicação entre os três servidores, durante 10 minutos, onde suas bases de dados foram acessadas por apenas 5 clientes......94 GRÁFICO 7 Dados coletados na replicação entre os três servidores, durante 10 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 10 minutos, onde suas bases de dados foram acessadas por apenas 10 clientes....95 GRÁFICO 8 Dados coletados na replicação entre os três servidores durante 10 minutos onde suas bases de dados era acessadas por apenas 20 clientes.........96 GRÁFICO 9 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves de forma assíncrona a cada 5, 10 e 20 minutos, as alterações da base de dados geradas por 1 cliente, durante aproximadamente 41 minutos.................................................................................99 GRÁFICO 10 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves de forma assíncrona a cada 5, 10 e 20 minutos, as alterações da base de dados geradas por 5 clientes, durante aproximadamente 41 minutos...............................................................................101 GRÁFICO 11 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, de forma assíncrona, a cada 5, 10 e 20 minutos, as alterações da base de dados geradas por 10 clientes, durante aproximadamente 41 minutos...............................................................................102 GRÁFICO 12 Dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, de forma assíncrona, a cada 5, 10 e 20 minutos, as alterações da base de dados geradas por 20 clientes, durante aproximadamente41 minutos...............................................................................103 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) LISTA DE QUADROS QUADRO 1 Avaliação dos SGBDs.......................................................................34 QUADRO 2 Características do uso de dblink e triggers.......................................65 QUADRO 3 Características da ferramenta PgCluster..........................................68 QUADRO 4 Características da ferramenta SlonyI..............................................72 QUADRO 5 Características dos computadores utilizados nos testes.................74 QUADRO 6 Médias dos dados, coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 1 cliente....................................................................................85 QUADRO 7 Médias dos dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 5 clientes..................................................................................86 QUADRO 8 Médias dos dados coletados, das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 10 clientes................................................................................88 QUADRO 9 Médias dos dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 12 dados geradas por 20 clientes................................................................................89 QUADRO 10 Médias das replicações coletadas nas simulações do cenário 2...96 QUADRO 11 Médias dos dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves as alterações da base de dados geradas por 1 cliente, no intervalo de tempo de 5, 10 e 20 minutos...........99 QUADRO 12 Médias dos dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves as alterações da base de dados geradas por 5 clientes, no intervalo de tempo de 5, 10 e 20 minutos.......100 QUADRO 13 Médias dos dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 10 clientes, no intervalo de tempo de 5, 10 e 20 minutos.....102 QUADRO 14 Médias dos dados coletados das ferramentas replicadoras, com 1 servidor master replicando para 2 servidores slaves, as alterações da base de dados geradas por 20 clientes, no intervalo de tempo de 5, 10 e 20 minutos.....103 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) LISTA DE ABREVIATURAS E SIGLAS ACID Atomicidade, Consistência, Isolamento e Durabilidade. Bps – bits por segundo. DCL – Data Control Language (Linguagem de Controle de Dados) DDL – Data Definition Language (Linguagem de Definição de Dados) DML – Data Manipulation Language (Linguagem de Manipulação de Dados) DQL – Data Query Language (Linguagem de Consulta de Dados) ECG – Esquema conceitual global EEC Error Correction Code (Código de Correção de Erros) EIL Esquema Interno Local Kbps – Kilobits por segundo KBps – Kilobytes por segundo LAN – Local Area Network (Rede Local) MANs – Metropolitan Area Networks (Redes metropolitanas) Mbps – Megabits por segundo MBps – Megabytes por segundo QBE – Que é uma aplicação visual do cálculo de domínios QUEL – Uma antiga linguagem de consulta para banco de dados relacionais. É uma linguagem antecessora ao SQL SGBD Sistema Gerenciador de Banco de Dados B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 14 SQL – Structured Query Language (Linguagem de Consulta Estruturada) SVBD – Sistemas de vários bancos de dados WAN – Wide Area Network (Rede que abrange grandes áreas) XML – EXtensible Markup Language (Linguagem de marcação estendida) B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) LISTA DE EXEMPLOS EXEMPLO 1 Consulta SQL..................................................................................42 EXEMPLO 2 Exemplo hipotético de instruções SQL para replicação síncrona. .54 EXEMPLO 3 Exemplo hipotético de instruções SQL para replicação assíncrona .................................................................................................................................55 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) SUMÁRIO 1 INTRODUÇÃO.....................................................................................................20 2 FUNDAMENTAÇÃO TEÓRICA..........................................................................23 2.1 SGBD................................................................................................................24 2.1.1 Modelo de dados............................................................................................24 2.1.1.1 Modelos lógicos com base em objetos.......................................................25 2.1.1.2 Modelos lógicos com base em registros.....................................................25 2.1.1.3 Modelos físicos...........................................................................................25 2.1.2 Segurança e integridade................................................................................26 2.1.3 Recuperação e concorrência.........................................................................27 2.1.4 Linguagem de banco de dados......................................................................28 2.1.4.1 Álgebra relacional.......................................................................................28 2.1.4.2 Cálculo relacional........................................................................................29 2.1.4.3 SQL.............................................................................................................30 2.1.5 SGBDs em software livre...............................................................................32 2.2 Redes de computadores...................................................................................34 2.2.1 Escala das redes............................................................................................36 2.3 Sistema de banco de dados distribuídos..........................................................37 2.3.1 Sistemas distribuídos.....................................................................................37 2.3.2 Banco de dados distribuídos..........................................................................41 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 17 2.3.3 Transparência e formas de distribuição.........................................................42 2.3.3.1 Fragmentação de dados.............................................................................43 2.3.3.2 Replicação de dados...................................................................................44 2.3.3.3 Transparência.............................................................................................44 2.3.4 Arquitetura de SGBDDs.................................................................................46 2.3.4.1 Sistemas cliente/servidor............................................................................46 2.3.4.2 Sistemas distribuídos nãohierárquicos......................................................482.3.4.3 Arquitetura de SVBDs.................................................................................49 2.3.5 Tolerância a falhas.........................................................................................49 2.3.5.1 Dependabilidade.........................................................................................50 2.3.5.2 Tipos de falhas............................................................................................51 2.3.5.3 Mascarando falhas com redundância.........................................................51 2.4 Replicação.........................................................................................................53 2.4.1 Tipos de replicação........................................................................................53 2.4.1.1 Síncrona......................................................................................................53 2.4.1.2 Assíncrona..................................................................................................54 2.4.2 Modelos de replicação...................................................................................55 2.4.2.1 Singlemaster ou masterslave...................................................................55 2.4.2.2 Multimaster.................................................................................................56 2.4.3 Protocolo de controle de réplica....................................................................57 2.4.3.1 PrimaryCopy Method ................................................................................57 2.4.3.2 QuorumConsensus Method ......................................................................58 2.4.3.3 AvailableCopies Method ...........................................................................58 2.4.4 Métodos de replicação...................................................................................59 2.4.4.1 Arquivos de registros (logs)........................................................................59 2.4.4.2 Triggers.......................................................................................................60 2.4.5 Modelo de transações distribuídas................................................................60 2.4.5.1 Protocolo de efetivação em duas fases – 2PC...........................................61 2.4.5.2 Protocolo de efetivação em três fases – 3PC.............................................62 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 18 3 FERRAMENTAS UTILIZADAS...........................................................................63 3.1 DBLink e triggers...............................................................................................64 3.2 PgCluster...........................................................................................................67 3.3 SlonyI...............................................................................................................70 4 AVALIAÇÃO DAS FERRAMENTAS..................................................................73 4.1 Cenários............................................................................................................73 4.1.1 Cenário 1 – masterslave...............................................................................75 4.1.2 Cenário 2 – multimaster................................................................................76 4.2 Bases de dados................................................................................................78 4.3 Metodologia.......................................................................................................78 5 RESULTADOS OBTIDOS...................................................................................82 5.1 Replicação síncrona..........................................................................................82 5.1.1 Cenário 1 masterslave................................................................................83 5.1.1.1 Acesso à base de dados por um cliente.....................................................83 5.1.1.2 Acesso à base de dados por cinco clientes................................................85 5.1.1.3 Acesso à base de dados por dez clientes..................................................87 5.1.1.4 Acesso à base de dados por vinte clientes................................................88 5.1.1.5 Conclusões sobre o cenário 1 masterslave............................................90 5.1.2 Cenário 2 multimaster.................................................................................92 5.1.2.1 Acesso à base de dados por um cliente.....................................................93 5.1.2.2 Acesso à base de dados por cinco clientes................................................94 5.1.2.3 Acesso à base de dados por dez clientes..................................................95 5.1.2.4 Acesso à base de dados por vinte clientes................................................95 5.1.2.5 Conclusões sobre o cenário 2 – multimaster............................................96 5.2 Replicação assíncrona......................................................................................97 5.2.1 Cenário 1 masterslave................................................................................97 5.2.1.1 Acesso à base de dados por um cliente.....................................................98 5.2.1.2 Acesso à base de dados por cinco clientes..............................................100 5.2.1.3 Acesso à base de dados por dez clientes................................................101 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 19 5.2.1.4 Acesso à base de dados por vinte clientes..............................................102 5.2.1.5 Conclusões sobre o cenário 1 masterslave..........................................104 5.2.2 Cenário 2 multimaster...............................................................................105 6 CONCLUSÃO....................................................................................................106 REFERÊNCIAS.....................................................................................................108 GLOSSÁRIO.........................................................................................................111 APÊNDICES.........................................................................................................113 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 1 INTRODUÇÃO Num ambiente de negócios não há tempo para atrasos, pois a perda de tempo, resulta em perda de oportunidades. Os dados são a base crítica para todas as organizações, porque é através da consulta dos mesmos que são tomadas as decisões. Sendo assim, é extremamente necessário que os dados estejam sempre disponíveis no local e velocidade desejados. Através dos sistemas gerenciadores de banco de dados (SGBDs), é possível armazenar os mesmos em banco de dados. A grande vantagem na utilização de SGBDs está justamente na abstração dos dados, isto é, na possibilidade de visualizar somente aquilo que é necessário para tomar uma decisão. Enquanto que a distribuição dos bancos de dados permite que os mesmos sejam acessados com maior velocidade e com um menor risco de indisponibilidade. A maior velocidade está relacionada diretamente com a possibilidade de distribuir os bancos de dados em diferents computadores e como conseqüência também distribuir a carga de processamento entre os mesmos. O menor risco de indisponibilidade através da utilização da distribuição dos bancos de dados está relacionado com a quantidade de cópias idênticas dos mesmos (Silberschatz,1999). B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 21 Segundo Özsu (2001), a tecnologia de sistemas de bancos de dados distribuídos (SBDDs) é a união de duas abordagens para processamento de dados: as tecnologias de sistemas de bancos de dados e a de redes de computadores. Existem diversas técnicas que possibilitam a distribuição de bancos de dados, sendo que uma delas é a replicação. Os dois principais motivos para fazer uma replicação são: a confiabilidade e a performance. No caso da confiabilidade, existe a garantia de se ter sempre um backup (cópia de segurança) em tempo real e, por conseqüência, alta disponibilidade do sistema. Já a performance, é importante quando existem muitos acessos aos dados num mesmo intervalo de tempo, ou quando os acessos são de lugares espalhados geograficamente, pois dessa forma é possível balancear a carga de acessos através de paralelismo (Tanenbaum, 2002; Silberschatz, 1999). O próprio Google, o site de busca mais popular do mundo, especulase que utiliza algumas centenas de milhares de computadores comuns, que rodam Linux Red Hat com o Kernel modificado e fazem replicação de banco de dados. Pois, com quantidade tão grande de computadores, é muito provável que periodicamente ocorram falhas nos equipamentos. Contudo, usando replicação e redundância, mesmo tendo múltiplas falhas, têmse sempre alta disponibilidade (Gedda, 2006). O objetivo desse trabalho é fazer um estudo dos algoritmos e das técnicas de replicação de banco de dados, ou seja, estudar as possíveis formas de replicação de banco de dados e, conseguir, através de métricas, fazer a análise de alguns casos práticos de replicação. Assim, a seção 2 apresenta um levantamento bibliográfico feito através de livros, revistas, trabalhos e artigos científicos sobre assuntos pertinentes ao tema do mesmo. São apresentados B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 22 vários conceitos relacionados a SGDBs, sistemas distribuídos e replicação, formando assim, a fundamentação teórica do trabalho. Já a seção 3 do trabalho, apresenta as ferramentas replicadoras utilizadas nesse estudo. Nessa seção são descritas suas características, classificandoas conforme a fundamentação teórica vista na seção anterior. A seção 4, descreve a metodologia adotada para fazer os testes e a avaliação das diferentes técnicas, ferramentas e algoritmos, de replicação de dados. Os resultados obtidos a partir dessas testes, são exibidos na seção 5. Finalizando, são apresentadas as conclusões deste trabalho, contribuições do mesmo e sugestões de trabalhos futuros. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 2 FUNDAMENTAÇÃO TEÓRICA Esta seção apresenta a fundamentação teórica necessária para o desenvolvimento deste trabalho. A mesma é dividida em quatro subseções que abordam os assuntos: SGBDs, redes de computadores, SGBDs distribuídos e replicação. Na subseção 2.1, são abordadas algumas características dos SGBDs, como: integridade, segurança, transações, modelos de dados e linguagens para manipulação de banco de dados. Além disso, também há um comparativo de SGBDs livres para definição de qual deles será utilizado no desenvolvimento do trabalho. Essas abordagens estudadas são fundamentais, pois na utilização de replicação, além das diferentes técnicas, as características dos SGBDs também influenciam no desempenho e na forma com que esses dados são replicados. A subseção 2.2 traz definições e características de redes de computadores, comunicação dos dados e as diferentes escalas de rede. Como já introduzido, a distribuição de banco de dados é a união de duas abordagens: redes de computadores e SGBDs. Assim, os conceitos definidos nesta subseção são importantes, pois para cada modelo ou escala de rede, existem técnicas de replicação que podem ou não ser aplicadas com ou sem a performance desejada. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 24 As subseções 2.3 e 2.4 detalham os conceitos de distribuição e replicação de banco de dados. Apresentam desde as características necessárias para alcançar a distribuição, até as diferentes técnicas existentes para fazer uma replicação. 2.1 SGBD De acordo com Sisberschatz (1999), um SGBD é constituído por dados e programas que permitem seu acesso e sua manipulação. Sua principal finalidade é permitir o armazenamento de dados de forma segura, íntegra e que a recuperação dos mesmos possa ser feita de forma eficiente. Também é tarefa dos sistemas gerenciadores de banco de dados, permitirem a criação de estruturas para seu armazenamento, assim como, a gerência ao seu acesso, de forma que, somente consigam acessálos quem tiver a devida autorização. O conjunto de dados de uma estrutura de um sistema gerenciador de banco de dados, normalmente é chamada de banco de dados. 2.1.1 Modelo de dados Silberschatz (1999), diz que sobre a estrutura de um banco de dados está definido um modelo de dados, isto é, um conjunto de regras que definem a semântica, o relacionamento e a consistência dos mesmos. Esse modelo é classificado em três grupos: lógicos com base em objetos, lógicos com base em registros e físicos. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 25 2.1.1.1 Modelos lógicos com base em objetos Modelos lógicos com base em objetos são modelos amplamente utilizados e, inclusive alguns, ainda estão por surgir. Utilizados na descrição de dados no nível lógico e de visões, possuem recursos de estruturação bem flexíveis, além de viabilizarem a especificação explícita de restrições. Segundo Silberschatz (1999), existem diversos modelos lógicos com base em objetos. Dentre os amplamente conhecidos, destacamse o entidaderelacionamento e o orientado a objetos. 2.1.1.2 Modelos lógicos com base em registros Modelos lógicos com base em registros são utilizados para descrever os dados no nível lógico e de visão. Ao contrário do modelo lógico com base em objetos, esse especifica a estrutura lógica do banco de dados quanto a implementação de descrições de alto nível. Esses modelos são assim chamados por possuírem a estrutura do banco de dados em registros de formato fixo de todos os tipos. Cada registro define um número fixo de campos, e cada campo possui normalmente tamanho fixo. Os modelos de dados com base em registros mais utilizados, normalmente são: modelo relacional, modelo de rede e modelo hierárquico (Silberschatz, 1999). 2.1.1.3 Modelos físicos Os modelos físicos de dados são usados para descrever os dados num nível mais baixo. Ao contrário dos modelos lógicos, existem poucos modelos físicos de dados ainda em uso. Os dois mais conhecidos são o modelo unificado B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 26 (unifying model) e o modelo de partição de memória (framememory model) (Silberschatz, 1999). 2.1.2 Segurança e integridade Em banco de dados, é muito comum o uso dos termos segurança e integridade dos dados. Embora os dois conceitos sejam bem distintos, em ambos os casos, o sistema precisa estar ciente daquilo queo usuário não pode violar. De forma geral, a segurança garante que os usuários tenham permissão de fazer o que estiverem tentando fazer, enquanto a integridade garante que aquilo que os usuários estão tentando fazer, está correto (Date, 1990). A segurança dos dados inclui dois aspectos: a proteção dos dados e o controle de autorização. A proteção dos dados é necessária para evitar que usuários não autorizados conheçam o conteúdo físico dos mesmos e o principal meio para conseguir isso é a criptografia. Já o controle de autorização deve garantir que os usuários executem no banco de dados, apenas operações a que eles têm permissão. Diferentemente do controle de autorização dos sistemas operacionais, os SGBDs possibilitam que as autorizações possam ser redefinidas, para que usuários diferentes tenham direitos diferentes sobre os mesmos objetos. Isso possibilita uma maior precisão no controle de autorização dos usuários perante os objetos do banco de dados. Manter um banco de dados consistente requer diversos mecanismos como controle de concorrência, confiabilidade, proteção e controle de integridade semântica. Este último, é um conjunto de restrições que, se satisfeitas, indicam que um banco de dados está consistente. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 27 Existem dois tipos principais de restrições de integridade: restrições estruturais e restrições comportamentais. As restrições estruturais expressam propriedades semânticas básicas inerentes a um modelo. Como exemplo, num modelo relacional, podese citar as restrições de chave exclusiva. Já as restrições comportamentais permitem captar a semântica dos aplicativos, podendo expressar as associações entre objetos, assim como, a dependência da inclusão num modelo relacional (Özsu, 2001). 2.1.3 Recuperação e concorrência Os problemas de concorrência e recuperação em banco de dados estão fortemente ligados ao processamento de transações. Uma transação é uma única unidade de trabalho lógica. A integridade de uma transação depende de 4 propriedades conhecidas como ACID (atomicidade, consistência, isolamento e durabilidade) (Date, 1990). Por exemplo, a transferência do valor de uma conta bancária A para uma conta bancária B, implica em debitar o valor de A e creditar o mesmo valor em B. O primeiro princípio é que, de forma alguma, o valor deve ser debitado de A se não for creditado em B, isto é, ou a operação é executada como um todo, ou não é executada. Este “tudo ou nada” é chamado de atomicidade. Além disso, o somatório, após a transferência das contas A e B, deve ser o mesmo que era antes da transferência. Essa exigência é conhecida como consistência. Se duas transferências estiverem ocorrendo ao mesmo tempo, uma não deve interferir na outra. Esta propriedade é conhecida como isolamento. Por fim, após a efetivação da transferência, os novos valores de A e B devem persistir, a despeito das possibilidades de falhas do sistema. Esta persistência é chamada de durabilidade. Dessa forma, cada transação é uma unidade de ACID que não pode violar as regras de consistência de um banco de dados (Silberschatz, 1999). B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 28 Silberschatz (1999), segue afirmando que devido ao grande número de possibilidades de falhas de um banco de dados durante a execução de uma transação, uma transação pode não se completar com sucesso. Garantindo a atomicidade do banco de dados, uma transação incompleta não poderá comprometer o estado do banco de dados e dessa forma, o banco de dados deverá retornar ao estado anterior ao da transação. Essa responsabilidade de detectar eventuais falhas e de retornar ao estado anterior é responsabilidade do SGBD. Por fim, Silberschatz (1999) conclui que quando existem várias transações num banco de dados sendo executadas ao mesmo tempo, é possível que algumas delas violem as regras de consistência do banco de dados. Isso pode ocorrer, mesmo que as transações individualmente sejam executadas de forma correta. Essa responsabilidade de gerenciar as transações concorrentes também pertence ao SGBD. 2.1.4 Linguagem de banco de dados As linguagens para manipulação de dados em banco de dados relacionais, entram em dois grupos fundamentais: As baseadas na álgebra relacional e as baseadas em cálculo relacional (Özsu, 2001). 2.1.4.1 Álgebra relacional A álgebra relacional é uma linguagem de consulta procedural formada por um conjunto de operadores que operam sobre as relações. É derivada da teoria dos conjuntos e é mais utilizada que o cálculo relacional. Cada operador toma B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 29 uma ou duas relações como operandos, produzindo uma nova relação resultante (Silberschatz, 1999). Segundo Özsu (2001), os operadores fundamentais da álgebra relacional são: seleção, projeção, união, diferença de conjuntos e produto cartesiano. Além desses operadores fundamentais, ainda existem outros operadores adicionais, formados a partir dos fundamentais, que são: interseção, junção Ɵ (theta), junção natural, semijunção e quociente. Na prática, a álgebra relacional é estendida com operadores, para agrupar ou classificar os resultados, e para executar as funções aritméticas de agregado. Outros operadores, como os de junção externa e fechamento transitivo, também são utilizados algumas vezes para proporcionar funcionalidades adicionais. Uma das linguagens mais utilizadas entre as que seguem as definições da álgebra relacional é a linguagem SQL1. Embora alguns autores definam essa linguagem como um ponto entre a álgebra relacional e ao cálculo relacional de tuplas, seus criadores a definem como linguagem de mapeamento. 2.1.4.2 Cálculo relacional Nas linguagens de cálculo relacional, ao invés de especificar como obter um resultado, especificase o que é o resultado. Um banco de dados pode ser visto como uma coleção de tuplas ou de domínios, dessa forma existem dois grupos sob os quais cai o cálculo relacional: cálculo relacional de tuplas e cálculo relacional de domínios. A diferença entre os dois está basicamente sob a variável primitiva da consulta (Özsu, 2001). 1 Structured Query Language ou Linguagem de Consulta Estruturada, é a linguagem para manipulação de banco de dados mais utilizada. Fonte: Silberschatz (1999). B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 30 Em álgebra relacional, as consultas são escritas sob forma de uma seqüência de procedimentos. Já no cálculo relacional de tuplas é uma linguagem nãoprocedural. Ela permite a descrição da consulta desejada sem especificar os procedimentos para obter essas informações. Há várias linguagens baseadas em cálculo relacional de tuplas, sendo as mais populares SQL e QUEL (Silberschatz, 1999; Özsu, 2001). O cálculo relacional de domínios utiliza variáveis de domínio, que tomam valores do domínio de um atributo, em vez de valores da tupla inteira. Em outras palavras, o intervalo de uma variável de domínios consiste nos domínios sobre os quais a relação é definida. Mesmo assim, o cálculo relacional de domínios está intimamente ligado ao cálculo relacional de tuplas. O sucesso desta linguagem devese principalmente à QBE, que é uma aplicação visual do cálculo de domínios (Özsu, 2001). 2.1.4.3 SQL A SQL – Struct Query Language, é a linguagemde banco de dados que surgiu no início dos anos 70 e hoje, é a linguagem de banco de dados mais utilizada. Ela utiliza uma combinação de construtores em álgebra e cálculo relacional e, dessa forma, é bastante fácil sua utilização. Embora conhecida como uma linguagem de consulta, ela possui vários outros recursos (Silberschatz, 1999). A SQL é uma sublinguagem do SGBD. Possui tanto uma linguagem para definição de dados (DDL – data definition language), como uma linguagem para manipulação de dados (DML – data manipulation language) e uma linguagem para consulta de dados (DQL – data query language). Além disso possui recursos especiais de controle de dados que não se enquandram nem na DDL, nem na B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 31 DML. Alguns autores chamam esses recursos de linguagem de controle de dados (DCL – data control language) (Date, 1990). Segundo Silberschatz (1999), a linguagem SQL pode ser dividida em diversas partes: Linguagem de definição de dados: possui comandos para criação, alteração e exclusão de esquemas de relações, bem como a manipulação de índices. Linguagem interativa de manipulação de dados: é a linguagem baseada na álgebra relacional e no cálculo relacional para criar consultas. Também engloba comando para inserção, alteração e exclusão de tuplas no banco de dados. Incorporação DML: é a forma de comandos SQL incorporados para permitir o uso de outras linguagens de uso geral como o C, PL/I, Cobol etc. Definição de visões: comandos para definição de visões, isto é, relações simbólicas criadas a partir de consultas. Autorização: comandos para especificação de direitos ou restrições de acesso e manipulação dos dados de relações e visões. Integridade: comandos para especificação de regras de integridade, que os dados que serão armazenados no banco de dados deverão satisfazer. Controle de transações: comandos para a especificação de inicialização e finalização de transações. Algumas implementações também permitem explicitar o bloqueio de dados para controle de concorrência. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 32 O SQL foi revisto em 1992 e a esta versão foi dado o nome de SQL92. Foi revisto novamente em 1999 e 2003 para se tornar SQL:1999 e SQL:2003, respectivamente. O SQL:1999 utiliza expressões regulares de emparelhamento, queries recursivas e triggers. Também foi feita uma adição controversa de tipos nãoescalados e de algumas características de orientação a objetos. O SQL:2003 introduz características relacionadas ao XML, seqüências padronizadas e colunas com valores de autogeneralização (inclusive colunasidentidade) (ISO/IEC 9075, 2006). 2.1.5 SGBDs em software livre Atualmente existem diversos SGBDs, mas neste trabalho, optouse por utilizar um que seja software livre. Dentre os diversos motivos que levaram a essa escolha, o principal é a possibilidade de acessar o código fonte do mesmo, podendose assim fazer um estudo mais aprofundado e até mesmo alterações. Para decisão de qual banco de dados utilizar, foi realizada uma tabulação comparativa entre alguns dos SGBDs em software livre, onde avaliouse várias características técnicas dos mesmos. Os seguintes SGBDs foram avaliados: PostgreSQL: SGBDs objetorelacional, de código aberto. Optouse pela versão 8.2.6 disponível em http://www.postgresql.org. Firebird: SGBDs relacional, de código aberto. Optouse pela versão 2.0.3 disponível em http://www.firebirdsql.org . http://www.postgresql.org/ http://www.postgresql.org/ http://www.firebirdsql.org/ B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 33 MySQL: SGBDs relacional, de código aberto. Optouse pela versão 5.0.45 disponível em http://www.mysql.com. O QUADRO 1 mostra a avaliação baseada apenas nas documentações disponíveis nos respectivos sites, utilizando como referência a documentação da última versão estável dos SGBDs. O acesso aos sites para coleta das informações e para definição das versões dos SGBDs, foi realizado no dia 19/10/2007. PostgreSQL MySQL Firebird Sistema Operacional Linux/Unix + + + FreeBSD + + + Windows + + + Sun Solaris + + + Mac OS X + + + HP UX + + + Características ACID + * + Integridade referencial + * + Transações + * + Tabelas temporárias + * Materialize views * * * Stored Procedures + * + Cursores + + + Triggers + + + SQL92 + * + SQL:1999 + * * SQL:2003 * * * Funções de linguagens + * * Esquemas + Expressões regulares + + * Savepoints + * + Pointintime recovery + + * Efetivação em 2 fases + * ? http://www.mysql.com/ B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 34 PostgreSQL MySQL Firebird Efetivação em 3 fases ? ? ? Inserções múltiplas + + + Índices R/R+ tree + * Hash + * Expression + + Partial + Reverse * * Bitmap * GIST + GIN + Particionamento Range + * Hash + * Composite (Range + Hash) + * List + * Shadow ? ? + Replication API + + + Legenda: (+) : característica é suportada inteiramente () : característica não é implementada (*) : característica é implementada parcialmente ou não em conformidade com o padrão (?) : sem opinião clara sobre o suporte QUADRO 1 Avaliação dos SGBDs Fonte: Elaborado pelo autor com base em PostgreSQL (c19962008), MySQL (c19972008) e Firebird (c20002008). 2.2 Redes de computadores Segundo Özsu (2001), redes de computadores são uma coleção de computadores autônomos que conseguem trocar informação entre si. Nesta rede, estes computadores normalmente são chamados de hosts ou nós, e, para B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 35 conseguirem trocar informações entre si, deve existir algum meio de interconexão entre os mesmos. A FIGURA 1 faz essa ilustração. FIGURA 1 Rede de computadores Fonte: Elaborado pelo autor com base em (Özsu, 2001). [...]dados [são definidos] como entidades que carregam algum significado. Sinais são a codificação elétrica ou eletromagnética dos dados. Sinalizar é o ato de propagar o sinal ao longo de algum meio apropriado. Por fim, transmissão é a comunicação dos dados pela propagação e pelo processamento de sinais (Stallings, 1988 apud Özsu, 2001). Em uma rede de computadores, os equipamentos são conectados por links. Cada link pode transportar um ou mais canais. O link é uma entidade física, enquanto o canal é uma entidade lógica. Os canais de comunicação têm uma capacidade que pode ser definida como a quantidade de dados, que pode ser transmitida pelo canal em uma determinada unidade de tempo. Essa capacidade é chamada de largura de banda do canal e geralmente é medida em bits por segundo (bps) (Özsu, 2001). Switches hosts Subrede de comunicações B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 36 2.2.1 Escala das redes Segundo Özsu (2001), em termos de distribuição geográfica as redes são classificadas como: redes locais, metropolitanas e remotas. Uma rede remota (WAN – wide area network) é uma rede cuja distância entre dois nós quaisquer varia entre aproximadamente 20 quilômetros e milhares de quilômetros. Através de switches e/ou roteadores é possível a comunicação sobre áreas mais extensas, contudo, quanto maior a distância, maior a perdade desempenho. Uma rede local (LAN – local area network) geralmente possui limite geográfico inferior a 2 quilômetros. Dessa forma, proporciona comunicação de grande largura de banda sobre os meios de comunicação pouco dispendiosos. Os tipos de meios de transmissão empregadas em redes locais são geralmente cabos coaxiais, fios de pares trançados ou fibras ópticas. Uma rede metropolitana (MAN – metropolitan area network) está entre a LAN e WAN em escala e abrange uma cidade, ou parte dela. A distância entre os nós geralmente é de 10 quilômetros. As MANs têm semelhanças significativas com as LANs e, de certa forma, podem ser consideradas versões maiores dessas últimas. Porém, como nas MANs o número de usuários é maior, existem problemas de igualdade de acesso e desempenho, independente da localização física, que devem ser resolvidos. A escala de uma rede de computadores conceitualmente não define a largura de banda disponível. Parece lógico que quanto a menor distância, maior a largura de banda. Contudo, a largura de banda é definida principalmente pelo meio físico utilizado, que pode variar entre cabos coaxiais, cabos de fibra óptica, cabos de par trançados e até canais de satélite. Tipicamente, as redes LAN são B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 37 formadas por cabos coaxiais, par trançados ou de fibra óptica e são conhecidas como redes Ethernet, enquanto as redes WAN são formadas por cabos de fibra óptica e canais de satélite, sendo que o maior exemplo desse tipo de rede é a Internet (Silberschatz, 1999). Para fazer uma distribuição de banco de dados é necessário que antes seja avaliado a escala da rede, para saber qual a possível largura de banda disponível. A importância disso se dá justamente para saber qual tipo de replicação é apropriado para o meio de comunicação utilizado. 2.3 Sistema de banco de dados distribuídos Nas subseções 2.1 e 2.2 foram vistos, de forma isolada, alguns conceitos sobre SGBDs e redes de computadores. Esses conceitos são importantes para uma melhor compreensão da união dessas duas abordagens, isto é, dos sistemas gerenciadores de bancos de dados distribuídos (SGBDDs). Nesta seção serão estudados os aspectos relativo aos SGBDDs que introduzirão a subseção 2.4, que trata do estudo sobre replicações, principal objetivo deste trabalho. 2.3.1 Sistemas distribuídos Para Tel (2000), o termo “sistema distribuído” significa um conjunto autônomo de computadores, de processadores ou de processos interconectados. Estes computadores, processadores ou processos são conhecidos como nodos do sistema distribuído, e, precisam estar interconectados para possibilitar a troca e compartilhamento de informações. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 38 Já Date (1990), diz que este termo se refere a qualquer sistema que pode estar em várias localidades mas conectado através de uma rede de comunicação, de forma que, independente de onde, possa ser possível o acesso aos dados de qualquer localidade. Segundo Tel (2000), as características de um sistema distribuído dependem muito da motivação pela sua existência. A sua existência se dá na tentativa de resolver alguns problemas computacionais. Algumas dessas características são listados abaixo: ● Troca de informações: possibilidade de trocar informações entre diferentes computadores. ● Compartilhamento de recursos: possibilidade de compartilhar recursos do sistema, da mesma forma que são compartilhados periféricos como impressoras e unidades de disco. ● Confiabilidade: possibilidade de continuar operando um sistema mesmo que um host do sistema pare por algum motivo, ou seja, a garantia do “sempre funcionamento em tempo real”. ● Paralelismo: possibilidade de distribuir as tarefas do sistema que serão executadas em diversos processadores ou computadores. ● Flexibilidade na estrutura geográfica: possibilidade de ter o sistema distribuído em diversos locais geograficamente afastados. ● Transparência: possibilidade de adotar/seguir padrões em sistemas de forma que seja possível trocar informações com outros sistemas. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 39 Quando é criado/utilizado um sistema distribuído, deve ser levado em consideração o meio pela qual ocorre a ligação entre os nodos, pois existem diversos problemas que podem ocorrer em virtude dessas ligações. Contudo, os problemas dos algoritmos distribuídos geralmente são similares, independendo do tipo de rede. Assim, existem alguns aspectos ao qual os algoritmos distribuídos devem ficar atentos, continua Tel (2000): ● Confiabilidade: durante uma troca de informações entre nodos, alguma coisa pode dar errado e isso nunca pode ser ignorado. ● Tempo de comunicação: o tempo que leva a transmissão de informações para redes que não são locais é maior que em redes locais. Em redes não locais, o tempo de processamento da informação, muitas vezes, é insignificante comparado ao tempo de transmissão da mesma. ● Homogeneidade: possivelmente em uma rede local os protocolos de comunicação entre os nodos sejam os mesmos. Contudo, na comunicação em redes não locais, pode ser que não sejam os mesmos. Assim, deve ser prevista a comunicação em padrões diferentes. ● Confiança mútua: em redes locais todos os usuários podem ter acesso livre ao sistema. Contudo, redes não locais requerem o desenvolvimento de algoritmos com técnicas de segurança, cópias de segurança e livre de ataques de usuários. Além desses aspectos, no desenvolvimento de algoritmos distribuídos, que devem ser levados em consideração, existem ainda alguns problemas de redes que podem ocorrer e devem ser prevenidos. Há problemas comuns entre redes B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 40 LANs e WANs, mas há também os que são específicos de cada tipo de rede. Isso ocorre em virtude das características físicas e lógicas da rede (Tel, 2000). Alguns problemas comuns que precisam ser abordados/implementados por algoritmos distribuídos que ocorrem em redes WANs e LANs são: ● Confiabilidade na troca de dados: durante a transmissão entre dois nós podem ocorrer diversos problemas de conexão. Quantos mais caminhos as informações tiverem que percorrer, maior a probabilidade de que ocorram problemas. Contudo, as informações não podem ser perdidas nem podem chegar na ordem incorreta. ● Controle de tráfego: quanto mais mensagens forem transmitidas, maior será o congestionamento da rede. A geração de mensagens pelos nós deve levar em consideração a capacidade da rede. ● Prevenção de deadlock: como o tráfego de mensagens entre os nós pode ser grande e os nós possuem uma capacidade limite para armazenamento das mesmas, podem ocorrer problemas de uma mensagem esperar por outra, que está esperando por outra que pode depender da mensagem anterior. Dessa forma, o sistema não deve ficar esperando infinitamente. ● Segurança: fazse necessário um controle de abusos, principalmente em redes de computadores que estão ligadas à redes de computadores de proprietários diferentes. Além disso, os dados devem ser transmitidos com segurança, utilizandose de técnicas de criptografia e certificações digitais. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (htt p: //w w w .u ni va te s.b r/ bd u) 41 ● Sincronização: é necessário fazer a gerência da transmissão e do acesso das informações, de forma que as mesmas mantenhamse consistentes. ● Exclusão mútua: algumas vezes é necessário evitar que dois processos acessem o mesmo recurso ao mesmo tempo, recurso esse que é denominado seção crítica. 2.3.2 Banco de dados distribuídos Bancos de dados distribuídos são considerados uma coleção de vários bancos de dados logicamente interrelacionados, distribuídos em uma rede de computadores. Um sistema gerenciador de banco de dados distribuído (SGBDD) é um um software que gerencia os bancos de dados tornando a distribuição transparente para o usuário (Özsu, 2001). Segundo Silberschatz (1999), a principal diferença entre sistemas de bancos de dados centralizados e distribuídos é que no primeiro caso os dados estão localizados em apenas um local, enquanto que no segundo caso, os mesmos podem estar em vários locais. Algumas vezes a questão da distribuição geográfica dos dados não é vista como a questão mais relevante para bancos de dados distribuídos. Os seguidores desta visão, vêm como a questão mais importante o fato dos bancos serem inter relacionados, mesmo estando no mesmo local. Contudo, é muito importante levar em consideração a questão da distribuição física dos dados, pois isto pode levar a uma série de problemas com os quais os sistemas gerenciadores de banco de dados distribuídos devem estar preparados para lidar (Özsu, 2001). B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 42 2.3.3 Transparência e formas de distribuição Considere uma empresa de engenharia com negócios em Boston, Edmonton, Paris e São Francisco, exemplifica Özsu (2001), em cada um desses locais são desenvolvidos projetos e a empresa gostaria de manter os bancos de dados dos projetos e seus funcionários interrelacionados. Supondo um banco de dados relacional, as informações podem ser armazenadas em quatro entidades conforme ilustrado na FIGURA 2. Uma tabela FUNC para armazenar os funcionário, uma tabela PROJ para armazenar os projetos, uma tabela PAG para armazenar as informações de salários e uma última tabela DSG para armazenar quais funcionários foram designados a quais projetos. FIGURA 2 Modelo relacional Fonte: Elaborado pelo autor com base em (Özsu, 2001). Se o banco de dados estivesse centralizado e fosse necessário descobrir qual a relação dos funcionários que trabalharam em projetos por mais de 12 meses, poderia ser utilizada a consulta SQL do EXEMPLO 1 (Özsu 2001). SELECT func.fnome, pag.sal FROM func, dsg, pag WHERE dsg.dur > 12 AND func.fno = dsg.fno AND pag.cargo = func.cargo EXEMPLO 1 Consulta SQL Fonte: Elaborado pelo autor com base em (Özsu, 2001). FNO FNOME CARGO FUNC PNO PNOME PRCAMEN PROJ CARGO SAL PAG FNO PNO RESP DUR DSG B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 43 Contudo, segue Özsu (2001), dada a natureza distribuída da empresa, é preferível que essa consulta retorne em Edmonton somente os dados de Edmonton, ou seja, que os dados de Edmonton estejam armazenados somente em Edmonton. O mesmo se aplica para os outros escritórios. Desta forma, têmse um cenário onde os dados estão particionados e armazenados em locais diferentes. Isto é conhecido como fragmentação. Além disso, pode ser preferível duplicar alguns desses dados em outros locais por questões de desempenho e confiabilidade, resultando num banco de dados distribuído fragmentado e replicado. Uma das premissas de um banco de dados distribuído, é que o acesso às informações seja totalmente transparente, dessa forma, mesmo com os dados distribuídos, os usuários ainda poderiam executar a consulta SQL do EXEMPLO 1, da mesma forma, ficando a cargo do SGBDD a resolução das questões de fragmentação e replicação dos dados. 2.3.3.1 Fragmentação de dados Silberschatz (1999) explica a fragmentação como uma divisão dos dados em vários fragmentos, podendo estes, serem armazenados em locais físicos diferentes. O conceito de fragmentação de dados parte do princípio de que, se existe uma relação r que é fragmentada em r1, r2, ..., rn, esses fragmentos contêm informações suficientes para permitir a reconstrução da relação original r. Essa reconstrução pode ser feita por operações de união ou de um tipo especial de junção. Continua Silberschatz (1999) afirmando que, existem dois esquemas diferentes de fragmentação, e segue explicando os mesmos: B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 44 1) Fragmentação horizontal: a relação r é particionada em um número de subconjuntos r1, r2, ..., rn. Cada tupla da relação r deve pertencer a pelo menos um fragmento, de forma que a relação original principal possa ser reconstruída. Um desses fragmentos pode ser definido como uma seleção sobre a relação r. A reconstrução da relação r pode ser feita pela união de todos os fragmentos. 2) Fragmentação vertical: em sua forma mais simples a fragmentação vertical é como uma decomposição. Essa fragmentação de r(R) implica na definição de vários subconjuntos de atributos R1, R2, ..., Rn do esquema R. A fragmentação deve ser feita de tal forma que possamos reconstruir a relação r, a partir dos fragmentos, por meio de uma junção natural. 2.3.3.2 Replicação de dados Como o principal objetivo deste trabalho é o estudo de técnicas e algoritmos de replicação, esse assunto será aprofundado na subseção 2.4. 2.3.3.3 Transparência Para Özsu (2001), em bancos de dados centralizados, o único recurso que precisa ser isolado dos usuários são os dados. Já em bancos de dados distribuídos, existe um segundo recurso que precisa ser tratado da mesma forma: a rede. Assim, o usuário não deveria perceber diferenças entre trabalhar com bancos de dados distribuídos ou centralizados. Este isolamento é conhecido como transparência de rede. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 45 Outra transparência que deve existir em bancos de dados distribuídos é a independência dos dados. Essa independência é uma forma fundamental de transparência que procurase em SGBD tanto centralizados como distribuídos, pois é através dela que os aplicativos são imunes às mudanças na organização e na definição dos dados, e viceversa. Por exemplo, se existirem dados que estão armazenados em dois discos, com sistema de arquivos diferentes, ou organizados de maneira diferente (acesso aleatório aos dados versus acesso seqüencial indexado), ou mesmo se estivessem separados em hierarquias de memórias diferentes (disco rígido versus fita), o aplicativo do usuário não deve se preocupar com estes aspectos de organização física. Isso é o que define a independência dos dados (Özsu, 2001). Na transparência de replicação, justamente por causa da replicação de uma base de dados, podese gerar um problema na atualização dos dados. A questão da transparência está envolvida na necessidade ou não do usuário saber se existem uma ou mais réplicas da base. A resposta para essa questão é: claro que ele não precisa. Assim, existem diversas técnicas para o mesmo, que serão discutidas na subseção 2.4. A última transparência que deve existir é a transparência de fragmentação. Levandose em consideração que as relaçõesestão fragmentadas em vários locais, as consultas devem acontecer como se o banco de dados fosse centralizado. Pois, embora as consultas sejam especificadas sobre as relações, a dificuldade está em encontrar uma estratégia para o processamentos das mesmas em fragmentos, isto é, para a conversão de consultas globais em várias consultas de fragmentos. Por fim, conclui Özsu (2001) que a responsabilidade sobre as transparências necessárias para a distribuição dos dados pertence ao SGBD. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 46 2.3.4 Arquitetura de SGBDDs A arquitetura do SGBDD define sua estrutura, isto é, os componentes são identificados, suas funções são especificadas e os interrelacionamentos entre os componentes são definidos. Existem diversas arquiteturas possíveis para SGBDDs, sendo que será realizada a análise de três que englobem os aspectos mais relevantes delas. 2.3.4.1 Sistemas cliente/servidor Os SGBDs cliente/servidor, conforme Özsu (2001), entraram no cenário da computação no início da década de 1990. A idéia geral é simples e elegante: separar as funcionalidades que precisam ser fornecidas em duas classes: funções de servidores e funções de clientes. As funções de servidores devem funcionar nos computadores servidores e as funções clientes devem funcionar nos computadores clientes. É importante observar que todo processamento e otimização das consultas, gerenciamento de transações e gerenciamento de armazenamento de dados fica no lado do servidor. Assim, no lado do cliente, apenas fica o cliente de SGBD responsável pelo gerenciamento de dados que ficam em cache (Özsu, 2001). Existem diferentes tipos de arquiteturas cliente/servidor. No caso mais simples, apenas um servidor é acessado por um ou mais clientes. Essa arquitetura é denominada vários clientesservidor único e segue os princípios dos bancos de dados centralizados. Contudo, uma arquitetura cliente/servidor mais sofisticada possui vários servidores que são acessados por diversos clientes. Nessa arquitetura, vários clientesvários servidores, existem duas estratégias para B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 47 gerenciamento: ou cada cliente gerencia suas conexões com os servidores adequados, ou cada cliente conhece apenas seu servidor local e este se comunica com os demais servidores (Özsu, 2001). A FIGURA 3 mostra uma arquitetura cliente/servidor. S is te m a op er ac io na l Interface do usuário Programa aplicativo ... SGBD cliente Software de comunicação Consultas SQL Relação resultado S is te m a op er ac io na l Software de comunicação Controlador semântico de dados Otimizador de consultas Gerenciador de transações Gerenciador de recuperação Processador de suporte runtime FIGURA 3 Arquitetura cliente/servidor de referência Fonte: Özsu (2001, p. 95). Banco de dados B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 48 2.3.4.2 Sistemas distribuídos nãohierárquicos Nos sistemas distribuídos nãohierárquicos, geralmente a organização física dos dados dos computadores é diferente. Assim, é necessário existir um esquema interno local (EIL) para cada computador, com a definição da estrutura local. A visão global dos dados é descrita por um esquema conceitual global (ECG). Esse esquema descreve a estrutura lógica dos dados de todos os computadores (Özsu, 2001). Continua o autor explicando que, como em banco de dados distribuídos os dados geralmente estão replicados ou fragmentados é necessário ter uma descrição da organização lógica dos dados de cada computador numa terceira camada, o esquema conceitual local (ECL). Dessa forma o esquema conceitual global passa a ser a união dos dois esquemas locais. Finaliza Özsu (2001), o acesso aos dados pelos usuários é através do esquema externo (EE) que fica localizado uma camada acima do esquema conceitual global. A FIGURA 4 mostra o modelo de arquitetura descrita. FIGURA 4 Arquitetura de banco de dados distribuído de referência Fonte: Özsu (2001, p. 97). ECL 2 EIL 1 EIL 2 EIL n EE 2 EE 1 ECL 1 EE n ECL n ECG ... ... ... B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 49 2.3.4.3 Arquitetura de SVBDs A diferença fundamental dos sistemas de vários bancos de dados (SVBDs) distribuídos e dos SGBDs distribuídos se relaciona à definição do esquema conceitual global. Enquanto nos SGBDs distribuídos logicamente integrados o esquema conceitual global define a visão conceitual do banco de dados inteiro, nos SVBDs distribuídos ele define apenas a coleção de alguns dos bancos de dados locais de cada SVBD que se quer compartilhar. Assim, nos SGBDs distribuídos o banco de dados global é a união dos bancos de dados locais, enquanto que nos SVBDs distribuídos, ele é apenas um subconjunto da mesma união (Özsu, 2001). A FIGURA 5 mostra o modelo de arquitetura descrita. FIGURA 5 Arquitetura de SVBD com um ECG Fonte: Özsu (2001, p. 101). 2.3.5 Tolerância a falhas A tolerância a falhas é uma abordagem muito importante em bancos de dados distribuídos. Ela é definida como uma característica pela qual o sistema pode mascarar a ocorrência de falhas para se ter alta disponibilidade de um sistema. Em outras palavras, um sistema gerenciador de banco de dados, ou EIL 1 EIL n ECL 1 ECL n ECG ... ... EEG 2 EEG 1 EEG 3 EEL 12 EEL 11 EEL 13 EEL n2EEL n1 EEL n3 B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 50 mesmo qualquer sistema, é tolerante a falhas se consegue continuar operando em caso de ocorrerem falhas (Tanenbaum, 2002). Na seqüência são descritas as principais métricas de avaliação da tolerância a falhas, os possíveis tipos de falhas e formas de mascarar as possíveis falhas de um sistema. 2.3.5.1 Dependabilidade O principal objetivo da tolerância a falhas é alcançar dependabilidade (dependability), que indica a qualidade do serviço fornecido por um determinado sistema e a confiança depositada nesse serviço. As principais métricas de avaliação da tolerância a falhas são (Weber, 2001): ● Confiabilidade (reliability): É a capacidade de atender as especificações, dentro das condições definidas, durante certo período de funcionamento e condicionado a estar operacional no início do período; ● Disponibilidade (availability): Probabilidade do sistema estar operacional num instante de tempo determinado; ● Segurança (safety): probabilidade do sistema ser ou estar operacional e executar suas funções corretamente, ou descontinuar suas funções de forma que não provoque danos a outros sistemas ou pessoas que dele dependam; ● Segurança (security): proteção contra falhas maliciosas, visando privacidade, autenticidade, integridade e irrepudiabilidade dos dados. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 51 2.3.5.2 Tipos de falhas Segundo Tanenbaum (2002), existem diversas categorias de falhas que podem ocorrer: ● Crash failure: ocorre quando um processo está sendo executado normalmente, mas inesperadamente termina/morre; ● Omission failure: ocorrequando um processo não responde a uma requisição; ● Performance failure: ocorre quando uma requisição demora demais a ser atendida; ● Timing failure: ocorre quando um reposta de uma requisição está fora do intervalo de tempo especificado; ● Response failure: ocorre quando o valor da resposta de uma requisição está incorreto ou quando um processo é desviado do correto fluxo de controle; ● Arbitrary failure: um servidor produz respostas arbitrárias em tempos arbitrários. 2.3.5.3 Mascarando falhas com redundância Partindo do princípio de que nenhum sistema está livre de falhas, o melhor que pode ser feito é esconder/mascarar estas falhas, para que o sistema não retorne um erro. A chave para conseguir isto é a redundância, que pode ser B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 52 conseguida através quatro formas: redundância de hardware, redundância de software, redundância de tempo e redundância de informação (Weber, 2001). Para Tanenbaum (2002), a técnica para prover tolerância a falhas mais conhecida é a redundância de hardware. Ela é aplicada na biologia (seres humanos possuem dois olhos, duas orelhas, dois rins), na aviação (alguns aviões possuem quatro motores, mas pode voar com menos) e até nos esportes (vários jogadores reservas). Weber (2001) afirma que a redundância de informação é provida por códigos de correção de erros, como EEC (error correction code) que vem sendo usados na comunicação das memórias e nos processadores. Como a codificação da informação implica no aumento do número de bits, e os bits adicionais não aumentam a capacidade de representação de dados do código, é fácil perceber a razão da codificação também ser considerada uma forma de redundância. A redundância de tempo repete a computação no tempo, ou seja, evita o custo de hardware adicional, aumentando o tempo necessário para realizar uma computação. É bastante usada em sistemas cujos processadores passam boa parte do tempo ociosos e onde o tempo não é um fator crítico. A cópia de um sistema, como se faz com o hardware, não é uma alternativa inteligente, pois a cópia é idêntica e vai apresentar os mesmos erros. Contudo, existem algumas técnicas de programação que podem criar redundância a nível de software, como por exemplo a criação de programas escritos de forma diferente, a criação de blocos de recuperação e a verificação de consistência (Weber, 2001). B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 53 2.4 Replicação Uma replicação pode ser feita por diversos motivos. Independente do motivo – se for para aumentar o desempenho de consultas; ter uma cópia de segurança; ter alta disponibilidade e tolerância a falhas; ou resolver problemas geográficos de acesso – o importante é saber escolher a forma como será feita a replicação, pois a replicação implica na sincronização permanente dos bancos de dados. De forma geral, as replicações aumentam o desempenho para operações de leitura da base de dados, entretanto as atualizações geram um grande overhead (custo adicional de processamento ou armazenamento). Cada informação replicada é chamada de objeto (Özsu, 2001). 2.4.1 Tipos de replicação Na utilização de banco de dados distribuídos, replicados, é preciso avaliar o delay de atualização dos bancos de dados. Assim, existem dois tipos de replicação: síncrona e assíncrona. 2.4.1.1 Síncrona Para Pedroni e Ribeiro (2006), replicação síncrona é aquela em que os dados são replicados em tempo real, ou seja, ao inserir dados num determinado banco, os mesmos são replicados para os demais, no mesmo momento. Isso é feito de forma garantida com a utilização de transações. Este tipo de replicação é ideal para aplicações que necessitam ter os dados atualizados de forma muito precisa. B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 54 A grande desvantagem no uso desse tipo de replicação, é que existe uma perda significativa de performance, pois os processos tornamse mais lentos e ainda dependentes da estrutura da rede, caso os bancos de dados estejam em hosts diferentes. Outro problema que pode ocorrer é que um host pode estar indisponível e dessa forma, a transação não seria efetivada. Um exemplo hipotético de instruções para esse tipo de replicação seria o exemplificado no EXEMPLO 2. BEGIN TRANSACTION; INSERT INTO foo (1, 'banco de dados'); REPLICAR(); END TRANSACTION; EXEMPLO 2 Exemplo hipotético de instruções SQL para replicação síncrona Fonte: Elaborado pelo autor com base em Pedroni e Ribeiro (2006). 2.4.1.2 Assíncrona Também conhecida como replicação não sincronizada, a replicação assíncrona faz a réplica dos dados não instantaneamente. Essa replicação é feita dentro de uma transação separada, onde a partir do momento que a transação é executada, o replicador lê um histórico das ações executadas no banco de dados a ser replicado e replica para o(s) outro(s). Assim, a réplica pode ser feita a qualquer momento (Pedroni; Ribeiro, 2006). A grande desvantagem nessa replicação, explicam as autoras, é que eventuais erros ou conflitos não são detectados imediatamente, pois a cópia será efetivada como um todo somente no final da transação. Outra desvantagem é que B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 55 as informações dos bancos de dados dos hosts envolvidos não estarão sempre atualizados. Um exemplo hipotético de instruções para esse tipo de replicação é mostrado no EXEMPLO 3. INSERT INTO foo (1, 'banco de dados'); INSERT INTO foo (2, 'replicação assíncrona'); UPDATE ... BEGIN TRANSACTION; REPLICAR(); END TRANSACTION; EXEMPLO 3 Exemplo hipotético de instruções SQL para replicação assíncrona Fonte: Elaborado pelo autor com base em Pedroni e Ribeiro (2006). 2.4.2 Modelos de replicação Os modelos de replicação definem uma estrutura que especifica quais servidores poderão replicar para os demais. Os modelos de replicação são: singlemaster ou masterslave e multimaster (Elnikety; Dropsho; Zwaenepoel, 2006). 2.4.2.1 Singlemaster ou masterslave Nessa forma de replicação, existe um servidor mestre que faz somente a replicação para os demais escravos. Enquanto o servidor mestre possibilita a leitura e a escrita de dados por parte dos usuários, os servidores escravos permitem somente a leitura, sendo que a escrita é feita através das replicações do B D U – B ib lio te ca D ig ita l d a U N IV AT E S (h tt p: //w w w .u ni va te s.b r/ bd u) 56 servidor mestre. As operações de réplica para os servidores escravos, são executadas na mesma ordem que foram executadas no servidor mestre. Esse modelo de replicação pode ser tanto síncrono como assíncrono (Elnikety; Dropsho; Zwaenepoel, 2006). A FIGURA 6 mostra um exemplo dessa estrutura. FIGURA 6 Exemplo do modelo de replicação singlemaster Fonte: Elaborado pelo autor com base em Elnikety, Dropsho e Zwaenepoel (2006). 2.4.2.2 Multimaster Elnikety, Dropsho e Zwaenepoel (2006) afirmam que na replicação multi master, os usuários podem ler e escrever em qualquer servidor. Os servidores por sua vez, terão que replicar as informações para os demais servidores. Isso exige um mecanismo mais elaborado para as transações e replicações. Esse modelo de replicação também pode ser tanto síncrono como assíncrono. A
Compartilhar