A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SCC Bancos de Dados e Suas Aplicações

Apresentações semelhantes


Apresentação em tema: "SCC Bancos de Dados e Suas Aplicações"— Transcrição da apresentação:

1 SCC0141 - Bancos de Dados e Suas Aplicações
Visões e Bancos de Dados Distribuídos Prof. Jose Fernando Rodrigues Junior Material original: Profa. Elaine Parros Machado de Sousa

2 Visão (View) Tabela Base View Tabela Base 1 Tabela Base 2 consulta
junção consulta consulta

3 Visão (View) Representação de dados contidos em outras tabelas (tabelas base) ou mesmo em outras visões Trata resultado de uma consulta como uma tabela consulta armazenada tabela virtual Espaço de armazenamento (no dicionário de dados) apenas para a consulta (select) que define a visão Consulta é executada cada vez que a visão é acessada

4 Visão (View) Utilidade:
segurança - restrição de acesso a tuplas e colunas armazenamento de consultas complexas ou executadas com muita frequência simplicidade para usuário abstração apresentação dos dados com menor complexidade ou em diferentes perspectivas isolamento de aplicações em relação a alterações de esquema OBS: em segurança: alternativa para restringir colunas que usuário tem acesso qdo não é possível restringir via grant Isolamento de aplicações, pois mesmo que se altere o esquema, acrescentando e removendo relações, a aplicação não precisará acessar os dados por meio de novas consultas, basta que acesse a visão – a visão sim, está deverá ser atualizada (refeita) de maneira a corresponder às novas configurações do esquema.

5 Views CREATE OR REPLACE VIEW nome [(NomeColuna [, NomeColuna ...])]
AS <select>; CREATE OR REPLACE VIEW VINCULOS(NRO_DO_VINCULO,TIPO_DO_VINCULO, NOME_DA_PESSOA,DATA_QUE_INGRESSOU,DATA_QUANDO_NASCEU,sTATUS) AS SELECT * FROM lbd01_vinculo_usp; SELECT COUNT(*) FROM ( SELECT L1.ROWID,L2.ROWID FROM VINCULOS L1, lbd01_vinculo_usp L2 WHERE L1.ROWID = L2.ROWID ); SELECT COUNT(*) FROM VINCULOS; FROM lbd01_vinculo_usp;

6 Disciplina = {Sigla, Nome, NCred, Professor, Livro}
Views Exemplo – visão atualizável create or replace view view_disciplina as select nome, sigla from disciplina; select * from view_disciplina;

7 Professor = {Nome, NFunc, Idade, Titulação}
Views Exemplo create view view_professor_doutor as select * from professor where titulacao = 'DOUTOR'

8 Views Exemplo – join view
Aluno = {Nome, Nusp, Idade, DataNasc} Views Disciplina = {Sigla, Nome, NCred, Professor, Livro} Matrícula = {Sigla, Numero, Aluno, Ano, Nota} Exemplo – join view create view view_matricula (NUsp, Nome, Sigla, Disciplina) as select A.NUSP, A.Nome, D.Sigla, D.Nome from Aluno A join Matricula M on A.NUSP = M.Aluno join Disciplina D on M.sigla = D.sigla;

9 Views CREATE VIEW ALTER VIEW DROP VIEW

10 Visão Materializada (materialized view)
Visões armazenadas como tabelas dados provenientes de master tables (tabelas base) Utilidade replicação de dados performance snapshot local de dados remotos armazenamento de resultados de consultas complexas e custosas armazenamento de informações sumarizadas distribuição de dados Master table: tabela de fato, usada como origem dos dados de visões

11 Visão Materializada (materialized view)
Comuns em data warehousing, sistemas distribuídos, computação móvel.... Principais desvantagens: ocupa espaço de armazenamento exige refresh quando as master tables são modificadas

