Data Warehousing Disciplina: Banco de Dados II

Slides:



Advertisements
Apresentações semelhantes
«Forte do Bom Sucesso (Lisboa) – Lápides 1, 2, 3» «nomes gravados, 21 de Agosto de 2008» «Ultramar.TerraWeb»
Advertisements

Ana Paula B. Barboza Ivana Xavier Rodrigues
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
INFORMAÇÕES COMPLEMENTARES
Propriedades físicas representativas de
Sistemas de Informações Gerenciais
A busca das mulheres para alcançar seu espaço dentro das organizações
SQL Avançado Continuação
João Lúcio de Azevedo ESALQ/USP, UMC, UCS, CBA
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Data Warehouse Tuning O que é um Data Warehouse? Índices Bitmap
Visões Marilde Santos.
Maurício Edgar Stivanello
Curso de ADMINISTRAÇÃO
Sistema Gerenciador de Banco de Dados SGBD
OLAP – Motivação e conceitos
Sistema Gerenciador de Banco de Dados SGBD
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
Operadores Especiais da SQL
SCC Bancos de Dados e Suas Aplicações
Material III-Bimestre Wagner Santos C. de Jesus
7.1 © 2004 by Pearson Education 7 7 ADMINISTRAÇÃO DOS RECURSOS DE DADOS Capítulo.
Data Warehouse Um Data Warehouse é um armazém de dados, contendo dados extraídos do ambiente de produção da empresa. De acordo com INMON (1997), um.
Aula 4 Nomes, Vinculações, Tipos e Escopos
Banco de dados Profª Kelly Medeiros.
Renda até 2 SM.
Indicadores do Mercado de Meios Eletrônicos de Pagamento
Query Tuning Lílian Simão Oliveira.
Diagnósticos Educativos = Diagnósticos Preenchidos 100% = 1.539
Desenvolvimento de Sistemas OLAP
PROCESSOS PRINCIPAIS Alunos - Grau de Satisfação 4971 avaliações * Questões que entraram em vigor em 2011 ** N.A. = Não Aplicável Versão: 07/02/2012 INDICADORES.
Banco de Dados II Prof. Antônio Cordeiro.
Trabalho sobre Cor Thiago Marques Toledo.
Indicadores do Mercado de Meios Eletrônicos de Pagamento Setembro de 2006.
Indicadores do Mercado
1 Indicadores do Mercado de Meios Eletrônicos de Pagamento Junho de 2006 Indicadores do Mercado de Meios Eletrônicos de Pagamento Junho de 2006.
1 Indicadores do Mercado de Meios Eletrônicos de Pagamento Dezembro de 2006.
Os números a seguir, representam as notas de
Funcionários - Grau de Satisfação 2096 avaliações
PERFIL DOS BENEFICIÁRIOS E NÃO-BENEFICIÁRIOS DO PROGRAMA BOLSA FAMÍLIA EM TERMOS DE MERCADO DE TRABALHO: CONSIDERAÇÕES METODOLÓGICAS E SUBSTANTIVAS Alessandra.
Design Patterns / Acesso ao banco de dados (java.sql)
Tributação da Exportação nas Empresas optantes pelo Simples Nacional
Business Intelligence:
Projeto Medindo minha escola.
SÉRIES ESTATÍSTICAS.
Projeto de Banco de Dados
Data Mining: Conceitos e Técnicas
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
CONCEITOS FUNDAMENTAIS
Olhe fixamente para a Bruxa Nariguda
3ª PESQUISA DE REMUNERAÇÃO
Equipe Bárbara Régis Lissa Lourenço Lucas Hakim Ricardo Spada Coordenador: Gabriel Pascutti.
Baseado no material do Professor Raul Paradeda
LEILÃO nº 3/2014 Dia 12 de setembro, às 14 horas.
Banco de Dados Aplicado ao Desenvolvimento de Software
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
ASSUNTO Facilitando a Tomada de Decisão em um Ambiente Móvel Mohamed A. Sharaf Panos K. Chrysanthis Felipe Menezes Cardoso COPIN – UFCG Banco de Dados.
Uma proposta para OLAP ontológica Adriana Ribeiro.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Data Warehousing Disciplina: Banco de Dados II
Modelagem Dimensional do Data Warehouse
Janeiro/2013 Ceça Moraes Data Warehouse Janeiro/2013 Ceça Moraes
INTELIGÊNCIA EMPRESARIAL Aula 9 - Modelagem de Data Warehouse.
INTELIGÊNCIA EMPRESARIAL Aula 8 - Metadados e Operações OLAP.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Transcrição da apresentação:

