Carregar apresentação
A apresentação está carregando. Por favor, espere
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 ( 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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.