12 Visão Materializada no ORACLE
CREATE MATERIALIZED VIEW view_matriculados BUILD IMMEDIATE REFRESH FAST ON COMMIT AS SELECT D.Sigla, count(M.Sigla) as Nro_Matriculados FROM Disciplina D, Matricula M WHERE D.Sigla=M.Sigla GROUP BY D.Sigla; OBS: em view com junção é necessário colocar o ROWID na definição da view. build immediate – constrói a view imediatamente build deferred – constrói no primeiro refresh refresh fast – refresh incremental do que está no log de modificações das master tables refresh complete – reconstrói a view on commit on demand (chamada explícita de procedimento) periodicamente...

13 BDs distribuídos - Introdução
Sistemas de banco de dados centralizados dados mantidos em um único local processamento de transações individuais essencialmente sequencial Sistemas de banco de dados distribuídos dados armazenados fisicamente em diversos locais (sites) usualmente: cada site gerenciado por um SGBD Sistemas relacionais de fato distribuídos não se tornaram padrões comerciais, ao invés disso os grandes fabricantes usam uma camada sobre diversos sistemas centralizados para se obter o mesmo resultado BDD – integração sem centralização

14 Sistemas comerciais IBM DB2 – Distributed Database Facility (DDF)
Informix Dynamic Server Microsoft SQLServer – Distributed Management Framework (DMF) Oracle – Oracle Replication Manager e Heterogeneous Services/Transparent Gateway 14

15 Problema Imagine o seguinte problema: uma empresa abrange várias cidades e a operação da empresa é integrada por meio de uma base de dados única. Problemas: Copiar a base inteira para todas as filiais? Mas apenas alguns dados são necessários em cada uma; como manter as cópias atualizadas? Quais dados ter em cada filial então? Ainda assim, alguns dados comuns serão necessários em todas as sedes? Onde guardar os dados comuns? Na sede? Como disponibilizar estes dados às filiais sem prejudicar o desempenho? Ter várias cópias dos mesmos dados é uma opção? Em algumas situações será inevitável usar a infra-estrutura de rede para trafegar dados entre pontos geográficos distantes uns dos outros? Como minimizar o tráfego? Como tirar o melhor proveito da rede? Quais alterações podem melhorar o desempenho? 15

16 Problema Imagine o seguinte problema: uma empresa abrange várias cidades e a operação da empresa é integrada por meio de uma base de dados única. Problemas: Copiar a base inteira para todas as filiais? Mas apenas alguns dados são necessários em cada uma; como manter as cópias atualizadas? Quais dados ter em cada filial então? Ainda assim, alguns dados comuns serão necessários em todas as sedes? Onde guardar os dados comuns? Na sede? Como disponibilizar estes dados às filiais sem prejudicar o desempenho? Ter várias cópias dos mesmos dados é uma opção? Em algumas situações será inevitável usar a infra-estrutura de rede para trafegar dados entre pontos geográficos distantes uns dos outros? Como minimizar o tráfego? Como tirar o melhor proveito da rede? Quais alterações podem melhorar o desempenho? Exemplo: empresa de transporte rodoviário, rede de hotéis, empresa aérea internacional, rede de lojas do varejo, ... Quais problemas cada uma destas categorias pode ter de maneira que um BD distribuído possa resolver. 16

17 Motivação Por que distribuir dados? Aplicações disponibilidade
acesso distribuído localidade  desempenho análise distribuída de dados expansão Aplicações grandes corporações redes de hotéis redes de lojas companhias aéreas companhias viárias 17

18 Componentes Tecnologia de Banco de Dados Distribuído
Tecnologia de Redes e Comunicação de Dados

19 Definições Banco de Dados Distribuído (BDD)
conjunto de múltiplos bancos de dados (SGBDs) inter-relacionados distribuídos por uma rede de computadores Sistema de Gerenciamento de Banco de Dados Distribuído (SGBDD) sistema que gerencia um BDD torna a distribuição transparente para o usuário arquivos num sistema de BDD devem ser logicamente relacionados e deve haver uma estruturação entre eles, além de serem acessados por uma interface comum. numa outra perspectiva (não de BDD), estão funcionalidades de SGBD sobre dados semi-estruturados espalhados em arquivos na Internet. 19 19