Data Warehousing Disciplina: Banco de Dados II Professor: Carlos Eduardo Pires cesp@dsc.ufcg.edu.br

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

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

Abordagens para Integração de Dados

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

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

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

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

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

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

Data Warehouse

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Processo de Data Warehousing

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

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

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

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

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

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

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

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

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

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

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

Modelando um Data Warehouse

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

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

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

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

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

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

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

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

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

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

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

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

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: http://download.oracle.com/docs/cd/E10530_01/doc/epm.931/html_esb_dbag/frameset.htm?dinconc.htm UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 = 730 dias (linhas) Dimensão Loja: 300 lojas Dimensão Produto: 30.000 produtos Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 75

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 3.000 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

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 657.000.000 x 8 x 4 = 21GB Data Warehousing - Prof. Carlos Eduardo Santos Pires UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 77

Ferramentas OLAP

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

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

Exemplo de Relatório OLAP Data Warehousing - Prof. Carlos Eduardo Santos Pires 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 82

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

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

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

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

SQL para OLAP

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

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

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

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','88847654'); INSERT INTO aluno VALUES (2,'MARIA','EE','89887112'); INSERT INTO aluno VALUES (3,'PAULO','EM','99817638'); 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

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

UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires Merge – Exemplo 01 INSERT INTO aluno VALUES (4,'ZILDA','CC','81318630'); 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 13000 80 SA_MAN 13750 90 AD_VP 17000 90 AD_PRES 24000 AD_VP 100 17000 MK_MAN 100 13000 SA_MAN 100 13750 AD_PRES 24000 16416,6667 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

Otimizações

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

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

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

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

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

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 40 DESODORANTE 160 NESCAU 675 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

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 40 DESODORANTE 160 NESCAU 675 COMMIT; NM_PRODUCT SUM(S.VALUE) ------------------------------- --------------------- AGUA MINERAL 54 DESODORANTE 160 NESCAU 675 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

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

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 ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=327 Bytes=9810) 1 0 TABLE ACCESS (FULL) OF 'DEPT_EMP' (Cost=2 Card=327 Bytes=9810) UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

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

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

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

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

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

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

UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires Exemplo CREATE OR REPLACE PROCEDURE carrega IS BEGIN FOR i in 1..100000 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

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 P1 250000 499998 EXEMPLO P2 500000 500000 EXEMPLO P3 750000 500000 EXEMPLO P4 MAXVALUE 500002 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

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

UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires Exemplo BEGIN FOR i in 1..1000 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

Particionamento de Tabelas CREATE TABLE pessoa ( codigo NUMBER(7) NOT NULL, nome VARCHAR2(150) NOT NULL, nascimento DATE, email 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

UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires Exemplo BEGIN FOR i IN 1..10000 LOOP INSERT INTO pessoa VALUES (i, 'NONO'||i, SYSDATE+i, i||'@empresa.com'); 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_P21 4992 PESSOA SYS_P22 5008 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

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

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

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: 1101100000 Mapa de bits para nome = “fred”: 0100000001 A resposta é a interseção: 010000000000 UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires

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

Í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 1..10000 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

Índices de Bitmap – Exemplo SELECT sexo, COUNT(*) FROM paciente GROUP BY sexo; SEXO COUNT(*) -------- ---------- F 5000 M 5000 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

Í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 ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=10) 1 0 SORT (AGGREGATE) 2 1 BITMAP CONVERSION (COUNT) 3 2 BITMAP AND 4 3 BITMAP INDEX (SINGLE VALUE) OF 'PACIENTE_ESTCIVIL_IDX' 5 3 BITMAP INDEX (SINGLE VALUE) OF 'PACIENTE_SEXO_IDX' UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires