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

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

Data Warehousing Disciplina: Banco de Dados II

Apresentações semelhantes


Apresentação em tema: "Data Warehousing Disciplina: Banco de Dados II"— Transcrição da apresentação:

1 Data Warehousing Disciplina: Banco de Dados II
Professor: Carlos Eduardo Pires

2 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Bibliografia KIMBALL, R., ROSS, M., THORNTHWAITE, W., MUNDY, J., BECKER, B. The Data Warehouse Lifecycle Toolkit. Wiley, 2nd Edition, 2008. SILBERSCHATZ, A., KORTH, H., SUDARSHAN, S. Sistema de Banco de Dados. Campus, 5ª Edição, 2006. INMON, W. H. Building the Data Warehouse. Wiley, 4th Edition, 2005. UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

3 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Agenda Introdução (Integração de Dados) Data Warehousing: Conceitos e Terminologias Processo de Data Warehousing Modelagem Multidimensional Ferramentas OLAP SQL para Data Warehousing Otimização de DW UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

4 Abordagens para Integração de Dados

5 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Integração de Dados Objetivo de um Sistema de Integração de Dados (SID) Fornecer uma interface uniforme para acesso a múltiplas fontes de dados Permite ao usuário especificar o que ele deseja e o sistema determina como e onde a informação será conseguida Estudada no campo da Inteligência Artificial e de Banco de Dados UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

6 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Integração de Dados Problemas da Integração de Dados Fontes são compostas por dados muito específicos (granularidade) Dados são armazenados em diferentes esquemas e modelos Dados podem ser não estruturados, semi-estruturados ou estruturados Fontes de dados têm diferentes linguagens de consulta UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

7 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Integração de Dados Autonomia das Fontes de Dados Continuam a suportar aplicações locais Alterações podem ocorrer tanto nos dados quanto nos esquemas Um SID necessita lidar com as constantes mudanças nas fontes que estão sendo integradas UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

8 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Integração de Dados Principais Abordagens Abordagem Virtual (Mediadores) Consulta às fontes em tempo de execução Abordagem Materializada Consulta um repositório com dados materializados Vantagens e desvantagens Dados atuais X Tempo de resposta UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

9 Arquiteturas Clássicas
Arquitetura de Mediadores Abordagem virtual Características Domínio específico Mapeamentos Apenas consultas Fontes de dados de diferentes tipos UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

10 Arquiteturas Clássicas
Arquitetura de Data Warehouse Abordagem materializada Estratégias de manutenção Rematerialização da visão integrada Manutenção incremental A Arquitetura de Data Warehouse será abordada nesta disciplina UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

11 Data Warehouse

12 Data Warehouse – Definições
“Coleção de dados orientada a assunto, integrada, não-volátil e variante no tempo, utilizada para tomada de decisões” W. H. Inmon “Repositório estruturado e corporativo de dados orientados a assunto, variantes no tempo e históricos, usados para recuperação de informações e suporte à decisão. O DW armazena dados atômicos e sumariados” Oracle Corporation UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

13 Data Warehouse – Definições
“Uma cópia de dados transacionais estruturada especificamente para consulta e análise” R. Kimball UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

14 Propriedades de um Data Warehouse
Orientado a Assunto Integrado Data Warehouse Variante no Tempo Não-volátil UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

15 Informações Financeiras
Orientado a Assunto Os dados são divididos e armazenados por áreas de negócio Aplicações OLTP Aposentadoria Investimento Seguro Empréstimo Poupança Data Warehouse Informações Financeiras dos Clientes UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

16 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Integrado Os dados de um determinado assunto são definidos e armazenados apenas uma vez Poupança Contas Empréstimos Cliente Aplicações OLTP Data Warehouse UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

17 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Variante no Tempo Os dados são armazenados como uma série de fotografias, cada uma representando um período no tempo Data Warehouse UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

18 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Não-Volátil Dados são materializados no DW Operacional Data Warehouse Carga Inserção, Atualização, Remoção e/ou Leitura Leitura UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

19 Alterando os Dados em um Data Warehouse
Bancos de Dados Operacionais Banco de Data Warehouse Primeira Carga Atualizar Atualizar Eliminar ou Arquivar Atualizar UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

20 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Data Mart Data Warehouse departamental Espelho parcial de um Data Warehouse Oferece melhoria no desempenho Armazena menos dados Desenvolvimento Construído e “povoado” mais rapidamente Satisfação imediata do Cliente UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

21 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Data Mart UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

22 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Data Mart DW Corporativo Clientes 1998_Vendas 1999_Vendas 2000_Vendas 1998_Garantia 1998_Suporte ... Data Mart Vendas & Marketing Data Mart Garantia & Suporte Clientes Clientes 1998_Vendas 1999_Vendas 2000_Vendas ... 1998_Garantia ... 1998_Suporte UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