20 Características Sistema de BDD  mais complexo
funções adicionais do SGBDD localização de dados’ processamento de consultas distribuídas gerenciamento de transações distribuídas gerenciamento de dados replicados recuperação de BDD segurança gerenciamento de dicionário de dados distribuído 20

21 Arquitetura nada compartilhado – cada site seu BD
Arquitetura de rede com um BD centralizado Algumas arquiteturas diferentes de sistemas de banco de dados (Elmasri e Navathe, 2005) Arquitetura BDD – o banco é uma composição dos diversos sites

22 Projeto Questões relevantes sobre BDD
Projeto de Distribuição (Fragmentação/Replicação) da Base de Dados como distribuir a base de dados? base de dados distribuída replicada ou não replicada? Processamento de Consulta como converter transações do usuário em instruções de manipulação de dados? como otimizar uma consulta? custo = transmissão dados + processamento local 22

23 Projeto Questões relevantes sobre BDD Controle de Concorrência
como sincronizar acessos concorrentes? como garantir consistência e isolamento das transações? como evitar deadlocks? Confiabilidade como tornar o sistema tolerante a falhas? como garantir durabilidade e atomicidade das transações? 23

24 Projeto Catálogo (ou Dicionário) de Dados Distribuído
como e onde os dados estão fragmentados como e onde os dados estão replicados informação de esquema informação de autorização de usuários estatísticas

25 Transparência Em SBDDs é necessário que os usuários não tenham que saber da arquitetura distribuída  transparência Tipos de transparência de dados de distribuição localização nomenclatura de replicação de fragmentação horizontal (WHERE) Vertical (SELECT) nível de transpârência: compromisso entre facilidade de uso e dificuldade + overhead para prover alto nível de transparência Transparência pode ser provida por 3 diferentes camadas: camada de acesso – transparência embutida na linguagem do usuário sistema operacional – no ambiente distribuído, principalmente transparência de rede pelo SGBD – mais comum para BDD

26 Tipos de Sistemas de BDD
Fator: grau de homogeneidade SGBDD homogêneo todos os SGBDs locais e todos os clientes idênticos SGBDD heterogêneo SGBDs locais distintos Fator: grau de autonomia Em que grau os sites do sistema distribuído são administrados independentemente AUTONOMIA nenhuma alto esquema conceitual único acesso por um único site para usuário “parece” um único SGBD centralizado SGBDs independentes e autônomos SGBDDs Federados Multibases de dados

27 Catálogo de Dados Distribuído
Possíveis estruturas centralizado Vantagem: uma única cópia, simples de implementar Desvantagem: gargalo para o processamento de consultas – todos os sites tem que acessar o site central para qq consulta catálogo global replicado Vantagem: desempenho local de consultas Desvantagem: manter a consistência das múltiplas cópias do catálogo centralizado compromete disponibilidade – site pode cair replicado compromete autonomia – alterações locais têm que ser repassadas – broadcast Lembre-se: o esquema de um banco de dados é um banco de dados por si só – trata-se do catálogo (ou dicionário) de dados. Portanto, qualquer operção DDL ou DML irá precisar consultar estes dados, por exemplo, para verificar se um dado atributo é válido (existente) ou mesmo qual é o seu tipo

28 Catálogo de Dados Distribuído
Abordagem do R* - projeto protótipo de bases de dados distribuídas da IBM cada site mantém catálogo apenas local descrição apenas dos dados locais site de criação de uma tabela é responsável por manter informação de réplicas para encontrar uma tabela é necessário consultar o catálogo de seu site de criação estratégia: uso de cache nos demais sites mantém descrição de como as tabelas estão fragmentadas e onde cada fragmento e/ou cópia está localizado sempre que uma nova cópia é criada em algum lugar, o catálogo do site de criação precisa ser atualizado

29 Fragmentação Fragmentação  quebra de uma tabela em fragmentos que podem ser armazenados em sites diferentes Tipos: fragmentação vertical  projeção (SELECT) fragmentação horizontal  filtragem (WHERE) fragmentação mista  projeção + seleção Conceito de “Esquema de Fragmentação”: metadados que descrevem como os dados são quebrados ao longo da arquitetura

