Data Warehousing e OLAP Jornadas de Engenharia Informática Instituto Politécnico da Guarda Henrique Madeira Departamento de Engenharia Informática Faculdade de Ciências e Tecnologia Universidade de Coimbra Jornadas de Engenharia Informática Instituto Politécnico da Guarda 27 e 28 de Maio de 2003 1 Para que serve uma data warehouse? Transformar os dados disponíveis numa organização em informação relevante para apoio à decisão Dar a possibilidade aos utilizadores de analisar os dados segundo uma grande variedade de critérios 2 1
Elementos básicos de uma data warehouse BDs operacionais Multidimensional server OLAP application (result analysis) Sistemas legados Ad hoc queries Folhas de cálculo, ficheiros, Fontes externas ROLAP/ MOLAP Net Relatórios estatísticos 3 Data Marts É, normalmente, um subconjunto de uma DW; Numa Data Mart os dados são focalizados numa área específica (processo de negócio); Muitas vezes uma Data Mart é feita para responder rápidamente a uma área de actividade 4 2
Arquitectura de BDs de uma organização 1 BDs operacionais Sistemas legados Data Warehouse Data Mart Folhas de cálculo, ficheiros, Fontes externas Utilizadores Utilizadores 5 Arquitectura de BDs de uma organização 2 BDs operacionais Data Mart Sistemas legados Data Warehouse Folhas de cálculo, ficheiros, Fontes externas Utilizadores Utilizadores 6 3
Sistemas fonte sistema de registo de transacções gestão de clientes, gestão de produtos, gestão de vendas, etc principais características assumidas disponibilidade pesquisas típicas limitadas a fichas individuais mantêm pouca informação histórica A obtenção de relatórios de gestão é complicada e pesada Pouca ligação com restantes sistemas da empresa registos de facturação não ligados a base de produtos ou clientes 7 Elementos básicos de uma data warehouse BDs operacionais Multidimensional server OLAP application (result analysis) Sistemas legados Ad hoc queries Folhas de cálculo, ficheiros, Fontes externas Data Staging Area ROLAP/ MOLAP Net Relatórios estatísticos 8 4
Área de processamento temporário (Staging Area) Área e processos que actuam sobre os dados fonte limpeza transformação combinação preparação Staging Area Data Warehouse 9 Metadados É necessário uma estrutura (na prática outra base de dados) para descrever os dados da DW Deve descrever: Que dados existem na DW; Qual o seu formato; Onde estão armazenados; Como se relacionam com os dados de outras bases de dados; Qual a proveniência dos dados e quem são os seus donos 10 5
Processos básicos da DW Extracção Limpeza Transformação Carregamento e indexação Tratamento de erros Utilização (pesquisas OLAP) 11 Elementos básicos de uma data warehouse BDs operacionais Multidimensional server OLAP application (result analysis) Sistemas legados Ad hoc queries Folhas de cálculo, ficheiros, Fontes externas Data Staging Area ROLAP/ MOLAP Net Relatórios estatísticos 12 6
BD operacionais vs Data Warehouses Dados operacionais Objectivos operacionais Acessos de leitura/escrita Acesso por transacções pré-definidas Acesso a poucos registos de cada vez Dados da Warehouse Registo histórico Acessos só de leitura Acesso por queries ad hoc e relatórios periódicos Muitos registos em cada acesso Dados actualizados em tempo real Estrutura optimizada para actualizações Event-driven: os processos geram dados Carregamentos periódicos de mais dados Estrutura optimizada para queries complexas Data-driven: os dados geram respostas 13 O que é o modelo multidimensional O que é que está aqui dentro?? Net 14 7
Modelo multidimensional Factos armazenados num array multidimensional; As dimensões são usadas para indexar o array; Normalmente construídas sobre bases de dados relacionais Continente Leiria Continente Coimbra Hipermercado Produto Leite Farinha Açúcar Café Vendas Jan Fev Mar Abr Data 15 Exemplo de esquema em estrela Cadeia de Lojas Tempo Dia Dia_da_semana Semana_do_ano Mês Trimestre Ano Produto Tipo Marca Categoria Embalagem Descrição Venda ID_loja Unid_vendidas Custo_compra Valor_venda Nº_Clientes Loja ID_loja Localidade Distrito Área Nº_Caixas 16 8
Modelo em estrela O modelo dimensional típico conduz a uma estrutura em estrela, contendo uma tabela central com os factos à qual estão ligadas as tabelas das dimensões Tabela dimensão 1 ID_dimensão 1 Descrição 1 Atributo Tabela dimensão 2 ID_dimensão 2 Descrição 2 Atributo Tabela Factos ID_dimensão 1 ID_dimensão 2 ID_dimensão 3 ID_dimensão 4 Facto 1 Facto 2 Facto n Tabela dimensão 3 ID_dimensão 3 Descrição 3 Atributo Tabela dimensão 1 ID_dimensão 4 Descrição 4 Atributo 17 Algumas características do modelo em estrela Tabela de Factos Constituída por atributos numéricos (factos) e pelas chaves forasteiras que a ligam à tabelas de dimensões; A tabela de factos está bastante normalizada; Contém normalmente uma enorme quantidade de registo (ocupa vulgarmente mais de 95% do espaço da DW) Tabelas de Dimensões Tabela ID_dimensão dimensão 1 Descrição 1 Atributo Tabela ID_dimensão dimensão 2 Descrição 2 Atributo Tabela Factos ID_dimensão 1 ID_dimensão 2 ID_dimensão 3 ID_dimensão 4 Facto 1 Facto 2 Facto n Há tantas dimensões quantas vertentes sob as quais se pretende analisar os factos; As tabelas de dimensões são fortemente desnormalizadas, sendo normalmente tabelas com muitos atributos; Normalmente, apesar de terem muitos atributos, contêm poucos registos (quando comparados com a tabela de factos) Tabela ID_dimensão dimensão 3 Descrição 3 Atributo Tabela ID_dimensão dimensão 14 Descrição 4 Atributo 18 9
Passos para definir modelos em estrela 1 - Identificar os processos de negócio/actividade 2 - Identificar os factos; 3 - Identificar dimensões; 4 - Escolher a ganularidade dos dados a registar Sem perder de vistas os dados efectivamente disponíveis (BDs operacionais, ficheiros, etc) 19 Exemplo - Cadeia de lojas Produto Número Marca Categoria Subcategoria Departamento Tipo_embalagem Tipo_dieta Peso Unidade_de_peso Quant_caixa Caixas_p_pallete Larg_prateleira Altura_prateleira Profun_pratelei Tempo Dia_do_mês Dia_da_semana Dia_do_ano Semana_do_ano Mês Número_do_mês Trimestre Período_fiscal Flag_feriado Flag_dia_semana Flag_últ_dia_mês Estação_ano Aconteci_espec ID_Loja ID_Promoção Unid_vendidas Custo_compra Valor_venda Nº_clientes Promoção ID_promoção Número _promo Tipo_red_preço Tipo_anúncio Tipo_cartaz Tipo_coupons Meio_anúncio Meio_cartaz Custo_promoção Início_promoção Fim_promoção Loja ID_loja Número_loja Endereço Localidade Código_postal Distrito Região Telefone Gestor_loja Área_total Área_mercearias Área_congelados Área_bazar Nº_Caixas Data_inauguração Data_ult_remod 20 10
Dimensão tempo Tempo Dia_do_mês Dia_da_semana Dia_do_ano Semana_do_ano Mês Número_do_mês Trimestre Período_fiscal Flag_feriado Flag_dia_semana Flag_último_dia_mês Estação_ano Acontecimento_espec Existe sempre, pois representa a dependência temporal inerente à DW; Deve descrever o tempo tal como ele é visto para fins de gestão da actividade (negócio) em causa; Deve conter a caraterização do tempo nos atributos pelos quais se pretende posteriormente fazer pesquisas; É gerada, normalmente, de uma forma sintética (ie, sem ser a partir de uma BD operacional) para todo o período de tempo considerado na DW 21 Dimensão produto Produto Número Marca Categoria Subcategoria Departamento Tam_embalagem Tipo_embalagem Tipo_dieta Peso Unidade_de_peso Quantidade_caixa Caixas_por_pallete Largura_prateleira Altura_prateleira Profud_prateleira Deve conter a caraterização dos produtos tal como eles são vistos pelo gestor da cadeia de lojas; Contém todos os atributos pelos quais se pretende posteriormente fazer perguntas; Como acontece normalmente nas tabelas de dimensões, é uma tabela bastante desnormalizada 22 11
Dimensão loja Loja ID_loja Número_loja Endereço Localidade Código_postal Distrito Região Telefone Fax Gestor_loja Área_total Área_mercearias Área_congelados Área_bazar Nº_Caixas Data_inauguração Data_ultim_remod Contém a caraterização das lojas tal como eles são vistos pelo gestão da cadeia de lojas; Contém todos os atributos pelos quais se pretende posteriormente fazer perguntas, incluindo atributos de natureza geográfica (localização) e de natureza temporal (datas de inauguração, ) 23 Dimensão promoções Promoção ID_promoção Número _promo Tipo_red_preço Tipo_anúncio Tipo_cartaz Tipo_coupons Meio_anúncio Meio_cartaz Custo_promoção Início_promoção Fim_promoção Contém a caraterização das promoções efectuadas; Neste exemplo há apenas uma dimensão de promoções (para todos os tipos de promoções), mas seria possível ter em alternativa uma dimensão para cada tipo de promoção; A dimensão promoção representa, neste exemplo, uma dimensão muito sensível e importante, pois as promoções são um dos aspectos em que o gestor mais facilmente pode actuar quando pretende incrementar as vendas numa loja ou num determinado produto 24 12
Análise dos dados (ferramentas OLAP) Produto Número Marca Categoria Subcategoria Departamento Tipo_embalagem Tipo_dieta Peso Unidade_de_peso Quant_caixa Caixas_p_pallete Larg_prateleira Altura_prateleira Profun_pratelei Tempo Dia_do_mês Dia_da_semana Dia_do_ano Semana_do_ano Mês Número_do_mês Trimestre Período_fiscal Flag_feriado Flag_dia_semana Flag_últ_dia_mês Estação_ano Aconteci_espec ID_Loja ID_Promoção Unid_vendidas Custo_compra Valor_venda Nº_clientes Promoção ID_promoção Número _promo Tipo_red_preço Tipo_anúncio Tipo_cartaz Tipo_coupons Meio_anúncio Meio_cartaz Custo_promoção Início_promoção Fim_promoção Loja ID_loja Número_loja Endereço Localidade Código_postal Distrito Região Telefone Gestor_loja Área_total Área_mercearias Área_congelados Área_bazar Nº_Caixas Data_inauguração Data_ult_remod Select avg(valor_venda x Unid_vendidas) from Venda V, Tempo T, Produto P where JOIN_TABELAS group by PMarca, T Mês 25 Mais do que uma estrela Loja Vendas ID_Loja Unid_vendidas Custo_compra Valor_venda Nº_Clientes Tempo Produto Existências ID_tempo ID_armazém Quant_existente Quant_saída Valor_de_custo Últim_preço_venda Armazém Uma ou mais estrelas interligam-se por uma ou mais dimensões; As dimensões que promovem a interligação têm de ser conformes (conter informação consistente entre si); Drill across: consulta à DW que cruza mais do que uma estrela 26 13
Exemplo de dimensões conformes Dimensão_1 Dimensão_5 Dimensão_4 Tabela de Factos Dimensão_2 Tabela de Factos Dimensão_6 Dimensão_1 Dimensão_3 Dimensão_7 Dimensão10 Tabela de Factos Dimensão_9 Dimensão_8 Têm de ser conformes 27 Será que é tudo tão simples? As dimensões nem sempre são pequenas As dimensões nem sempre são estáticas É difícil definir o modelo multidimensional para alguns negócios Há relacionamentos M para N entre dimensões e factos Etc, etc, etc E ainda os grandes problemas Espaço ocupado Velocidade de execução das queries 28 14
Exemplo - Cadeia de lojas Produto Número Marca Categoria Subcategoria Departamento Tipo_embalagem Tipo_dieta Peso Unidade_de_peso Quant_caixa Caixas_p_pallete Larg_prateleira Altura_prateleira Profun_pratelei Tempo Dia_do_mês Dia_da_semana Dia_do_ano Semana_do_ano Mês Número_do_mês Trimestre Período_fiscal Flag_feriado Flag_dia_semana Flag_últ_dia_mês Estação_ano Aconteci_espec ID_Loja ID_Promoção Unid_vendidas Custo_compra Valor_venda Nº_clientes Promoção ID_promoção Número _promo Tipo_red_preço Tipo_anúncio Tipo_cartaz Tipo_coupons Meio_anúncio Meio_cartaz Custo_promoção Início_promoção Fim_promoção Loja ID_loja Número_loja Endereço Localidade Código_postal Distrito Região Telefone Gestor_loja Área_total Área_mercearias Área_congelados Área_bazar Nº_Caixas Data_inauguração Data_ult_remod 29 Cálculo simplificado do espaço ocupado Granularidade = Produtos vendidos / em cada loja / em cada dia Tempo = 3 anos Nº Produtos = 100000 (apenas 20% dos produtos são vendidos diariamente) Lojas = 100 Tamanho médio de registo = 8 atributos x 4 Bytes = 32 Bytes Nº de registos de factos = 3 x 365 x 20000 x 100 = 2190000000 Tamanho aproximado da DW = 32 x 2190000000 = 70 GBytes Despreza-se o espaço ocupado pelas tabelas de dimensões; Não considera o armazenamento dos índices nem vistas materializadas; 30 15
Como acelerar as respostas a queries? Bom projecto lógico dos esquemas em estrela Bom projecto físico (as coisas básicas) Infraestrutura HW + SO + SGDB correctamente administrada e afinada Cuidados particulares com os sistemas de discos (vários discos, particionamento, RAID) Parâmetros físicos correctos para as tabelas (e todos os outros objectos) Correcta indexação (B*Tree e Bit-map) com parametros físicos correctamente definidos Manutenção das estatísticas do SGBD para permitir optimização das queries Usar agregados (vistas materializadas) Afinar, afinar, afinar Usar processamento paralelo/distribuído Redução de dados 31 Redução de dados e sumarização Net Net 32 16
Processamento distribuído e paralelo Net Net 33 17