23 Data Warehouse x Data Mart
Meses Meses a anos Tempo de Implementação Poucas Várias Fonte de Dados Um único assunto Vários Assuntos Departamento Empresa Escopo Data Mart Data Warehouse Propriedade UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

24 Movendo Dados de um Data Warehouse para Data Marts
Mart Suporte a clientes Mart Vendas Data Warehouse Mart Finanças Fonte 1 Fonte 2 Fonte 3 Vantagens Campos compartilhados Fonte comum Processamento distribuído Desvantagens Tempo mais longo de desenvolvimento UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

25 Movendo Dados de Data Marts para um Data Warehouse
Mart Vendas Mart Finanças Mart Suporte a clientes Fonte 1 Fonte 2 Fonte 3 Vantagens Mais simples e rápido Dados específicos de cada departamento Desvantagens Duplicação de dados Data Marts incompatíveis UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

26 Processo de Data Warehousing

27 Componentes do Processo de Data Warehousing
Fontes de Dados Área de Preparação Área de Armazenamento Ferramentas de Acesso Legado Data Warehouse Externa ODS Operacional Data Marts Repositório de Metadados UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

28 Um Sistema de Data Warehousing
Dados no Ambiente OLAP Data Marts Data Warehouse Dados de Sistemas Operacionais Compras Produção Contábil Dados da Empresa OLTP Vendas UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

29 Principais Profissionais Envolvidos em um Projeto de Data Warehousing
Analista de Negócios Administrador de Dados Administrador de Banco de Dados Projetista de DW Desenvolvedor de DW Desenvolvedor de Relatórios OLAP Pessoal da própria empresa! UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

30 Coleção de Ferramentas
Obtenção de dados Limpeza, integração, ... Consulta, relatório, análise Mineração de dados Monitoração e administração do DW Monitoração do ETL UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

31 Processo de Extração, Transformação e Carga
“Extrai dados necessários das fontes a serem integradas, transforma-os e carrega-os no DW” Extraction, Transformation and Load (ETL) Limpeza de Dados Corrige e pré-processa os dados Operacional Área de Preparação Data Warehouse UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

32 Transformação de Dados
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

33 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Limpeza de Dados 5 erros Código Candidato Profissão Idade 1 José Roberto Engenheiro 44 Maria Silva Médico 67 2 Pedro Alcântara Advogado 1001 3 P. Alcântara Bancário 43 4 Marta Borges Comerciante 22 null Priscila Souza Professor 18 5 Adolfo Farias Docente 27 ... UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

34 Ferramentas de ETL: Oracle Warehouse Builder
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

35 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Desenho Arquitetural Diagrama de Fluxo de Dados UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

36 Mapeamento da Movimentação dos Dados
Fontes de Dados Transformações Destinos UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

37 Refinando a Movimentação dos Dados
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

38 Modelando um Data Warehouse

39 Comparando Ambientes de Modelagem
Operacional: OLTP Analítico: Data Warehouse Entidades normalizadas Segue terceira forma normal ou maior Produz um design complexo de BD Armazena dados no nível transacional mais baixo Aumenta o nível de JOIN de tabelas em consultas Estrutura tipicamente estática Entidades desnormalizadas Produz um único design de BD mais facilmente compreensível pelos usuários Armazena dados Nível de transação Nível de sumário Diminui o número de JOINs de tabelas em consultas Estrutura dinâmica UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

40 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Análise de Negócio “Conjunto de atividades e técnicas utilizadas para servir como ligação entre partes interessadas no intuito de compreender a estrutura, políticas e operações de uma organização e para recomendar soluções que permitam que a organização alcance suas metas”  BABoK (Business Analysis Body of Knowledgement)  Como analisar? Ponha-se no lugar de um Gerente de Vendas O que ele gostaria de analisar? UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

41 Modelagem Multidimensional
Dados operacionais visualizados sob diversos ângulos Os ângulos são chamados dimensões do negócio Produto Loja Tempo Região Uma das dimensões é “sempre” o Tempo UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

42 Modelagem Multidimensional
Outros Exemplos de Dimensões UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

43 Modelagem Multidimensional
Atributos de Dimensão São atributos qualitativos que caracterizam os ramos do negócio envolvidos na medida de desempenho de determinado fato Exemplo Dimensão “Produto” Descrição, embalagem, preço, etc. UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

44 Modelagem Multidimensional
Granularidade Define o nível de detalhe das dimensões Influencia o tamanho das dimensões Exemplo Dimensão “Loja” País Maior Granularidade Região Estado Cidade Menor Granularidade UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

45 Modelagem Multidimensional
Hierarquias entre os atributos das dimensões Úteis para a geração de relatórios Dimensão “Região” Fornecedor  Cidade  Estado  Região Dimensão “Tempo” Dia  Semana  Mês  Trimestre  Ano UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