30 Fragmentação Fragmentação  quebra de uma tabela em fragmentos que podem ser armazenados em sites diferentes Tipos: fragmentação vertical  projeção fragmentação horizontal  seleção fragmentação mista  projeção + seleção Conceito de “Esquema de Fragmentação”: metadados que descrevem como os dados são quebrados ao longo da arquitetura Esquema de Fragmentação: definição de um conjunto de fragmentos que inclui todos os atributos e tuplas no banco de dados e satisfaz à condição de que o banco de dados pode ser reconstruído com base nos fragmentos ao se aplicar alguma sequência de operações de UNIÃO E JUNÇÃO. (Elmasri-Navathe, 2010)

31 Fragmentação Deve ser possível recuperar a tabela original a partir dos fragmentos fragmentação horizontal (WHERE) união dos fragmentos  tabela original fragmentação vertical (SELECT) coleção de fragmentos  decomposição sem perda de junção como garantir? A chave deve fazer parte de cada fragmento A fragmentação vertical é garantida projetando-se a chave da relação em cada um dos fragmentos, o que permite que uma junção restabeleça os dados originais.

32 Fragmentação Fragmentação vertical completa
seja Fi um fragmento vertical de R: F1  F2  … Fn = atributos de R Fi  Fj = Pk(R), para qq i, j, i ≠ j

33 Replicação Replicação  armazenamento de várias cópias de uma tabela ou fragmento de tabela maior disponibilidade dos dados consultas mais rápidas REPLICAÇÃO alocação não redundante replicação parcial BD completamente replicado

34 Replicação Replicação total: cópias de toda a base em todos os sites
Vantagem: maior desempenho de consultas Desvantagem: atualizações e controle de concorrência são dispendiosos, pois novos dados e locks devem ser propagados para todos os sites; intenso tráfego de dados Alocação não redundante: os sites são todos disjuntos (com exceção das chaves)  vantagens e desvantagens inversas à replicação total 34

35 Replicação Replicação parcial: algumas partes do banco são replicadas enquanto que outras não são: Conceito de “Esquema de Replicação”: metadados que descrevem o que é replicado, onde, quantas vezes e com qual atualização os dados são sincronizados O esquema de replicação é um problema de otimização complexo, ele depende: De quais consultas são realizadas com qual frequência em cada site De quais atualizações são realizadas com qual frequência em cada site De qual controle de concorrência (isolamento) é necessário em cada site 35

36 Um esquema de replicação envolve fragmentação horizontal e vertical.
Replicação parcial: algumas partes do banco são replicadas enquanto que outras não são: Conceito de “Esquema de Replicação”: metadados que descrevem o que é replicado, onde, quantas vezes e com qual atualização os dados são sincronizados O esquema de replicação é um problema de otimização complexo, ele depende: De quais consultas são realizadas com qual frequência em cada site De quais atualizações são realizadas com qual frequência em cada site De qual controle de concorrência (isolamento) é necessário em cada site Um esquema de replicação envolve fragmentação horizontal e vertical. É comum que um site precise de apenas alguns atributos, enquanto que outro de apenas algumas tuplas. 36

37 Replicação Tipos: replicação síncrona  todas as cópias são atualizadas dentro de uma mesma transação problema? – tráfego intenso de rede replicação assíncrona  atualizações periódicas das cópias de dados modificados problema? – controle de transação mais elaborado é necessário, alguns dados não tem garantia de consistência e não devem ser lidos

38 Esquema Distribuído Esquemas Lógicos locais ou um esquema global +
Esquema de Fragmentação Esquema de Replicação A arquitetura de um esquema distribuído visa reduzir seu maior custo: tráfego de rede No entanto, em algumas situações como consultas raramente efetuadas, não há o que se fazer – os dados irão trafegar em rede intensamente 38

