OLAP Introdução Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática
OLAP Online analytical processing Existem dois tipos distintos de processamento sobre bases de dados: OLTP Online Transaction Processing 1) Transações curtas 2) Queries simples 3) Operações envolvem pequenas porções de dados 4) Atualizações frequentes OLAP Online Analytical Processing 1) Transações longas 2) Queries complexas 3) Operações envolvem grandes porções de dados 4) Atualizações pouco frequentes 2
OLAP Online analytical processing OLAP na wikipédia Análise mutidimensional de dados. Capacidade para manipular e analisar um grande volume de dados sob múltiplas perspetivas. As aplicações OLAP são usadas pelos gestores permitindo análises comparativas que facilitam a tomada de decisões do dia a dia. 3
OLAP Online analytical processing DATA WAREHOUSING Passagem dos dados operacionais (OLTP) para uma única data warehouse (armazém de dados) para análise OLAP. DSS Decision Support System Infraestrutura para análise de dados. Por exemplo, uma data warehouse para OLAP. 4
OLAP Exemplo Esquema da BD Stores Store(storeID, city, county, state) Item(itemID, category, color) Customer(custID, cname, gender, age) Sales(storeID, itemid, custid, price) 5
OLAP Esquema em estrela 6
OLAP Esquema em estrela Tabela de factos Com grandes volumes de dados Atualizadas frequentemente Baseadas em operação de inserção Tabelas de dimensões Não muito grandes Atualizadas com pouca frequência A tabela de factos referencia as tabelas das dimensões. 7
OLAP Esquema em estrela Store(storeID, city, country, state) Item(itemID, category, color) Customer(custID, cname, gender, age) Sales(storeID, itemid, custid, price) 1. tabela de factos - Sales 2. tabelas de dimensão - Store, Item, Customer 3. atributos de dimensão storeid, itemid e custid 4. atributos dependentes price 8
OLAP Queries Tipo de query 1) Junções (star join) 2) Filtros 3) Agrupamentos 4) Agregações Aspetos de performance - Queries muito pesadas - Uso intensivo de queries materializadas e de indíces especiais 9
OLAP Data cube A tabela de factos descreve o cubo Os dados das dimensões formam os eixos do cubo Os dados dos factos estão nas células do cubo Os dados agregados estão nos lados, arestas e vértices OLAP cube (wikipedia) 10
OLAP Operações básicas Roll-up Técnica que permite diminuir o nível de detalhe (sintetizar). Drill-down Técnica que permite aumentar o nível de detalhe. Slicing e Dicing Técnica que permite retirar uma parcela de dados do cubo OLAP e ver as parcelas de diferentes pontos de vista. 11
OLAP Implementação SELECT state, category, SUM(price) FROM Sales F, Store S, Item I WHERE F.storeID = S.storeID AND F.itemID = I.itemID GROUP BY state, category; 12
OLAP Roll-up SELECT state, SUM(price) FROM Sales F, Store S, Item I WHERE F.storeID = S.storeID AND F.itemID = I.itemID GROUP BY state; 13
OLAP Drill-down SELECT state, storeid, category, SUM(price) FROM Sales F, Store S, Item I WHERE F.storeID = S.storeID AND F.itemID = I.itemID GROUP BY state, storeid, category; 14
OLAP Construtores SQL With Cube Adiciona ao resultado, os lados, as arestas e os vértices do cubo usando valores NULL. SELECT <atributos de dimensão>, <agregações> FROM <tabelas> WHERE <condições> GROUP BY <atributos de dimensão> WITH CUBE; 15
OLAP Construtores SQL With Rollup Semelhante à cláusula with cube. Os resultados são apresentados segundo a hierarquia de valores apresentados na cláusula select. SELECT <atributos_de_dimensão>, <agregações> FROM <tabelas> WHERE <condições> GROUP BY <atributos_de_dimensão> WITH ROLLUP; 16
OLAP Queries Full star join SELECT * FROM Sales F, Store S, Item I, Customer C WHERE F.storeID = S.storeID AND F.itemID = I.itemID AND F.custID = C.custID; Star join com seleções e projeções SELECT S.city, I.color, C.cName, F.price FROM Sales F, Store S, Item I, Customer C WHERE F.storeID = S.storeID AND F.itemID = I.itemID AND F.custID = C.custID AND S.state = CA AND I.category = Tshirt AND C.age < 22 AND F.price < 25; 17
OLAP Queries SELECT storeid, custid, SUM(price) FROM Sales GROUP BY storeid, custid; Drill-down SELECT storeid, itemid, custid, SUM(price) FROM Sales GROUP BY storeid, itemid, custid; 18
OLAP Queries SELECT storeid, itemid, custid, SUM(price) FROM Sales GROUP BY storeid, itemid, custid; Roll-up SELECT itemid, SUM(price) FROM Sales GROUP BY itemid; 19
OLAP Queries Slice SELECT F.storeID, itemid, custid, SUM(price) FROM Sales F, Store S WHERE F.storeID = S.storeID and state = WA GROUP BY F.storeID, itemid, custid; Dice SELECT F.storeID, I.itemID, custid, SUM(price) FROM Sales F, Store S, Item I WHERE F.storeID = S.storeID and F.itemID = I.itemID and state = WA and color = red GROUP BY F.storeID, itemid, custid; 20
OLAP Queries With cube SELECT storeid, itemid, custid, SUM(price) FROM Sales GROUP BY storeid, itemid, custid WITH CUBE; Query equivalente (suportado em MySQL) SELECT storeid, itemid, custid, SUM(price) FROM Sales GROUP BY storeid, itemid, custid WITH ROLLUP UNION SELECT storeid, itemid, custid, SUM(price) FROM Sales GROUP BY itemid, custid, storeid WITH ROLLUP UNION SELECT storeid, itemid, custid, SUM(price) FROM Sales GROUP BY custid, storeid, itemid WITH ROLLUP; 21
OLAP Queries With rollup SELECT storeid, itemid, custid, SUM(price) FROM Sales GROUP BY storeid, itemid, custid WITH ROLLUP; With rollup com hieraquia de atributos SELECT state, county, city, SUM(price) FROM Sales F, Store S WHERE F.storeID = S.storeID GROUP BY state, county, city; SELECT state, county, city, SUM(price) FROM Sales F, Store S WHERE F.storeID = S.storeID GROUP BY state, county, city WITH ROLLUP; 22