46 Modelagem Multidimensional
Associados a cada dimensão existem fatos: Vendas Compras Sinistro Fatos São valores quantitativos referentes ao desempenho de um grupo de dimensões Exemplo Fato “Vendas” (Loja, Produto e Tempo) Quantidade, lucro, valor, etc. UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

47 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Processamento OLAP OLAP (On-line Analytical Processing) Aplicado sobre estruturas multidimensionais O termos “On-line” significa que os resumos solicitados são obtidos “rapidamente” Difere substancialmente daquele utilizado por aplicações do nível operacional (OLTP) UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

48 Processamento OLAP x OLTP
Análise Processos Atividades Operacional, Interna, Externa Operacional, Interna Fontes de Dados Grande para Muito Grande Pequeno para grande Tamanho Assunto, tempo Aplicação Organização dos Dados Snapshots no tempo 30 – 60 dias Natureza dos dados Leitura DML Operações Segundos para horas Milisegundos para segundos Tempo de Resposta OLAP OLTP Propriedade UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

49 Modelagem Multidimensional
Principais vertentes para Modelagem Multidimensional Multidimensional OLAP (MOLAP) Relational OLAP (ROLAP) Hybrid OLAP (HOLAP) Outras variações Web-based OLAP (WOLAP) Desktop OLAP (DOLAP) Real-Time OLAP (RTOLAP) UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

50 MOLAP (Multidimensional OLAP)
Baseia-se nos Bancos de Dados Multidimensionais Estrutura utilizada: Cubo Multidimensional Cada aresta representa uma dimensão do negócio As células do cubo são preenchidas com valores quantitativos (medidas ou fatos) Data Warehouse ou Data Mart Cubo Armazena cópia da tabela fato e dimensões Armazena agregações SGBD Dados MOLAP Agregações MOLAP UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

51 MOLAP (Multidimensional OLAP)
PRODUTO Calça Meia Casaco Tênis Qual o total de vendas de ‘Casacos' do 'Cliente 1' em '2001'? 1999 Vendas 2000 TEMPO 2001 CLIENTE Cliente 2 2002 Cliente 1 Mais informações: UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

52 ROLAP (Relational OLAP)
Tabelas relacionais simulam o cubo multidimensional O esquema proposto concentra numa tabela as medidas ou fatos do negócio (tabela de fatos) Os componentes das dimensões são armazenados em outras tabelas (tabelas de dimensão) Data Warehouse ou Data Mart Dados-base são mantidos no SGBD-fonte Dados ROLAP Agregações ROLAP Agregações são armazenadas em tabelas relacionais SGBD Estrutura totalmente relacional UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

53 Data Warehouse ou Data Mart
HOLAP (Hybrid OLAP) Data Warehouse ou Data Mart Dados ROLAP SGBD Cubo Agregações MOLAP Dados-base mantidos no BD fonte Agregações calculadas e armazenadas no cubo UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

54 MOLAP vs. ROLAP vs. HOLAP Armazenamento MOLAP HOLAP ROLAP
Dados de base Cubo Tabela Relacional Tabela Relacional Agregações Cubo Cubo Tabela Relacional Perspectiva do Cliente MOLAP HOLAP ROLAP Desempenho de consulta Imediato Mais rápido Rápido Consumo em disco Alto Médio Baixo Manutenção do cubo Alto Médio Baixo UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

55 Modelo Estrela (“Star Schema”)
Dimensão Produto Produto_id Descrição,... Dimensão Loja Loja_id Cidade,... Fatos “Vendas” Produto_id Loja_id Tempo_id Cliente_id Valor_vendas Total_vendas,... Tabela de Fatos Dimensões Desnormalizadas Dimensão Tempo Tempo_id Dia Mês Ano,... Dimensão Cliente Cliente_id Nome,... UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

56 Modelo Estrela (“Star Schema”)
Geográfica Produto Tempo Und. $ Tabelas de Dimensão Tabela-Fato Medidas Fatos Dimensão UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

57 Modelo Estrela (“Star Schema”)
Tabela Fato Dimension Table Dim_Tempo Chave_Tempo Data . Fato_Vendas Chave_Funcionario Chave_Produto Chave_Cliente Chave_Entregador Qtd-Prod Valor-Total …. Dim_Funcionario Codigo_Funcionario Dim_Produto Codigo_Produto Dim_Cliente Codigo_Cliente Dim_Entregador Chave_Entreegador Codigo_Entregador UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

58 Modelo Estrela (“Star Schema”)
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

59 Modelo Estrela (“Star Schema”)
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

60 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Exercício de Sala A partir do Modelo Conceitual do Projeto da Disciplina, tente montar um esquema estrela Mostrar Fato, Dimensões e Relacionamentos, além dos atributos UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

61 Modelo Flocos de Neve (“Snowflakes”)
Tabelas-Dimensão Secundárias Fato_Vendas Chave_Tempo Chave_Funcionario Chave_Produto Chave_Cliente Chave_Entregador RequiredDate . MarcaProduto CodigoMarca CodigoCategoria Categoria Nome Dim_Produto Tamanho Tabela-Dimensão Principal UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