39 Esquema Distribuído Esquemas Lógicos locais ou um esquema global +
Esquema de Fragmentação Esquema de Replicação A arquitetura de um esquema distribuído visa reduzir seu maior custo: tráfego de rede No entanto, em algumas situações como consultas raramente efetuadas, não há o que se fazer – os dados irão trafegar em rede intensamente Os esquemas de fragmentação e de replicação determinam um único esquema de fragmentação/replicação. 39

40 Processamento de Consultas Distribuídas
Custo da Consulta Distribuída Custo de Transferência de Dados Custo do Processamento da Consulta

41 EX: Transferência de Dados
Exercício Processamento-de-consulta-distribuido

42 Semi-Junção Idéia geral: reduzir o número de tuplas e de atributos transferidos entre sites Por exemplo: No site 1, executar: SELECT * FROM R JOIN S ON R.atr1 = S.atr2 com R no site 1 e S no site 2 No site 1, F=SELEC R.atr1 FROM R, e enviar para o site 2 No site 2, executar: T = SELECT * FROM F JOIN S ON F.atr1 = S.atr2 e enviar o resultado para o site 1 No site 1, executar: SELECT * FROM R JOIN T ON R.atr1 = T. atr2

43 EX: Semi-junção Exercício Semi-juncao

44 Transações Distribuídas
Propriedades ACID devem ser garantidas Atomicidade Consistência Isolamento Durabilidade Recuperação de falhas distribuída Concorrência distribuída

45 Concorrência Distribuída
Problema: o mesmo dado replicado em diferentes sites A e B. No site A, o dado é alterado, quase que imediatamente o site B usará este dado, cuja cópia será diferente do valor no site A. Solução: uso de locks. Quando o site A alterar o dado, deve-se bloqueá-lo (lock) para uso e escrita até que A finalize sua operação e o dado seja sincronizado com o site B. Como gerenciar bloqueios (locks) de objetos (tabelas e fragmentos) distribuídos? abordagem centralizada abordagem cópia primária abordagem completamente distribuída

46 Concorrência Distribuída
Baseada no conceito de Cópia Distinguida (ou Distinta): dentre as várias cópias dos dados, uma delas dita como o controle de concorrência é feito – isto é, uma única cópia recebe e libera locks A escolha da cópia que irá ditar o controle de concorrência pode ser estático ou dinâmico O site que possui a cópia distinguida é denominado site Coordenador, o qual deverá responder ao sistema de locks No modo estático, é usual que o coordenador seja o site onde o dado foi inicialmente armazenado. 46 46

47 Concorrência Distribuída
Abordagem cópia primária bloqueios são gerenciados pelo site onde está a cópia primária (original) do objeto requisitado problema? Maior complexidade Abordagem completamente distribuída bloqueios gerenciados nos sites onde ocorrem as operações – coordenação dinâmica problema? Maior complexidade, necessidade de broadcast dinâmico para informar sobre a coordenação Abordagem centralizada um único site responsável por gerenciar todas as requisições de bloqueio problema? Vulnerável a falhas, requer um backup – sobrecarga de um único site Cópia primária: cópia escrita inicialmente. Completamente distribuída – para escrita, todas as cópias precisam ser bloqueadas (só pode haver uma cópia em edição).

48 Recuperação de Falhas Distribuída
Novos tipos de falha que não ocorrem em SGBDs não distribuídos falhas de comunicação falha em um site onde uma sub-transação é executada Atomicidade: ou todas as sub-transações são efetivadas (committed) ou nenhuma deve ser efetivada COMMIT protocol Ex: Two-Phase Commit (2PC)

49 Recuperação de Falhas Distribuída
Uso do two-phase commit protocol (2PC) Algoritmo distribuído que visa gerenciar situações transacionais – protocolo do tipo consensual Duas fases 1ª. Contacta todos os participantes preparando-os para o sistema de consenso, segundo o qual, após a execução distribuída, cada um terá que “votar” sim (commit) ou não (abort) 2ª. Efetivação da decisão consensual, todos são informados de que devem consolidar a transação (todos votaram commit) ou retornar ao estado anterior (pelo menos um votou abort ou alcançou time-out) O protocolo cuida de todo o processo de notificação e recepção de notificações dos sites envolvidos.

