Projeto de Banco de Dados Distribuído Projeto de Banco de Dados Distribuídos Alcides Pamplona [email protected] Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Conteúdo Revisão de Conceitos Arquitetura Distribuída Fragmentação Horizontal Fragmentação Vertical Alcides Pamplona 2010 © Banco de Dados Distribuídos 1 Projeto de Banco de Dados Distribuído Definição de Banco de Dados Distribuído Um Banco de Dados Distribuído (BDD) é uma coleção de dados que pertencem logicamente ao mesmo sistema mas que estão espalhados em nós em uma rede de computadores. A definição enfatiza dois aspectos importantes: Distribuição: Os dados não residem no mesmo nó. Que é a diferença básica para um banco de dados centralizado Ligação Lógica: Os dados tem algumas propriedades que os ligam. Isso distingue um BDD de um de um conjunto de bancos de dados ou arquivos residentes em diferentes nós. 3 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído O que é um Sistema de Banco de Dados Distribuídos Base de Dados Distribuída (BDD) É uma coleção de diversas bases de dados, interligadas logicamente através de uma rede de computadores Sistema de Gerência de Bases de dados Distribuídas (SGBDD) É o sistema de software que possibilita a gerência da BDD e lida com aspectos de transparência para o usuário Sistema de Banco de Dados Distribuído (SBDD) SBDD = BDD + SGBDD 4 Alcides Pamplona 2010 © Banco de Dados Distribuídos 2 Projeto de Banco de Dados Distribuído Tipos de SGBDD Homogêneo O SGBD Local e em todos os nós é o mesmo Computadores e sistemas operacionais usados em cada nó podem ser diferentes entre si Heterogêneo O SGBD local e nos nós pode ser diferente SGBDD possui ferramentas para converter entre os modelos de dados 5 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Características de SGBDD Transparência de Dados Confiabilidade de Transações Distribuídas Otimização de Desempenho Facilidade de Expansão 6 Alcides Pamplona 2010 © Banco de Dados Distribuídos 3 Projeto de Banco de Dados Distribuído Transparência de Dados Transparência é a separação entre a semântica de alto nível e seus detalhes de implementação. A principal questão é prover Independência de Dados no ambiente distribuído. Os usuários do banco de dados devem enxergar uma única imagem da base de dados logicamente integrada embora esta esteja fisicamente distribuída. 7 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Níveis de Transparência Transparência de Rede (física) Transparência de Replicação Transparência de Fragmentação Fragmentação Horizontal (Seleções) Fragmentação Vertical (Projeções) Fragmentação Mista ou combinada 8 Alcides Pamplona 2010 © Banco de Dados Distribuídos 4 Projeto de Banco de Dados Distribuído Arquitetura Arquitetura Define a estrutura do sistema Identificação dos componentes Definição das funções de cada componente Definição de relacionamentos e interações entre os componentes Modelo de Referência Uma referência conceitual cujo propósito é dividir o trabalho de padronização em partes gerenciáveis e mostrar num nível mais alto como essas partes se relacionam entre si. 9 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Tipos de Modelos de Referência Baseada em componentes Os componentes do sistema são definidos junto com as relações entre os componentes. Bom para projeto e implementação de sistemas. Baseada em funções Classes de usuários são identificados junto com a funcionalidade que o sistema fornecerá a cada classe. Os objetivos são identificados. Mas como alcançar ? Baseada em dados Identifica as diferentes formas de descrever dados e especifica as unidades funcionais que irão definir e usar os dados de acordo com as formas. 10 Alcides Pamplona 2010 © Banco de Dados Distribuídos 5 Projeto de Banco de Dados Distribuído Arquitetura ANSI/SPARC (dados) Esquema Externo Visão Externa Visão Externa Esquema Conceitual Visão Conceitual Esquema Interno Visão Interna Visão Externa 11 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Criação dos Esquemas Esquema Conceitual CREATE TABLE T1 (COL1 CHAR[10] NOT NULL, COL2 DECIMAL NOT NULL, COL3 DATE NOT NULL); Esquema Externo CREATE VIEW V1 AS SELECT COL1,COL2 FROM T1 Esquema Interno struct TABLE T1 { CHAR col1[10]; // 10 bytes FLOAT col2; // usado para armazenar valores decimais CHAR col3[8]; }; Alcides Pamplona 2010 © 12 Banco de Dados Distribuídos 6 Projeto de Banco de Dados Distribuído Arquitetura ANSI/SPARC (dados) Esquema Externo 1 Esquema Externo 2 Esquema Externo n Esquema Conceitual Global Esquema Conceitual Local 1 Esquema Conceitual Local 2 Esquema Conceitual Local n Esquema Interno Local 1 Esquema Interno Local 2 Esquema Interno Local n Alcides Pamplona 2010 © 13 Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Estratégias de Distribuição Abordagem Descendente na maior parte das vezes no projeto de sistemas a partir do zero na maior parte das vezes em sistemas homogêneos Abordagem Ascendente quando a base de dados já existe em alguns nós 14 Alcides Pamplona 2010 © Banco de Dados Distribuídos 7 Projeto de Banco de Dados Distribuído Processo Descendente 15 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Alternativas de Alocação Não replicado Particionado: cada fragmento reside em apenas um nó da rede Replicado Totalmente replicado: cópias de cada fragmento em cada nó Parcialmente replicado : cópias de cada fragmento em alguns nós Número de Consultas >>1 Replicação Número de Atualizações 16 Alcides Pamplona 2010 © Banco de Dados Distribuídos 8 Projeto de Banco de Dados Distribuído Comparação entre Alternativas de Alocação 17 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Tipos de Fragmentação Fragmentação Horizontal Relacional: distribui as tuplas da relação entre os fragmentos Fragmentação Vertical (FV) Relacional: distribui os atributos da relação entre os fragmentos Atributos chave devem estar presentes em todos os fragmentos Fragmentação Híbrida 18 Alcides Pamplona 2010 © Banco de Dados Distribuídos 9 Projeto de Banco de Dados Distribuído Fragmentação Horizontal EMP_TABLE EMP_ID NOME DEPTO SALÁRIO 0001 SMITH VENDAS 500 0002 BILLY VENDAS 400 0003 WILLIAM COMPRAS 800 0004 JOHN MARKETING EMP_TABLE_FRAGMENT_1 900 EMP_ID NOME DEPTO SALÁRIO 0001 SMITH VENDAS 500 0002 BILLY VENDAS EMP_TABLE_FRAGMENT_2 400 EMP_ID NOME DEPTO SALÁRIO 0003 WILLIAM COMPRAS 800 EMP_TABLE_FRAGMENT_3 EMP_ID NOME DEPTO SALÁRIO 0004 JOHN MARKETING 900 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Fragmentação Horizontal EMP_TABLE_FRAGMENT_1 = SELECT(EMP_TABLE) WHERE DEPTO = “VENDAS” 2. EMP_TABLE_FRAGMENT_2 = SELECT(EMP_TABLE) WHERE DEPTO = “COMPRAS” 3. EMP_TABLE_FRAGMENT_3 = SELECT(EMP_TABLE) WHERE DEPTO = “MARKETING” 1. EMP_TABLE_FRAGMENT1=DEPTO=“VENDAS” (EMP_TABLE) 20 Alcides Pamplona 2010 © Banco de Dados Distribuídos 10 Projeto de Banco de Dados Distribuído Fragmentação Vertical EMP_TABLE EMP_ID NOME DEPTO SALÁRIO CARGO 0001 SMITH VENDAS 500 PROGRAMADOR 0002 BILLY VENDAS 400 ANALISTA 0003 WILLIAM COMPRAS 800 PROJETISTA 0004 JOHN MARKETING 900 GERENTE EMP_TABLE_FRAGMENT_1 EMP_TABLE_FRAGMENT_2 EMP_ID NOME DEPTO CARGO EMP_ID SALÁRIO 0001 SMITH VENDAS PROGRAMADOR 0001 500 0002 BILLY VENDAS ANALISTA 0002 400 0003 WILLIAM COMPRAS PROJETISTA 0003 800 0004 JOHN MARKETING GERENTE 0004 900 21 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Fragmentação Vertical EMP_TABLE_FRAGMENT_1 = SELECT (EMP_TABLE.EMP_ID, EMP_TABLE.NOME, EMP_TABLE.DEPARTAMENTO, EMP_TABLE.CARGO FROM EMP_TABLE 22 Alcides Pamplona 2010 © Banco de Dados Distribuídos 11 Projeto de Banco de Dados Distribuído Correção da Fragmentação Completude Decomposição de uma relação R em fragmentos R1, R2, ..., Rn é completa se cada item de dados em R pode ser encontrado em pelo menos um fragmento Ri Reconstrução Se uma relação R é decomposta em fragmentos R1, R2, ..., Rn , deve ser possível definir um operador relacional (ou de objetos) ∇ tal que: R = ∇ 1 ≤i ≤n Ri Disjunção Se uma relação R é decomposta em fragmentos R1, R2, ..., Rn , e o item de dados di está em Rj , então di não está em qualquer outro fragmento Rk (k ≠j ). 23 Alcides Pamplona 2010 © Banco de Dados Distribuídos Projeto de Banco de Dados Distribuído Exercício 01 1 – Demostre que os três fragmentos horizontais da tabela EMP_TABLE descrevem corretamente a tabela 2 – Dada a definição de projeto Fragmento1=Salario>500(EMP_TABLE) faça a distribuição fragmentação de modo a ficar correta. 24 Alcides Pamplona 2010 © Banco de Dados Distribuídos 12 Projeto de Banco de Dados Distribuído Exercício 01 (cont.) 3 - Dada a estrutura de tabelas abaixo: Faça a fragmentação horizontal tendo como regra que em uma sede serão controlados os dados de passageiros e em outra os dados de vôos. 25 Alcides Pamplona 2010 © Banco de Dados Distribuídos 13