62 Modelo Flocos de Neve (“Snowflakes”)
ESTADO CATEGORIA Dimensões Normalizadas SUBCATEGORIA CIDADE PRODUTO LOJA Vendas Custo TEMPO CLIENTE UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

63 Modelo Flocos de Neve (“Snowflakes”)
Hierarquia entre Dimensões sType store city region è snowflake schema è constellations UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

64 Escolhendo uma Modelagem Multidimensional
Star Schema Snowflake Clareza + fácil + difícil Número de tabelas < > Complexidade de consultas + simples + complexo Desempenho de consulta + rápido + lento UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

65 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Exercício de Sala Montar um esquema snowflakes referente ao fato Vendas Responda a seguinte consulta no esquema snowflakes: Quantidade de vendas de carros da marca W, feitas ao cliente X, no ano de Z UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

66 Escolhendo a Granularidade
Determinar requisitos dos dados Escolher o nível mais baixo de detalhe Requer espaço em disco Envolve maior tempo de processamento Provê capacidade detalhada de análise de dados Adaptar medidas à granularidade estabelecida Considerações de projeto Usar medidas aditivas e numéricas UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

67 Definindo Características de Dimensões
Aplicar características às tabelas de dimensão Definir PRIMARY KEY Incluir colunas altamente correlacionadas e descritivas Projetando para Usabilidade e Extensibilidade Minimizar ou evitar uso de códigos e abreviações Criar colunas úteis para níveis de agregação Evitar valores nulos ou em branco Tratar os atributos que mudam ao longo do tempo UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

68 Identificando Hierarquias de Dimensões
Hierarquia Consolidada Local da Loja Continente País Região Cidade Loja Hierarquia em Separado 01 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

69 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Dicas Importantes Levar a PK original da tabela fonte para a dimensão Carga incremental Durante a carga, carregar as dimensões primeiramente Dimensões são bem menores que os fatos Vale a pena desnormalizar UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

70 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Terminologia Local Q4 Q1 Q2 Q3 Uvas Maçãs Melões Cerejas Pêras Atlanta Denver Detroit Membro Produto Célula Dimensão Dia 1 Dia 2 ... Jan. Fev.. 1998 1999 Níveis Tempo Início Trimestre 1 1 deJulho Fim 30 de Setembro Trimestre 2 1 de Outubro 31 de Dezembro Trimestre 3 1 de Janeiro 31 de Março Trimestre 4 1 de Abril 30 de Junho Propriedades Tempo UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

71 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Operações no Cubo Local Atlanta Denver Detroit Produto Uvas Maçãs Melões Cerejas Pêras Local Atlanta Denver Detroit Produto Uvas Maçãs Melões Cerejas Peras Produto Uvas Maçãs Melões Cerejas Peras Sales Sales Q4 Tempo Q1 Q2 Q3 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

72 Dimensões Compartilhadas
Dimensão 1 Dimensão 3 Dimensão 5 Fatos 1 Fatos 2 Dimensão 2 Dimensão 4 Dimensão 6 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

73 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Fatos & Fatos? Dimensão 1 Dimensão 5 Fatos 2 Fatos 1 Dimensão 2 Dimensão 6 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

74 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Tamanho de um DW Fato: Vendas Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 74

75 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Tamanho de um DW É medido pelo tamanho da Tabela de Fatos Em geral, o tamanho das dimensões é desprezado Dimensão Tempo: 2 anos x 365 dias = dias (linhas) Dimensão Loja: 300 lojas Dimensão Produto: produtos Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 75

76 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Tamanho de um DW Dimensão Promoção: cada item vendido está associado a uma única promoção Número de registros da tabela de fatos (média de itens (produtos) vendidos ao dia em cada loja): 730 (dias) x 300 (lojas) x 3000 (produtos/dia) x 1 (promoção)= 657 milhões de registros Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 76

77 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Tamanho de um DW Número de campos chaves = 4 Número de campos fatos (medidas) = 4 Total de campos = 8 (de 4 bytes, cada um) Tamanho da Tabela de Fatos x 8 x 4 = 21GB Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 77

78 Ferramentas OLAP

79 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Ferramentas OLAP CAMADA DE “FRONT-END” Ferramentas de Apresentação Ferramentas OLAP DW Ferramentas de Apresentação Ferramentas de Mineração de Dados Executivo BD UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

80 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Ferramentas OLAP Admitem análise interativa de informações resumidas Fornecem ao usuário a visualização dos dados sob diferentes ângulos Comportam as necessidades da atividade de análise Características de um Relatório OLAP Séries temporais Comparações Ajuda à identificação de anomalias ou exceções Operações: Drill Up, Drill Down, Slicing/Dicing UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