50 Exemplo: ORACLE Transparência de localização (uso de LDAP)
Transações distribuídas baseadas em 2PC Replicação básica leitura em qualquer site escrita em site primário Replicação avançada – leitura e escrita em qualquer site snapshots Suporte a arquitetura heterogênea (Elmasri e Navathe, 2005)

51 Exemplo: ORACLE O Oracle usa o protocolo padrão de diretório Lightweight Directory Access Protocol (LDAP) por meio do Oracle Internet Directory para localização, credenciamento de segurança, recursos de rede compartilhado e dados de catálogo do banco. Transparência de localização (uso de LDAP) Transações distribuídas baseadas em 2PC Replicação básica leitura em qualquer site escrita em site primário Replicação avançada – leitura e escrita em qualquer site snapshots Suporte a arquitetura heterogênea (Elmasri e Navathe, 2005)

52 Exemplo: ORACLE Enterprise Manager Third-Party Administration Tools
SNMP Support Caso heterogêneo: Heterogeneous services Transparent gateway Oracle Net Services Caso homogêneo: Oracle Advanced Replication

53 Exemplo: ORACLE Enterprise Manager Third-Party Administration Tools
SNMP Support Caso heterogêneo: Heterogeneous services Transparent gateway Oracle Net Services Caso homogêneo: Oracle Advanced Replication

54 Exemplo: ORACLE Fluxo de dados entre sites: Oracle Stream Replication, mantém todos os sites atualizados ao enviar continuamente dados de atualização Transparência de distribuição por meio de database links Um database link é um objeto de um esquema que permite o acesso a objetos de outro banco de dados CREATE DATABASE LINK remote.us.oracle.com CONNECT TO junio IDENTIFIED BY junio_password USING ‘orcl’ -- nome do serviço remoto SELECT * FROM CREATE SYNONYM tabela1_remota FOR SELECT * FROM tabela1_remota Obs.: a sintax é diferente de outros comandos do tipo CREATE – nesse caso o nome do objeto é também a string de conexão, assim NÃO HÁ algo como CREATE DATABASE LINK link1 AT remote.us.oracle.com, como se poderia esperar. CREATE DATABASE LINK name_of_link CONNECT TO oracle_username IDENTIFIED BY password -- no quotes here USING 'database_sid' -- single quotes here / -- test select * from

55 Exemplo: ORACLE Fragmentação/Replicação são obtidas por meio de Materialized Views horizontal: cláusula WHERE vertical: cláusula SELECT Em Oracle, a fragmentação é denominada Subsetting (ou “subconjuntando”) Sincronização: Periodicidade Síncrona: qualquer atualização é propagada imediatamente a todos os sites Assíncrona: as atualizações ocorrem posteriormente, em intervalos de tempo pré-definidos Método Fast refresh: usa logs para fazer a atualização apenas do que foi alterado desde o último refresh Complete refresh: atualiza todos os dados da view Force refresh: se possível, realiza um fast refresh, do contrário realiza um complete refresh Obs.: a atualização síncrona depende da participação de todos os sites envolvidos – do contrário não poderá ser realizada; de fato, cada transação conta com a participação de todos os sites. Este tipo de atualização requer um sistema bastante estável, pois se um dos sites cair, todos os demais ficam impossibilitados de fazer escrita.

56 Referências ELMASRI, R; NAVATHE, S.B. Sistemas de Banco de Dados, Addison Wesley, 4a edição, 2005. Ramakrishnan R.; Gehrke, J. Database Management Systems, Mc Graw Hill, 2000. OZSU, M. T.; VALDURIEZ, P. Principles of distributed database systems. 2. ed. Englewood Cliffs: Prentice Hall, 1999.


Carregar ppt "SCC Bancos de Dados e Suas Aplicações"

Apresentações semelhantes


Anúncios Google