Data Warehouse Tuning O que é um Data Warehouse? Índices Bitmap Índices Multidimensionais Vistas Materializadas Índices Join Um Data Warehouse é... ...uma fonte única e integrada de informação de suporte à decisão que é formada recolhendo dados de múltiplas fontes, quer internas ou externas à organização, e que transforma e sumariza essa informação para permitir o melhoramento da tomada de decisões. Motivação Objectivo – Acumular informação para produzir indicadores de negócio que permitam tomar decisões. Finalidade - Possibilitar aos utilizadores um acesso fácil a grandes quantidades de informação, sendo este acesso normalmente, suportado por ferramentas especializadas em análise de dados. Contexto (em comparação com os Sistemas Operacionais) Introduzir uma nova encomenda Obter as 10 encomendas de maior valor que não foram entregues Cubo de Dados Formato lógico que permite modelar e visualizar dados sob várias perspectivas É constituído por: Tabelas de dimensões Tabela de factos Representam o tema central do cubo Consiste em medidas numéricas pelas quais queremos analisar as relações existentes entre as dimensões Índices Bitmap Constroiem-se para uma coluna de cada vez. Quando usar? Tabelas que não têm ou têm poucos Inserts / Updates são boas candidatas. Índices Bitmap Adequam-se melhor a múltiplas condições sobre vários atributos que tenham cardinalidade baixa(poucas valores únicos). Índices Bitmap Constrói-se um vector bi-dimensional AxB sendo A os valores distintos que a coluna indexada tem e B o número de registos da tabela. Cada índice desse vector corresponde a um campo da tabela e está a 1 se a linha que estamos a considerar possui esse valor na coluna indexada. Índices Multidimensionais – Bitmap Operações de comparação, join e agregados são mais eficientes porque se reduzem a operações de aritmética binária Índices Multidimensionais – R-Tree Índices Multidimensionais – R-Tree Índices Multidimensionais – R-Tree É uma árvore com pesos (height-balanced tree) com índices registo nos nós folha que contêm apontadores para os objectos de dados. Os nós folha têm entradas da forma (I, id_tuplo), sendo I o rectângulo mais pequeno que contêm, espacialmente, o objecto de dados n-dimensional representado pelo tuplo indicado. Nos nós não-folha as entradas são da forma (I, ponteiro_filho) onde I é o rectângulo mais pequeno que cobre todos os rectângulos do nó filho. Vistas Materializadas create materialized view vendorOutstanding build immediate refresh complete enable query rewrite as select orders.vendor, sum(orders.quantity*item.price) from orders,item where orders.itemnum = item.itemnum group by orders.vendor; Vistas Materializadas Basicamente, o que é feito é prá-calcular a soma das quantidades a multiplicar pelo preço. É criada uma tabela real como resultado da materialização da vista e esta tabela pode ser indexada. Vistas Materializadas Existe um compromisso entre rapidez no processamento de querys e manutenção das vistas. Quando é necessário manter um grande número de vistas, temos um problema. Uma vista pode ser computada a partir de outra. Join Índices Quando temos índices separados sobre colunas referenciadas numa query. Para optimizar o processamento podemos fazer a junção dos índices, combinando-os para encontrar só os registos que satisfazem a query Identificam tuplos de uma forma pouco dispendiosa Bibliografia www.dbazine.com/datawarehouse/dwarticles/shasha1 Database Tuning, Shasha & Bonnet – Capítulo 10 www.akadia.com/services/ora_materialized_views www.linhadecodigo.com.br/ Apontamentos de Sistemas de Apoio à Decisão