81 Exemplo de Relatório OLAP
Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 81

82 Exemplo de Relatório OLAP
Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 82

83 Exemplo de Relatório OLAP
Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

84 Ferramentas OLAP: Oracle Discoverer
TABULAÇÃO CRUZADA UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

85 Tabela Dinâmica no Excel
É uma tabela interativa que resume uma grande quantidade de dados rapidamente, ou os combina de tabelas diferentes É possível girar suas linhas e colunas para ver resumos diferentes dos dados de origem, filtrar os dados exibindo páginas diferentes ou exibir os detalhes das áreas de interesse UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

86 Tabela Dinâmica no Excel
Exemplo: AULAPED.xls (http://www.virtual.epm.br/material/tis/curr-med/tab_dinamica/tabdin.html) Selecione a área compreendida entre as células A1 e H1612 Menu Dados  "Relatório da Tabela Dinâmica" Onde estão os dados para análise? BD ou Lista do Excel Intervalos de dados a serem usados? $A$1:$H$1612 Layout UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

87 SQL para OLAP

88 Extensões SQL para Ferramentas OLAP
Comando Merge A partir de uma tabela origem, insere ou atualiza linhas em uma tabela destino Operador ROLLUP Produz um conjunto de resultados que contém as linhas agrupadas e os valores de subtotais Operador CUBE Produz um conjunto de resultados que contém as linhas de ROLLUP e as linhas de tabulação cruzada Operador Grouping Sets Extensão da cláusula GROUP BY Possibilita explicitar os agrupamentos desejados UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

89 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge Sintaxe: MERGE <hint> INTO <table_name> USING <table, view or query> ON (<condition>) WHEN MATCHED THEN <update_clause> WHEN NOT MATCHED THEN <insert_clause> [LOG ERRORS <log_errors_clause> <reject limit <integer | unlimited>]; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

90 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge – Exemplo 01 ALUNO ALUNO2 INSERT XOR UPDATE Origem Destino UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

91 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge – Exemplo 01 CREATE TABLE aluno ( codigo NUMBER PRIMARY KEY, nome VARCHAR2(10), curso VARCHAR2(10), telefone VARCHAR2(20)); INSERT INTO aluno VALUES (1,'JOSE','CC',' '); INSERT INTO aluno VALUES (2,'MARIA','EE',' '); INSERT INTO aluno VALUES (3,'PAULO','EM',' '); CREATE TABLE aluno2 ( id NUMBER PRIMARY KEY, nome VARCHAR(10), telefone VARCHAR2(20), codigo NUMBER); UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

92 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge – Exemplo 01 CREATE SEQUENCE seq_aluno; CREATE OR REPLACE PROCEDURE atualiza IS BEGIN MERGE INTO aluno2 a2 USING aluno a ON (a.codigo = a2.codigo) WHEN MATCHED THEN UPDATE SET a2.curso = a.curso, a2.telefone = a.telefone WHEN NOT MATCHED THEN INSERT (a2.id, a2.nome, a2.curso, a2.telefone, a2.codigo) VALUES (seq_aluno.nextval, a.nome, a.curso, a.telefone, a.codigo); COMMIT; END; EXECUTE atualiza; SELECT * FROM aluno2; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

93 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge – Exemplo 01 INSERT INTO aluno VALUES (4,'ZILDA','CC',' '); COMMIT; EXECUTE atualiza SELECT * FROM aluno2; UPDATE aluno SET curso = 'CC' WHERE codigo = 2; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

94 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge – Exemplo 02 CREATE TABLE employee ( employee_id NUMBER(5), first_name VARCHAR2(20), last_name VARCHAR2(20), dept_no NUMBER(2), salary NUMBER(10)); INSERT INTO employee VALUES (1,'Dan', 'Morgan',10,100000); INSERT INTO employee VALUES (2,'Helen','Lofstr',20,100000); INSERT INTO employee VALUES (3,'Akiko','Toyota',20,50000); INSERT INTO employee VALUES (4,'Jackie','Stough',20,40000); INSERT INTO employee VALUES (5,'Richard','Foote',20,70000); INSERT INTO employee VALUES (6,'Joe', 'Johnson',20,30000); INSERT INTO employee VALUES (7,'Clark', 'Urling',20,90000); UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

95 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge – Exemplo 02 CREATE TABLE bonuses ( employee_id NUMBER, bonus NUMBER DEFAULT 100); INSERT INTO bonuses (employee_id) VALUES (1); INSERT INTO bonuses (employee_id) VALUES (2); INSERT INTO bonuses (employee_id) VALUES (4); INSERT INTO bonuses (employee_id) VALUES (6); INSERT INTO bonuses (employee_id) VALUES (7); COMMIT; SELECT * FROM employee; SELECT * FROM bonuses; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

96 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Merge – Exemplo 02 subconjunto de employee MERGE INTO bonuses b USING ( SELECT employee_id, salary, dept_no FROM employee WHERE dept_no = 20) e ON (b.employee_id = e.employee_id) WHEN MATCHED THEN UPDATE SET b.bonus = e.salary * 0.1 WHEN NOT MATCHED THEN INSERT (b.employee_id, b.bonus) VALUES (e.employee_id, e.salary * 0.05); UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

97 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Cubo 2D GROUP BY storeId, prodId Fact table: Multi-dimensional cube: dimensions = 2 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

98 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Cubo 3D GROUP BY storeId, prodId, date Fact table: Multi-dimensional cube: day 2 day 1 dimensions = 3 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

99 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Agregação Soma de quantidade (amt) em um dia (dia 1) Em SQL: SELECT SUM(amt) FROM sale WHERE date = 1; 81 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

100 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Agregação Soma quantidade (amt) por dia Em SQL: SELECT date, SUM(amt) FROM sale GROUP BY date; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

101 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Agregação Soma quantidade (amt) por dia e produto Em SQL: SELECT date, prodId, SUM(amt) FROM sale GROUP BY date, prodId Desconsidera storeId rollup drill-down UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

102 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Agregação Operadores SUM, COUNT, MAX, MIN, AVG Cláusula “HAVING” Eliminar determinados grupos Uso da hierarquia entre dimensões Média de vendas por região (região está dentro de loja (“store”)) Maior venda por mês (mês está dentro de ano) UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

103 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Agregação no Cubo GROUP BY storeId, prodId, date day 2 . . . day 1 GROUP BY storeId GROUP BY storeId, prodId 129 drill-down rollup GROUP BY prodId UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

104 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Operadores do Cubo day 2 . . . day 1 sale(c1,*,*) 129 sale(c2,p2,*) sale(*,*,*) UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

105 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Operadores do Cubo * day 2 sale(*,p2,*) day 1 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

106 Extensões SQL para Ferramentas OLAP
Cláusula GROUP BY tradicional SELECT department_id, job_id, AVG(salary) FROM employees GROUP BY department_id, job_id UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

107 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Operador ROLLUP Total de Combinações: n + 1 SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY ROLLUP(department_id, job_id); 1 2 3 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

108 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Operador CUBE Total de Combinações: 2n SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY CUBE (department_id, job_id) ; 1 2 3 4 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

109 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Grouping Sets SELECT department_id, job_id, manager_id,avg(salary) FROM employees GROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id),()); 1 2 34000 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

