Jacques Robin CIn-UFPE O que OLAP? Processamento de dados, dedicado ao suporte a deciso, por meio de visualizao de dados agregrados ao longo de vrias dimenses analticas (tempo, espao, categoria de produto, quantidade vendida, preo...), hierarquizadas em vrias granularidades, armazenados em BD especializadas, seguindo um modelo lgico de dados multidimensional, chamados de Data Warehouse, Data Mart ou BD multidimensionais
Exemplos de consultas OLAP: Quais foram os produtos mais vendidos no ms passado ?
A mdia salarial dos funcionrios de informtica com menos de 5 anos de experincia maior do que a mesma para funcionrios de telecomunicao?
Qual foi o total de vendas o ms passado por regio de vinhos tintos importados da Europa?
Por quais semanas, quais produtos e quais cidades, a variao de venda de produtos em promoo em comparao da semana anterior sem promoo foi 15%
Banco de dado operacional x data warehouse x data mart BD operacional: armazena valores correntes e atmicas resultantes direitas das ltimas transaes a fins operacionais predefinidas ex, gerenciamento do estoque Data Mart: armazena rplicas histricas, no volteis, agregadas ao longo de vrias dimenses analticas as vezes limpadas, completadas e normalizadas em termos de escala e distribuio de dados de um nico banco operacional a fins analticas abertas de escopo departamental Data Warehouse: integra e padroniza dados de vrios: data marts BD operacionais BD de legado empacotados BD semi-estruturados extrados de pginas web em um nico repositrio coerente e limpo de dados a fins analticas abertas de escopo organizacional
OLTP x OLAP Funo Automatizar operaes dirias Auxiliar tomada de deciso Usurio humano Cliente, Atendente, DBA Executivo, Analista, Eng. de Conhecimento Software cliente Aplicativos de inventrio, Aplicativos de minerao de contabilidade, ... dados, anlise matemtica, ... Modelo lgico Relacional, Multidimensional, orientado por aplicaes orientado por assuntos Granularidade nica e atmica Mltipla e agregada Temporalidade Apenas valor corrente Histrico dos valores, dos dados atualizada continuamente completado periodicamente Consultas Simples e predefinidas Complexas e ad-hoc Direo Tanto ler quanto escrever Essencialmente ler Envolve Acessos via ndice e hash Junes, varreduras Registros 10 10 6
Usurios 10 3 [0-10] Bytes MB-GB GB-TB Prioridade Disponibilidade, eficincia Flexibilidade, interatividade Mtrica Numero de transaes Nmero e tempo de cada consulta Modelo de dados multidimensional Cuboide: Espao de dimenso N para anlise de dado Dimenso analtica: Atributo geralmente categrico Escolhido como eixo no espao analtico N-dimensional Campo de uma tabela do BD relacional fonte ex, tempo, local, produto, fornecedor Medida: Atributo geralmente numrico Escolhido como ponto no espao analtico N-dimensional Agregao de valores de um campo de uma tabela do BD relacional fonte, calculada por group-by de outros campos da relao ex, valor total das vendas, valor mdia das vendas, quantidade vendidas, Cuboide de dados: exemplo 4D Location Chicago New York Toronto Item HE Comp Tel Secu HE Comp Tel Secu HE Comp Tel Secu Time Supplier Q1 Sup1 Sup2 Q2 Sup1 Sup2 Q3 Sup1 Sup2 Q3 Sup1 Sup2 Q4 Sup1 Sup2 Dimenses Membros Clulas Cuboide de dados: exemplo 4D 605 825 14 400 Q1 Q2 Q3 Q4 Chicago New York Toronto Vancouver t i m e
( q u a r t e r s ) l o c a t i o n
( c i t i e s ) home entertainment computer item (types) phone security home entertainment computer item (types) phone security home entertainment computer item (types) phone security supplier = SUP1 supplier = SUP2 supplier = SUP3 Reticulado de Cuboides supplier all time, item, location, supplier item, location time, location item, supplier time, supplier time, location, supplier item, location, supplier location, supplier time, item, supplier time item location time, item time, item, location 0-D (apex) cuboid 1-D cuboids 2-D cuboids 3-D cuboids 4-D (base) cuboid Tipologia e clculo das medidas Medida distributiva: agregada por operao distributiva sobre dados atmicos ou medidas distributivas count, sum, max, min Medida algbrica: agregada por operaes algbricas sobre dados atmicos ou medidas distributivas ou algbricas avg, standev Medida holstica: agregada por operaes sem limite constante sobre o espao necessrio para armazenar os sub-agregados median, mode, rank em grandes data warehouses, clculo apenas aproximativo Hierarquias conceituais: da multidimensionalidade a multigranularidade Hierarquia esquemtica: implcita no esquema relacional do BD operacional fonte Hierarquia de agrupamento: Inexistente no esquema fonte, gerada para reduzir numerosidade Hierarquia: de ordem total ou parcial simples ou mltipla Construo de hierarquias: Manual via GUI Automtica via clustering
country city province_or_state month week year day quarter street (a) (b) Exemplo de hierarquia conceitual esquemtica Canada British Columbia Ontario Vancouver Victoria Ottawa Toronto Chicago Buffalo New York New York Illinois USA all location all country city province_or_state Exemplo de hierarquia conceitual de agrupamento ($0 $1000] ($0 $200] ($200 $400] ($400 $600] ($400 $500] ($500 $600] ($600 $800] ($800 $1000] ($200 $300] ($300 $400] ($0 $100] ($100 $200] ($800 $900] ($900 $1000] ($600 $700] ($700 $800] Operadores OLAP: navegao no espao analtico multidimensional e multigranular Operadores de navegao ao longo das hierarquias conceituais: Roll-up, abstrai detalhes, aplicando ao cuboide corrente um operador de agregao dado ao longo de uma dimenso dada ex: regio pais Drill-down, detalha o cuboide corrente desagregando ao longo de uma dimenso dada ex: regio estado Drill-through, detalha os valores, ao longo de uma dimenso dada, alm do nvel mais baixo do cuboide, por consultas SQL diretamente na fonte relacional Drill-across, detalha vrios cuboides com dimenses compartilhas, por desagregao ao longo de
Operadores OLAP: navegao no espao analtico multidimensional e multigranular Operadores de navegao ao longo do reticulado de cuboides: Slice, extrair sub-cuboide das clulas verificando um restries de valor ao longo de uma dimenso (ex, time = Q1) Dice, extrair sub-cuboide das clulas verificando um restries de valor ao longo de vrias dimenses (ex, time = Q1 e item = HE) Operadores de visualizao dos resultados: Pivot, mudar os eixos da visualizao (cross-tab ou 3D grahics) do resultado de uma consultas (ex, time na vertical no lugar da horizontal) Rank, ordena os membros de uma dimenso de acordo com a ordem da medida corrente (ex, time retrospectivo, comeando pelo mais recentes primeiro); serve tambm para filtragem Q1 Q2 Q3 Q4 1000 Canada USA 2000 t i m e
( q u a r t e r s ) l o c a t i o n
( c o u n t r i e s ) home ent er t ai nment comput er i t em ( t ypes) phone secur i t y Tor ont o 395 Q1 Q2 605 Vancouver t i m e ( q u a r t e r s ) l o c a t i o n
( c i t i e s ) home ent er t ai nment comput er i t em ( t ypes) Januar y Febr uar y Mar ch Apr i l May June Jul y August Sept ember Oct ober November December Chi cago New Yor k Tor ont o Vancouver t i m e
( m o n t h s ) l o c a t i o n
( c i t i e s ) home ent er t ai nment comput er i t em ( t ypes) phone secur i t y 150 100 150 605 825 14 400 Q1 Q2 Q3 Q4 Chi cago New Yor k Tor ont o Vancouver t i m e
( q u a r t e r s ) l o c a t i o n
( c i t i e s ) home ent er t ai nment comput er i t em ( t ypes) phone secur i t y 440 395 1560 di ce f or ( l ocat i on = Tor ont o or Vancouver ) and ( t i me = Q1 or Q2) and ( i t em = home ent er t ai nment or comput er ) r ol l - up on l ocat i on ( f r om ci t i es t o count r i es) sl i ce f or t i me = Q1 Chi cago New Yor k Tor ont o Vancouver home ent er t ai nment comput er i t em ( t ypes) phone secur i t y l o c a t i o n
( c i t i e s ) 605 825 14 440 home ent er t ai nment comput er phone secur i t y 605 825 14 400 Chi cago New Yor k l ocat i on ( ci t i es) i t e m
( t y p e s ) Tor ont o Vancouver pi vot dr i l l - down on t i me ( f r om quar t er s t o mont hs) Modelos fsicos de dados para OLAP ROLAP (OLAP Relacional): Armazena dados em tabelas relacionais Reaproveita da tecnologia relacional, inclusive SQL Apenas apresenta dados de maneira multidimensional Permite acoplamento mais estreito com fontes OLTP (geralmente relacionais) Porm, necessita remodelagem prvio de dados em esquema especializados (estrela, floco de neve) Mesmas controversias sobre performance do que OO x OR MOLAP (OLAP Multidimensional): Armazena dados em arrays de dimenses N Necessita desenvolvimento de novas tcnicas de otimizao Sem acesso a granularidade mnima (i.e., nica transaes) HOLAP (OLAP Hbrido): Duplica dados Tabelas para dados atmicos Arrays para agregrados Flexvel e rpido de execuo Custoso em memria e desenvolvimento
Modelos de dados ROLAP: Estrela Uma tabela de fato com: uma coluna por medida agregada uma columa por chave de dimenso analtica N tabelas de dimenses, uma por dimenso analtica uma coluna por para cada atributo descrevendo a dimenso geralmente um atributo por nvel na hierarquia conceitual No normalizada: alguma redundncia alguns nveis e membros aparecem em vrios registros Modelo estrela: exemplo time dimension table time_ key day day_of_the_week month quarter year sales fact table time_key item_key branch_key location_key dollars_sold units_sold item dimension table item_key item_name brand type supplier_type branch dimension table branch_key branch_name branch_type location dimension table location_key street city province_or_state country Modelos de dados ROLAP: Floco de Neve Igual ao modelo estrela exceto pela normalizao das tabelas de dimenses Vantagens Facilita evoluo das dimenses Reduz espao ocupado por elas Desvantagens: Aumenta tempo de resposta pela necessidade de junes Balano: Espao ganhado negligvel j que espao total do data mart principalmente ocupado pela tabela de fato Modelo estrela mais popular
Modelo floco de neve: exemplo time dimension table time_key day day_of_week month quarter year sales fact table time_key item_key branch_key location_key dollars_sold units_sold item dimension table item_key item_name brand type supplier_key branch dimension table branch_key branch_name branch_type location dimension table location_key street city_key supplier dimension table supplier_key supplier_type city dimension table city_key city province_or_state country Modelos de dados ROLAP: Constelao Vrias tabelas de fato: um por assunto analtico Uma tabela dimenso por dimenso analtica de algum assunto As dimenses compartilhadas por vrios assuntos no so duplicadas, mas apontadas por vrias tabelas de fato Em geral: data mart modelado em estrela data warehouse modelado em constelao data mart integrado em um data warehouse por: uniformizao das tabelas de dimenses dos vrios data marts ligaes entre elas e as tabelas de fato Modelo constelao: exemplo time dimension table time_key day day_of_week month quarter year sales fact table time_key item_key branch_key location_key dollars_sold units_sold item dimension table item_key item_name brand type supplier_type branch dimension table branch_key branch_name branch_type location dimension table location_key street city province_or_state country shipping fact table item_key time_key shipper_key from_location to_location dollars_cost units_shipped shipper dimension table shipper_key shipper_name location_key shipper_type Elementos de um modelo de dados lgico multidimensional BDMD: coleo de cuboides D-dimensionais Cuboides: D dimenses (ex, tempo, produto, espao) C celulas de dados quantitativos atmicos = valores das medidas Dimenso: H hierarquias de N nveis de granularidade (ex, ano/ms/dias, ano/semestre/semana) Nvel: E membros (ex, {Jan, ..., Dez}, {1, ..., 31}) Cellset: subcubo resultado de uma consulta OLAP selecionando: um cubo A do DBMD d dimenses de A como analticas m dimenses de A como medidas para cada d: uma hierarquia h d
um nivel n d com m d membros para cada m, uma funo de agregao (sum, max, avg, var) m d celulas, cada uma contendo m dados agregados
Linguagens e API de consulta de BDMD At 98, profuso de linguagens: proprietrias dos vendedores de SGBDMD acadmicas 2 tentativas de padronizao para interoperabilidade entre BDMD: MDAPI do OLAP Council, liderado pela Oracle e a Arbor publicao em 98 em 3 formatos: modelo UML, interfaces Java, interfaces COM at hoje nenhuma implementao est rapidamente perdendo apoio OLE DB for OLAP desenvolvido pela Microsoft, porm no proprietria j apoiado de quase toda indstria dos SGBDMD OLE DB for OLAP Para conexo com Data Warehouse e funes administrativas: usa outros padres abertos e orientados a objetos da Microsoft: COM e OLE Para consultar Data Mart conectado: usa uma linguagem com sintaxe parecida com SQL: MDX Independente do modelo fsico de dados ROLAP, MOLAP ou HOLAP Amarrado a plataforma Windows Pode ser chamado apenas a partir de C++ Padres da Microsoft abertos e orientados a objetos UDA (Universal Data Access): conjunto de padres e API para acesso a vrios tipos de dados transparentemente do seu suporte de armazenamento fsico COM (Component Object Model): padro de interfaces para vrios tipos de servios como mtodos de (pseudo)-objetos sem ID nem atributos acesso a mtodos via ponteiros, herana simples e simulada via includes OLE (Object Linking and Embedding): conjuntos de interfaces COM fornecendo servios de acesso a dados de vrios tipos (planhilha, BD, HTML, etc) a partir de C/C++ OLE DB: parte de OLE para acesso a BD OLE DB for OLAP: parte de OLE DB para acesso a BDMD ADO (ActiveX Data Objects): camada de UDA acima de OLE permintindo acesso objetos OLE a partir de outras linguagens MS como Visual J++ e Visual Basic ADOMD: parte de ADO para acesso a BDMD MDX: definio e limitaes MultiDimensional eXpression: Linguagemde consulta para SGBDMD Expresses da forma SELECT FROM WHERE Passadas como parametros string de mtodos especializados de OLE DB for OLAP e ADOMD Chamvel a partir de Visual C++, Visual J++, Visual Basic etc. Fornece built-in largo leque de operadores: OLAP (rotate, slice, dice, drill-down, roll-up, cross-join etc) de agregao numrica, estatstica e temporal
Limitado a consultas em leitura; no permite: Alterao de valores no cubo (celulas) Materializao de vises multidimensionais (cellsets)
CREATE CUBE vendas ( DIMENSION Produto HIERARCHY ProdCat LEVEL [ProdCat] LEVEL ALL, LEVEL [Categoria], LEVEL [SubCat], DIMENSION Loja HIERARCHY LojaLoc LEVEL [LojaLoc] LEVEL ALL, LEVEL [Pais], DIMENSION Tempo TYPE TIME LEVEL Ano TYPE YEAR LEVEL Semestre TYPE SEMESTER MEASURE [Vendas] FUNCTION SUM)
INSERT INTO vendas ([SubCat], [Pais], [Semestre], [Vendas]), OPTIONS DEFER_DATA <CONSULTA SQL RECUPERANDO CAMPOS CORRESPONDENTES NA OLTP BD FONTE> MDX: sintaxe das consultas WITH membros virtuais calculados a partir de membros do cubo via operadores aritmticos, estatsticos, de agregao, de series temporais, de formatao de sada SELECT conjunto de membros de dimenses, hierarquias e nveis especificado via expresso de operadores OLAP (DrillDown, Filter, ...) de manipulao de conjuntos (CrossJoin, Union, Inter, Member ...) agregao (TopSum, TopCount, TopPercent, Order, ...) ON eixos de visualizao planares: row, column, page, sections, chapters FROM cubo WHERE lista de membros de dimenses medidas MDX: exemplo de visualizao inicial a um nvel arbitrrio SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Ano].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].[SubCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Vendas]).
Brasil Mxico USA 1998 1999 1998 1999 1998 1999 Editor de Texto 167 173 160 164 197 208 Planilha Eletrnica 120 122 110 130 133 136 Software Editorao Grfica 134 137 126 128 157 164 Mouse 245 265 230 243 280 293 Teclado 80 82 64 66 104 110 Monitor 72 73 56 58 94 98 Hardware Gabinete 66 68 52 53 78 81 MDX: exemplo de drill-down at granularidade mais baixa SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Semestre].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].[SubCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Vendas]).
SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Semestre].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Vendas]).
Brasil Mxico USA 1998 1999 1998 1999 1998 1999 S1 S2 S1 S2 S1 S2 S1 S2 S1 S2 S1 S2 Software 219 202 215 217 185 211 193 229 235 252 253 255 Hardware 229 234 239 249 200 202 202 218 270 286 311 283 MDX: exemplo do uso de WITH WITH [Medidas].[Lucro] AS [Medidas].[Vendas] * ([Medidas].[PrecoUnitario] - [Medidas].[CustoUnitario]) SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Ano].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].[SubCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Lucro]).