Data WarehousingData Warehousing
Disciplina: Banco de Dados IIProfessor: Carlos Eduardo [email protected]
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 2
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
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
Abordagens para Integração de Dados
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 5
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
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
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
Integração de Dados
Principais Abordagens Abordagem Virtual (Mediadores)
Consulta as 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
Data Warehouse
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 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
Integrado
Variante noTempoNão-volátil
Orientado aAssunto
DataWarehouse
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 15
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 Financeirasdos Clientes
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 16
Integrado
Data WarehouseAplicações OLTP
Cliente
Poupança
Contas
Empréstimos
Os dados de um determinado assunto são definidos e armazenados apenas uma vez
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 17
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
Não-Volátil
Dados são materializados no DW
Data Warehouse
Leitura
Carga
Operacional
Inserção, Atualização, Remoção e/ou 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
AtualizarEliminar ou
Arquivar
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 20
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
Data Mart
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 22
Data Mart
DW Corporativo
Data Mart Vendas & Marketing Data Mart Garantia & Suporte
Clientes
Clientes Clientes
1998_Vendas1999_Vendas2000_Vendas1998_Garantia1998_Suporte...
1998_Vendas1999_Vendas2000_Vendas...
1998_Garantia...1998_Suporte...
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 23
Data Warehouse x Data Mart
MesesMeses a anosTempo de Implementação
PoucasVáriasFonte de Dados
Um único assuntoVáriosAssuntos
DepartamentoEmpresaEscopo
Data MartData WarehousePropriedade
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 24
Movendo Dados de um Data Warehouse para Data Marts
Vantagens Campos compartilhados Fonte comum Processamento distribuído
Mart SuporteMart Suportea clientesa clientes
Mart VendasMart Vendas
DataDataWarehouseWarehouse Mart FinançasMart Finanças
Fonte 1Fonte 1
Fonte 2Fonte 2
Fonte 3Fonte 3
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
DataDataWarehouseWarehouse
Mart VendasMart Vendas
Mart FinançasMart Finanças
Mart SuporteMart Suportea clientesa clientes
Fonte 1Fonte 1
Fonte 2Fonte 2
Fonte 3Fonte 3
Vantagens Mais simples e rápido Dados específicos de
cada departamento
Desvantagens Duplicação de dados Data Marts incompatíveis
Processo de Data Warehousing
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 27
Componentes do Processo de Data Warehousing
Fontes de Dados
Área dePreparação
Área deArmazenamento
Ferramentasde Acesso
ODS
Operacional
Externa
Legado
Repositório de Metadados
Data Marts
Data Warehouse
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 28
Um Sistema de Data Warehousing
Dados noAmbiente
OLAP
Data MartsDataWarehouse
Dados deSistemas
Operacionais
Compras
Produção
ContábilDados
da EmpresaOLTP
OLTP
OLTPVendas
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 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
Origem DestinoÁrea de Preparação
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
Limpeza de Dados
Candidato
Bairro
José Boa ViagemMaria B. ViagemPedro BVMário Boa Viag.Marta B.V.Priscila B ViagemAdolf Boa Viajem...
Candidato
Bairro
José Boa ViagemMaria Boa ViagemPedro Boa ViagemMário Boa ViagemMarta Boa ViagemPriscila Boa ViagemAdolf Boa Viagem...
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 34
Ferramentas de ETL: Oracle Warehouse Builder
Modelando um Data Warehouse
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 36
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 37
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 38
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 39
Modelagem Multidimensional
Outros Exemplos de Dimensões
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 40
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 41
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 42
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 43
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 44
Processamento OLAP
OLAP (On-line Analytical Processing) Aplicado sobre estruturas dimensionais 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 45
Processamento OLAP x OLTP
AnáliseProcessosAtividades
Operacional, Interna, Externa
Operacional, InternaFontes de Dados
Grande para Muito Grande
Pequeno para grandeTamanho
Assunto, tempoAplicaçãoOrganização dos Dados
Snapshots no tempo30 – 60 diasNatureza dos dados
LeituraDMLOperações
Segundos para horasMilisegundos para segundos
Tempo de Resposta
OLAPOLTPPropriedade
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 46
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 47
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
SGBD
Cubo
Dados MOLAP
AgregaçõesMOLAP
Armazena cópia da tabela fato e dimensões
Armazena agregações
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 48
MOLAP (Multidimensional OLAP)TE
MPO
CLIE
NTE
PRODUTO
Calça
Têni
s
Casa
co
Mei
a1999
2000
2001
2002 Cliente 1
Cliente 2
VendasVendas
Qual o total de vendasde 'Meias' do 'Cliente 1'em '2001'?
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 49
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 ROLAPDados ROLAP
Agregações ROLAPAgregações ROLAP
SGBD
Agregações são armazenadasem tabelas relacionais
Dados-base são mantidos no SGBD-fonte
Estrutura totalmente relacional
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 50
HOLAP (Hybrid OLAP)
Data Warehouse ou Data Mart
Dados ROLAPDados ROLAP
SGBD
Cubo
AgregaçõesMOLAP
Dados-base mantidosno BD fonte
Agregações calculadas earmazenadas no cubo
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 51
MOLAP vs. ROLAP vs. HOLAP
Perspectiva do ClientePerspectiva do Cliente MOLAPMOLAP HOLAPHOLAP ROLAPROLAP
ArmazenamentoArmazenamento
Dados de base
Agregações
Desempenho de consulta
Consumo em disco
Manutenção do cubo
MOLAPMOLAP
Cubo
Cubo
Imediato
Alto
Alto
HOLAPHOLAP
TabelaRelacional
Cubo
Mais rápido
Médio
Médio
ROLAPROLAP
TabelaRelacional
TabelaRelacional
Rápido
Baixo
Baixo
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 52
Modelo Estrela (“Star Schema”)Dimensão ProdutoProduto_idDescrição,...
Dimensão TempoTempo_idDiaMêsAno,...
Fatos “Vendas”Produto_idLoja_idTempo_idCliente_idValor_vendasTotal_vendas,...
Dimensão ClienteCliente_idNome,...
Dimensão LojaLoja_idCidade,...
Tabela de Fatos Dimensões
Desnormalizadas
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 53
Modelo Estrela (“Star Schema”)
Geográfica Produto Tempo Und. $
Tabelas deDimensão
GeográficaGeográfica
ProdutoProduto
TempoTempo
Tabela-FatoMedidas
FatosFatos
DimensãoDimensão
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 54
Modelo Estrela (“Star Schema”)
Tabela FatoDimension TableDim_TempoDim_Tempo
Chave_TempoData...
Fato_VendasChave_TempoChave_FuncionarioChave_ProdutoChave_ClienteChave_Entregador
Qtd-ProdValor-Total…...
Dim_FuncionarioDim_FuncionarioChave_FuncionarioCodigo_Funcionario...
Dim_ProdutoDim_ProdutoChave_ProdutoCodigo_Produto...
Dim_ClienteDim_ClienteChave_ClienteCodigo_Cliente...
Dim_EntregadorDim_EntregadorChave_EntreegadorCodigo_Entregador...
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 55
Modelo Estrela (“Star Schema”)
saleorderId
datecustIdprodIdstoreId
qtyamt
customercustIdname
addresscity
productprodIdnameprice
storestoreId
city
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 56
Modelo Estrela (“Star Schema”)
customer custId name address city53 joe 10 main sfo81 fred 12 main sfo
111 sally 80 willow la
product prodId name pricep1 bolt 10p2 nut 5
store storeId cityc1 nycc2 sfoc3 la
sale oderId date custId prodId storeId qty amto100 1/7/97 53 p1 c1 1 12o102 2/7/97 53 p2 c1 2 11105 3/8/97 111 p1 c3 5 50
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 57
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 58
Modelo Flocos de Neve (“Snowflakes”)
Tabelas-Dimensão Secundárias
Fato_VendasChave_TempoChave_FuncionarioChave_ProdutoChave_ClienteChave_Entregador
RequiredDate...
MarcaProdutoMarcaProdutoCodigoMarca
CodigoCategoria
CategoriaCategoriaCodigoCategoria
Nome
Dim_ProdutoDim_ProdutoChave_ProdutoNome
Tamanho
CodigoMarca
Tabela-Dimensão Principal
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 59
Modelo Flocos de Neve (“Snowflakes”)
LOJA
CLIENTE
PRODUTO
VendasCusto
TEMPO
CIDADE
ESTADO
SUBCATEGORIA
CATEGORIA
Dimensões Normalizadas
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 60
Modelo Flocos de Neve (“Snowflakes”)
store storeId cityId tId mgrs5 sfo t1 joes7 sfo t2 freds9 la t1 nancy
city cityId pop regIdsfo 1M northla 5M south
region regId namenorth cold regionsouth warm region
sType tId size locationt1 small downtownt2 large suburbs
storesType
city region
snowflake schema constellations
Hierarquia entre Dimensões
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 61
Escolhendo uma Modelagem Multidimensional
Star SchemaStar Schema SnowflakeSnowflake
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 62
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 63
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 64
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 Tentar minimizar o número de registros que mudam ao
longo do tempo
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 65
Identificando Hierarquias de Dimensões
Hierarquia Consolidada
Local da Loja
ContinenteContinente PaísPaís RegiãoRegião CidadeCidade LojaLoja
Hierarquia em Separado
Local da LojaLocal da LojaContinente
ContinenteContinentePaís
PaísPaísRegião
RegiãoRegiãoCidade
CidadeCidadeLoja
LojaLoja01
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 66
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 67
Tempo
ProdutoLocal
Dimensão
Q4Q1 Q2 Q3
Uvas
Maçãs
Melões
Cerejas
Pêras
Atlanta
DenverDetroit
Membro
Célula
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
Dia 1Dia 1 Dia 2Dia 2 ......
Jan.Jan. Fev..Fev.. ......
19981998 19991999 ......
Níveis
Terminologia
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 68
Q4
TempoQ1 Q2 Q3
ProdutoUvas
Maçãs
Melões
Cerejas
Peras
LocalAtlanta
DenverDetroit
Sales
ProdutoUvas
Maçãs
Melões
Cerejas
Peras
ProdutoUvas
Maçãs
Melões
Cerejas
Pêras
LocalAtlanta
DenverDetroit
Sales
Operações no Cubo
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 69
Dimensões Compartilhadas
Fatos 1
Dimensão 1
Dimensão 2
Dimensão 3
Dimensão 4
Fatos 2
Dimensão 5
Dimensão 6
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 70
Fatos & Fatos?
Fatos 2
Dimensão 1
Dimensão 2
Fatos 1
Dimensão 5
Dimensão 6
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 71Data Warehousing - Prof. Carlos Eduardo Santos Pires 71
Tamanho de um DW
Fato: Vendas
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 72Data Warehousing - Prof. Carlos Eduardo Santos Pires 72
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
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 73Data Warehousing - Prof. Carlos Eduardo Santos Pires 73
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 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
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 74Data Warehousing - Prof. Carlos Eduardo Santos Pires 74
Tamanho de um DW
Número de campos chaves = 4 Número de campos fatos = 4 Total de campos = 8 (de 4 bytes, cada um) Tamanho da Tabela de Fatos
657.000.000 x 8 x 4 = 21GB
Ferramentas OLAP
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 76
Ferramentas OLAP
DW
BDFerramentas deApresentação
Ferramentas OLAP
Ferramentas de Mineração de Dados
Ferramentas deApresentação
CAMADA DE “FRONT-END”
Executivo
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 77
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 78Data Warehousing - Prof. Carlos Eduardo Santos Pires 78
Exemplo de Relatório OLAP
Produto Região Vendas noMês
Comparaçãocom o Mês
AnteriorPasta Colgate Sul 110 **12%Pasta Colgate Sudeste 179 -3%Pasta Colgate Nordeste 55 5%
Total 344 **6%
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 79Data Warehousing - Prof. Carlos Eduardo Santos Pires 79
Exemplo de Relatório OLAP
Produto Região Tamanho Vendas noMês
Comp. Como Mês
AnteriorColgate Sul A 34 **10%Colgate Sul B 36 **13%Colgate Sul C 40 **11%Colgate Total 110 **12%Colgate Sudeste A 63 -2.8%Colgate Sudeste B 60 -3.1%Colgate Sudeste C 56 -2.9%Colgate Total 179 -3%Colgate Nordeste A 19 5%Colgate Nordeste B 17 4%Colgate Nordeste C 19 6%Colgate Total 55 5%
Total 344 6%
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 80Data Warehousing - Prof. Carlos Eduardo Santos Pires
Exemplo de Relatório OLAPProduto Região Equipe de
VendasVendas no
MêsComp.Com o
MêsAnterior
Colgate Sul P. Alegre 52 **21%Colgate Sul Curitiba 28 5%Colgate Sul Florianóp. 30 6%Colgate 110 **12%Colgate Sudeste São Paulo 93 4%Colgate Sudeste Rio 75 5%Colgate Sudeste Belo Horiz. 11 -15%Colgate 179 -3%Colgate Nordeste Salvador 21 5%Colgate Nordeste Fortaleza 18 4%Colgate Nordeste Recife 16 6%Colgate 55 5%
Total 344 6%
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 81
Ferramentas OLAP: Oracle Discoverer
TABULAÇÃO CRUZADA
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 82
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 83
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
SQL para OLAP
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 85
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 86
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 87
Merge – Exemplo 01
ALUNO ALUNO2
INSERT XOR UPDATE
Origem Destino
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 88
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), curso VARCHAR2(10), telefone VARCHAR2(20), codigo NUMBER);
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 89
Merge – Exemplo 01CREATE SEQUENCE seq_aluno;
CREATE OR REPLACE PROCEDURE atualiza ISBEGIN
MERGE INTO aluno2 a2USING aluno aON (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 90
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 91
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 92
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 93
Merge – Exemplo 02
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);
subconjunto de employee
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 94
Cubo 2D
sale prodId storeId amtp1 c1 12p2 c1 11p1 c3 50p2 c2 8
c1 c2 c3p1 12 50p2 11 8
Fact table: Multi-dimensional cube:
dimensions = 2
GROUP BY storeId, prodId
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 95
Cubo 3D
sale prodId storeId date amtp1 c1 1 12p2 c1 1 11p1 c3 1 50p2 c2 1 8p1 c1 2 44p1 c2 2 4
day 2 c1 c2 c3p1 44 4p2 c1 c2 c3
p1 12 50p2 11 8
day 1
dimensions = 3
Multi-dimensional cube:Fact table:
GROUP BY storeId, prodId, date
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 96
Agregação
sale prodId storeId date amtp1 c1 1 12p2 c1 1 11p1 c3 1 50p2 c2 1 8p1 c1 2 44p1 c2 2 4
• Soma de quantidade (amt) em um dia (dia 1)• Em SQL: SELECT SUM(amt)
FROM saleWHERE date = 1;
81
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 97
Agregação
sale prodId storeId date amtp1 c1 1 12p2 c1 1 11p1 c3 1 50p2 c2 1 8p1 c1 2 44p1 c2 2 4
• Soma quantidade (amt) por dia• Em SQL: SELECT date, SUM(amt)
FROM saleGROUP BY date;
ans date sum1 812 48
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 98
Agregação
sale prodId storeId date amtp1 c1 1 12p2 c1 1 11p1 c3 1 50p2 c2 1 8p1 c1 2 44p1 c2 2 4
• Soma quantidade (amt) por dia e produto• Em SQL: SELECT date, prodId, SUM(amt)
FROM saleGROUP BY date, prodId
sale prodId date amtp1 1 62p2 1 19p1 2 48
drill-down
rollup
Desconsidera storeId
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 99
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 100
Agregação no Cubo
day 2 c1 c2 c3p1 44 4p2 c1 c2 c3
p1 12 50p2 11 8
day 1
c1 c2 c3p1 56 4 50p2 11 8
c1 c2 c3sum 67 12 50
sump1 110p2 19
129
. . .
drill-down
rollup
GROUP BY storeId, prodId, date
GROUP BY storeId, prodId
GROUP BY storeId
GROUP BY prodId
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 101
Operadores do Cubo
day 2 c1 c2 c3p1 44 4p2 c1 c2 c3
p1 12 50p2 11 8
day 1
c1 c2 c3p1 56 4 50p2 11 8
c1 c2 c3sum 67 12 50
sump1 110p2 19
129
. . .
sale(c1,*,*)
sale(*,*,*)sale(c2,p2,*)
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 102
Operadores do Cubo
c1 c2 c3 *p1 56 4 50 110p2 11 8 19* 67 12 50 129day 2 c1 c2 c3 *
p1 44 4 48p2* 44 4 48
c1 c2 c3 *p1 12 50 62p2 11 8 19* 23 8 50 81
day 1
*
sale(*,p2,*)
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 103
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 104
Operador ROLLUP
SELECT department_id, job_id, SUM(salary)FROM employeesWHERE department_id < 60GROUP BY ROLLUP(department_id, job_id);
12
3
Total de Combinações: n + 1
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 105
Operador CUBE
SELECT department_id, job_id, SUM(salary)FROM employeesWHERE department_id < 60GROUP BY CUBE (department_id, job_id) ;
12
3
4
Total de Combinações: 2n
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 106
Grouping Sets
SELECT department_id, job_id, manager_id,avg(salary)FROM employeesGROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id),());
…1
2
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 107
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
Otimizações
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 109
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.View created.
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 110
Visões (Virtual)
USER_VIEWSUSER_VIEWS EMPVU80EMPVU80SELECT employee_id, last_name, salaryFROM employeesWHERE department_id=80;
Aplicação
SELECT *FROM empvu80;
EMPLOYEES
Servidor de Servidor de Banco de DadosBanco de Dados
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 111
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 112
Visões Materializadas
CREATE MATERIALIZED VIEW relatorio_clienteREFRESH COMPLETEENABLE QUERY REWRITE ASSELECT c.nome_cliente, SUM(f.valor) AS totalFROM fatos_vendas f, dim_cliente cWHERE f.cliente_id = c.cliente_idGROUP BY c.nome_cliente;
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 113
Visões Materializadas – Exemplo 1
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;
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));
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 114
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 115
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;
SELECT * FROM product_sales_mv;
NM_PRODUCT SUM(S.VALUE) ------------------------------- --------------------- AGUA MINERAL 54 DESODORANTE 160 NESCAU 675
Mesmo resultado anterior
Resultado atualizado após o COMMIT
Provoca a rematerialização da visão
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 116
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 117
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 118
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 119
Particionamento de Tabelas Tabelas Particionadas
Decomposição de grandes tabelas em pedaços menores chamados partições
Tipos de Particionamento Faixa, Lista, Hash
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 120
Particionamento de Tabelas
CREATE TABLE cliente (codigo NUMBER(5) NOT NULL,nome VARCHAR2(100),estado CHAR(2))TABLESPACE usersPARTITION 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 121
Particionamento de Tabelas 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 able_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 122
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 123
Particionamento de Tabelas Exemplo
CREATE TABLE exemplo (id NUMBER, nome VARCHAR2(30));
CREATE OR REPLACE PROCEDURE carrega IS BEGIN FOR i in 1..1000000 LOOP INSERT INTO exemplo VALUES (i,'AAAA'||i); END LOOP; COMMIT; END; /
EXEC carrega
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 124
Particionamento de Tabelas
Exemplo @d:\oracle\ora92\rdbms\admin\utlxplan.sql SET autotrace traceonly
SQL> SELECT * from exemplo where id = 1001; ID NOME ---------- ------------------------------ 1001 AAAA1001
Plano de Execução -------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (FULL) OF 'EXEMPLO'
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 125
Particionamento de Tabelas
Exemplo DROP TABLE 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 126
Particionamento de Tabelas
Exemplo EXEC carrega
SELECT * FROM exemplo WHERE id BETWEEN 1 AND 250000; 250000 linhas selecionadas.
Plano de Execução ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=145 Card=305
Bytes=9150) 1 0 PARTITION RANGE (ITERATOR) 2 1 TABLE ACCESS (FULL) OF 'EXEMPLO' (Cost=145 Card=305
Bytes=9150)
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 127
Indexação Índices de Bitmap
2023
1819
202122
232526
id name age1 joe 202 fred 203 sally 214 nancy 205 tom 206 pat 257 dave 218 jeff 26
. . .
ageindex
bitmaps
datarecords
110110000
0010001011
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 128
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 Deve ser usado
Em tabelas com milhões de linhas e as colunas chave têm poucos valores distintos
Quando tem pouco update das colunas chave
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 129
Indexação Criando um Índice de Bitmap
CREATE BITMAP INDEX emp_est_civil_idxON empregado(estado_civil)TABLESPACE indx;
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 130
Í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', 'CASADO',SYSDATE-i,'F'); ELSE INSERT INTO paciente VALUES (i,'OOOOO', 'SOLTEIRO',SYSDATE-i,'M'); END IF; END LOOP; COMMIT; END;
UFCG/CEEI/DSC - Banco de Dados II - Prof. Carlos Eduardo Pires 131
Í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 132
Í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'
Top Related