110 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Grouping Sets SELECT department_id, job_id, manager_id,avg(salary) FROM employees WHERE salary > 12000 GROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id),()) DEPARTMENT_ID JOB_ID MANAGER_ID AVG(SALARY) 20 MK_MAN 80 SA_MAN 90 AD_VP 90 AD_PRES AD_VP MK_MAN SA_MAN AD_PRES 16416,6667 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

111 Otimizações

112 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Visão (Virtual) Crie uma visão, EMPVU80, que contenha detalhes dos funcionários do departamento 80 CREATE VIEW empvu80 AS SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80; View created. UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

113 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Visões (Virtual) Servidor de Banco de Dados Aplicação SELECT * FROM empvu80; USER_VIEWS EMPVU80 SELECT employee_id, last_name, salary FROM employees WHERE department_id=80; EMPLOYEES UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

114 Visões Materializadas
Armazenam fisicamente os resultados de uma consulta Podem ser atualizadas periodicamente Ajudam a aumentar a velocidade de resposta das consultas que envolvem funções de agregação ou junções entre tabelas Usadas em soluções de Data Warehousing e Replicação de Dados No SGBD Oracle, eram chamadas de snapshots UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

115 Visões Materializadas
CREATE MATERIALIZED VIEW relatorio_cliente REFRESH COMPLETE ENABLE QUERY REWRITE AS SELECT c.nome_cliente, SUM(f.valor) AS total FROM fatos_vendas f, dim_cliente c WHERE f.cliente_id = c.cliente_id GROUP BY c.nome_cliente; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

116 Visões Materializadas – Exemplo 1
CREATE TABLE products (id_product NUMBER PRIMARY KEY, nm_product VARCHAR2(40), ds_product VARCHAR2(200)); CREATE TABLE sales (id_sales NUMBER, id_product NUMBER, amount NUMBER, value NUMBER, PRIMARY KEY (id_sales, id_product)); INSERT INTO products VALUES (1,'NESCAU',null); INSERT INTO products VALUES (2,'AGUA MINERAL',null); INSERT INTO products VALUES (3,'DESODORANTE',null); INSERT INTO sales VALUES (101,1,20,450); INSERT INTO sales VALUES (100,1,10,225); INSERT INTO sales VALUES (100,2,5,30); INSERT INTO sales VALUES (100,3,30,160); INSERT INTO sales VALUES (102,2,2,10); COMMIT; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

117 Visões Materializadas – Exemplo 1
CREATE MATERIALIZED VIEW product_sales_mv BUILD IMMEDIATE REFRESH FAST ON COMMIT ENABLE QUERY REWRITE AS SELECT p.nm_product, SUM(s.value) FROM products p, sales s WHERE p.id_product = s.id_product GROUP BY nm_product; SELECT * FROM product_sales_mv; NM_PRODUCT SUM(S.VALUE) AGUA MINERAL DESODORANTE NESCAU UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

118 Visões Materializadas – Exemplo 1
INSERT INTO sales VALUES (103,2,3,14); SELECT * FROM product_sales_mv; NM_PRODUCT SUM(S.VALUE) AGUA MINERAL DESODORANTE NESCAU COMMIT; NM_PRODUCT SUM(S.VALUE) AGUA MINERAL DESODORANTE NESCAU Mesmo resultado anterior Provoca a rematerialização da visão Resultado atualizado após o COMMIT UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

119 Visões Materializadas – Exemplo 2
CONN hr/hr @d:\oracle\ora92\rdbms\admin\utlxplan.sql SET autotrace traceonly CREATE MATERIALIZED VIEW dept_emp REFRESH COMPLETE ENABLE QUERY REWRITE AS SELECT d.department_name, SUM(e.salary) AS total FROM departments d, employees e WHERE d.department_id = e.department_id GROUP BY d.department_name; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

120 Visões Materializadas – Exemplo 2
ALTER SESSION set query_rewrite_enabled = true; SELECT d.department_name, SUM(e.salary) AS total FROM departments d, employees e WHERE d.department_id = e.department_id GROUP BY d.department_name; 11 linhas selecionadas. Plano de Execução SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=327 Bytes=9810) TABLE ACCESS (FULL) OF 'DEPT_EMP' (Cost=2 Card=327 Bytes=9810) UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

121 Visões Materializadas
Vantagens Útil para sumarização, cálculos pré-computados e replicação de dados Acesso mais rápido para consultas envolvendo junções complexas Transparente para usuários finais Podem ser adicionadas ou eliminadas sem invalidar código SQL Desvantagens Custos de desempenho (rematerialização) Custos de armazenamento UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

122 Particionamento de Tabelas
Tabelas Particionadas Decomposição de grandes tabelas em pedaços menores chamados partições Cada partição possui seu próprio nome e pode, opcionalmente, ter características de armazenamento próprias Benefícios Gerenciamento, o desempenho de consultas e a disponibilidade dos dados UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

123 Particionamento de Tabelas
Do ponto de vista da aplicação, uma tabela particionada é idêntica a uma tabela não-particionada Não são necessárias modificações ao acessar uma tabela particionada utilizando comandos DML Chave de particionamento Conjunto de colunas que determina em qual partição estará cada linha UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

124 Particionamento de Tabelas
Tipos de Particionamento Faixa Lista Hash UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

125 Particionamento de Tabelas
CREATE TABLE employee_r ( empno NUMBER(10) PRIMARY KEY, name VARCHAR2(40), deptno NUMBER(2)) PARTITION BY RANGE (deptno) (PARTITION P1 VALUES LESS THAN (11) TABLESPACE p1_ts, PARTITION P2 VALUES LESS THAN (21) TABLESPACE p2_ts, PARTITION P3 VALUES LESS THAN (31) TABLESPACE p3_ts, PARTITION P4 VALUES LESS THAN (MAXVALUE) TABLESPACE p4_ts); Particionamento por Faixa de Valores UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

126 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Exemplo CREATE TABLE exemplo ( id NUMBER, name VARCHAR2(30)) PARTITION BY RANGE (id) (PARTITION P1 VALUES LESS THAN (250000) TABLESPACE users, PARTITION P2 VALUES LESS THAN (500000) TABLESPACE users, PARTITION P3 VALUES LESS THAN (750000) TABLESPACE users, PARTITION P4 VALUES LESS THAN (MAXVALUE) TABLESPACE users); UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

127 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Exemplo CREATE OR REPLACE PROCEDURE carrega IS BEGIN FOR i in LOOP INSERT INTO exemplo VALUES (i,'AAAA'||i); END LOOP; COMMIT; END; / EXEC carrega SELECT * FROM exemplo partition(p1) WHERE id = 25000; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

128 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Exemplo ANALYZE TABLE exemplo COMPUTE STATISTICS; SELECT table_name, partition_name, high_value, num_rows FROM user_tab_partitions WHERE table_name = 'EXEMPLO'; TABLE_NAME PARTITION_NAME HIGH_VALUE NUM_ROWS EXEMPLO P EXEMPLO P EXEMPLO P EXEMPLO P MAXVALUE UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

129 Particionamento de Tabelas
CREATE TABLE cliente ( codigo NUMBER(5) NOT NULL, nome VARCHAR2(100), estado CHAR(2)) TABLESPACE users PARTITION BY LIST (estado) (PARTITION p_regional_sudeste VALUES ('SP', 'RJ', 'MG', 'ES') TABLESPACE users, PARTITION p_regional_nordeste VALUES ('BA', 'PE', 'PB', 'RN') TABLESPACE users); Particionamento por Lista de Valores UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

130 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Exemplo BEGIN FOR i in LOOP IF MOD(i,2) = 0 THEN INSERT INTO cliente VALUES (i,'AAAAAA','SP'); ELSE INSERT INTO cliente VALUES (i,'BBBBBB','PB'); END IF; END LOOP; COMMIT; END; SELECT table_name, partition_name, high_value, num_rows FROM user_tab_partitions WHERE table_name = 'CLIENTE' TABLE_NAME PARTITION_NAME HIGH_VALUE NUM_ROWS CLIENTE P_REGIONAL_SUDESTE 'SP', 'RJ', 'MG', 'ES' 500 CLIENTE P_REGIONAL_NORDESTE 'BA', 'PE', 'PB', 'RN' 500 INSERT INTO cliente VALUES (1001, 'CCCCCC', 'RS'); ERRO na linha 1: ORA-14400: chave de partição inserida não está mapeada para partição alguma UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

131 Particionamento de Tabelas
CREATE TABLE pessoa ( codigo NUMBER(7) NOT NULL, nome VARCHAR2(150) NOT NULL, nascimento DATE, VARCHAR2(30)) PARTITION BY HASH (codigo) PARTITIONS 2 STORE IN (users, example); Particionamento por Hash Usa um algoritmo de dados para misturar os dados entre as partições, balanceando o volume de dados UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

132 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Exemplo BEGIN FOR i IN LOOP INSERT INTO pessoa VALUES (i, 'NONO'||i, SYSDATE+i, END LOOP; COMMIT; END; / ANALYZE TABLE pessoa COMPUTE STATISTICS; SELECT table_name, partition_name, high_value, num_rows FROM user_tab_partitions WHERE table_name = 'PESSOA'; TABLE_NAME PARTITION_NAME HIGH_VALUE NUM_ROWS PESSOA SYS_P PESSOA SYS_P UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

133 Particionamento de Tabelas
Vantagens Acelera o desempenho Baixa o tempo de consulta Aumenta a disponibilidade Acesso 24x7 a informações críticas Melhora a capacidade de gerenciamento Gerencia porções menores de dados Desvantagens Consultas devem usar os mesmos critérios do particionamento Partições podem ter mais dados do que outras UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

134 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Indexação Índices de Bitmap . . . age index bit maps data records UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

135 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Indexação Índices de Bitmap Considere a seguinte consulta: Recupere as pessoas com idade = 20 e nome = “fred” Mapa de bits para idade = 20: Mapa de bits para nome = “fred”: A resposta é a interseção: UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

136 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires
Indexação Criando um Índice de Bitmap Deve ser usado Em tabelas com milhões de linhas e as colunas têm poucos valores distintos Quando tem pouca atualização de dados CREATE BITMAP INDEX emp_est_civil_idx ON empregado(estado_civil) TABLESPACE indx; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

137 Índices de Bitmap – Exemplo
CREATE TABLE paciente ( codigo NUMBER PRIMARY KEY, nome VARCHAR2(40), estcivil VARCHAR2(10), datanasc DATE, sexo CHAR(1)); BEGIN FOR i in LOOP IF MOD(i,2) = 0 THEN INSERT INTO paciente VALUES (i,'AAAAAA'||i, 'CASADO',SYSDATE-i,'F'); ELSE INSERT INTO paciente VALUES (i,'OOOOO'||i, 'SOLTEIRO',SYSDATE-i,'M'); END IF; END LOOP; COMMIT; END; UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

138 Índices de Bitmap – Exemplo
SELECT sexo, COUNT(*) FROM paciente GROUP BY sexo; SEXO COUNT(*) F M CREATE BITMAP INDEX paciente_sexo_idx ON paciente (sexo); CREATE BITMAP INDEX paciente_estcivil_idx ON paciente (estcivil); UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

139 Índices de Bitmap – Exemplo
SELECT /*+ index(paciente paciente_sexo_idx, paciente paciente_estcivil_idx) */ COUNT(*) FROM paciente WHERE sexo = 'F' AND estcivil = 'CASADO'; Plano de Execução SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=10) SORT (AGGREGATE) BITMAP CONVERSION (COUNT) BITMAP AND BITMAP INDEX (SINGLE VALUE) OF 'PACIENTE_ESTCIVIL_IDX' BITMAP INDEX (SINGLE VALUE) OF 'PACIENTE_SEXO_IDX' UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires


Carregar ppt "Data Warehousing Disciplina: Banco de Dados II"

Apresentações semelhantes


Anúncios Google