OLAP (On-Line Analytical Processing) e Banco de Dados Multidimensionais Jacques Robin CIn-UFPE O que é OLAP? Processamento de dados, dedicado ao suporte a decisão, por meio de visualização de dados agregrados ao longo de várias dimensões analíticas (tempo, espaço, categoria de produto, quantidade vendida, preço...), hierarquizadas em várias granularidades, armazenados em BD especializadas, seguindo um modelo lógico de dados multidimensional, chamados de Data Warehouse, Data Mart ou BD multidimensionais Exemplos de consultas OLAP: Quais foram os produtos mais vendidos no mês passado ? A média salarial dos funcionários de informática com menos de 5 anos de experiência é maior do que a mesma para funcionários de telecomunicação? Qual foi o total de vendas o mês passado por região de vinhos tintos importados da Europa? Por quais semanas, quais produtos e quais cidades, a variação de venda de produtos em promoção em comparação da semana anterior sem promoção foi 15% Banco de dado operacional x data warehouse x data mart BD operacional: • armazena valores correntes e atômicas resultantes direitas das últimas transações • a fins operacionais predefinidas ex, gerenciamento do estoque Data Mart: • armazena réplicas históricas, não voláteis, agregadas ao longo de várias dimensões analíticas • as vezes limpadas, completadas e normalizadas em termos de escala e distribuição • de dados de um único banco operacional • a fins analíticas abertas de escopo departamental Data Warehouse: • integra e padroniza dados • de vários: data marts BD operacionais BD de legado empacotados BD semi-estruturados extraídos de páginas web • em um único repositório coerente e limpo de dados • a fins analíticas abertas de escopo organizacional OLTP Função Usuário humano Automatizar operações diárias Cliente, Atendente, DBA Software cliente Aplicativos de inventário, Modelo lógico Granularidade Temporalidade dos dados Consultas Direção Envolve Registros Usuários Bytes Prioridade Métrica x contabilidade, ... Relacional, orientado por aplicações Única e atômica Apenas valor corrente atualizada continuamente Simples e predefinidas Tanto ler quanto escrever Acessos via índice e hash 10 103 MB-GB Disponibilidade, eficiência Numero de transações OLAP Auxiliar tomada de decisão Executivo, Analista, Eng. de Conhecimento Aplicativos de mineração de dados, análise matemática, ... Multidimensional, orientado por assuntos Múltipla e agregada Histórico dos valores, completado periodicamente Complexas e ad-hoc Essencialmente ler Junções, varreduras 106 [0-10] GB-TB Flexibilidade, interatividade Número e tempo de cada consulta Modelo de dados multidimensional Cuboide: • Espaço de dimensão N para análise de dado Dimensão analítica: • • • • Atributo geralmente categórico Escolhido como eixo no espaço analítico N-dimensional Campo de uma tabela do BD relacional fonte ex, tempo, local, produto, fornecedor Medida: • Atributo geralmente numérico • Escolhido como ponto no espaço analítico N-dimensional • Agregação de valores de um campo de uma tabela do BD relacional fonte, calculada por group-by de outros campos da relação • ex, valor total das vendas, valor média das vendas, quantidade vendidas, Cuboide de dados: exemplo 4D Células Membros Dimensões Location Item Time Supplier Q1 Sup1 Sup2 Q2 Sup1 Sup2 Q3 Sup1 Sup2 Q3 Sup1 Sup2 Q4 Sup1 Sup2 Chicago HE Comp Tel New York Secu HE Comp Tel Toronto Secu HE Comp Tel Secu Cuboide de dados: exemplo 4D io at n itie (c s) supplier = ÒSUP1Ó supplier = ÒSUP2Ó supplier = ÒSUP3Ó tim e (quarters) Chicago New York Toronto Vanc ouver c lo Q1 605 825 14 400 Q2 Q3 Q4 computer security computer security computer security home phone entertainment home phone entertainment home phone entertainment item (types) item (types) item (types) Reticulado de Cuboides 0-D (apex) cuboid all time time, item item location time, supplier time, location time, item, location supplier item, supplier item, location time, location, supplier time, item, supplier time, item, location, supplier 1-D cuboids 2-D cuboids location, supplier 3-D cuboids item, location, supplier 4-D (base) cuboid Tipologia e cálculo das medidas Medida distributiva: • agregada por operação distributiva sobre dados atômicos ou medidas distributivas • count, sum, max, min Medida algébrica: • agregada por operações algébricas sobre dados atômicos ou medidas distributivas ou algébricas • avg, standev Medida holística: • agregada por operações sem limite constante sobre o espaço necessário para armazenar os sub-agregados • median, mode, rank • em grandes data warehouses, cálculo apenas aproximativo Hierarquias conceituais: da multidimensionalidade a multigranularidade Hierarquia esquemática: • implícita no esquema relacional do BD operacional fonte Hierarquia de agrupamento: • Inexistente no esquema fonte, gerada para reduzir numerosidade year Hierarquia: • de ordem total ou parcial • simples ou múltipla country Construção de hierarquias: • Manual via GUI • Automática via clustering province_or_state quarter city month week day street (a) (b) Exemplo de hierarquia conceitual esquemática location all all country province_or_state British Columbia city USA Canada Vancouver Victoria New York Ontario Toronto Ottawa New York Buffalo Illinois Chicago Exemplo de hierarquia conceitual de agrupamento ($0 $1000] ($0 $200] ($0 $100] ($200 $400] ($400 $600] ($600 $800] ($800 $1000] ($200 $300] ($400 $500] ($600 $700] ($800 $900] ($100 $200] ($300 $400] ($500 $600] ($700 $800] ($900 $1000] Operadores OLAP: navegação no espaço analítico multidimensional e multigranular Operadores de navegação ao longo das hierarquias conceituais: • Roll-up, abstrai detalhes, aplicando ao cuboide corrente um operador de agregação dado ao longo de uma dimensão dada • ex: região pais • Drill-down, detalha o cuboide corrente desagregando ao longo de uma dimensão dada • ex: região estado • Drill-through, detalha os valores, ao longo de uma dimensão dada, além do nível mais baixo do cuboide, por consultas SQL diretamente na fonte relacional • Drill-across, detalha vários cuboides com dimensões compartilhas, por desagregação ao longo de Operadores OLAP: navegação no espaço analítico multidimensional e multigranular Operadores de navegação ao longo do reticulado de cuboides: • Slice, extrair sub-cuboide das células verificando um restrições de valor ao longo de uma dimensão (ex, time = Q1) • Dice, extrair sub-cuboide das células verificando um restrições de valor ao longo de várias dimensões (ex, time = Q1 e item = HE) Operadores de visualização dos resultados: • Pivot, mudar os eixos da visualização (cross-tab ou 3D grahics) do resultado de uma consultas (ex, time na vertical no lugar da horizontal) • Rank, ordena os membros de uma dimensão de acordo com a ordem da medida corrente (ex, time retrospectivo, começando pelo mais recentes primeiro); serve também para filtragem es ) t un on Tor ont o 395 ti c a Vanc ouv er t i me ( quar t er s) lo ti Q1 c lo 605 at Q2 c omput er home ent er t ai nment i t em ( t y pes ) l oc ( ti ci es es ) 2000 Q1 1000 Q2 Q3 Q4 c omput er s ec ur i t y home phone ent er t ai nment or i on = ÒTor ont oÓ or ÒVanc ouver Ó) i me = ÒQ1Ó or ÒQ2Ó) and = Òhome ent er t ai nment Ó or Òc omput er Ó) i t em ( t y pes ) r o l l - up on l oc at i on ( f r om c i t i es t o c ount r i es ) ) Chi c ago 440 New Yor k 156 0 Tor ont o 395 Vanc ouver i at on t i me ( quar t er s) di c e f ( l oc at and ( t ( i t em ri o (c USA n o i Canada t i me ( quar t er s) i (c Q1 605 825 14 4 00 Q2 Q3 Q4 l ocat i on ( ci t i es) sl i ce f or t i me = ÒQ1Ó c omput er s ec ur i t y home phone ent er t ai n men t dr i on (f r t o i t em ( t y pes ) Chi cago New Yor k Tor ont o Vancouv er 605 825 14 440 home ent er t ai nment 605 comput er 825 phone s ec ur i t y 14 400 New Yor k Vanc ouver Chi c ago Tor ont o l oc at i on ( c i t i es ) t ca t i me ( mont hs) pi vot i (c ti es ) Chi c ago New Yor k Tor ont o l o Vancouv er J anuar y Febr uar y Mar c h c omput er s ec ur i t y home phone ent er t ai nment i t em ( t y pes ) i t em ( t ypes) l l - down t i me om quar t er s mont hs ) n io 150 100 150 Apr i l May J une J ul y Augus t Sept e mber Oc t ob er Nov ember De cember c omput er s ec ur i t y home phone en t er t ai nment i t em ( t y pes ) Modelos físicos 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) • Porém, necessita remodelagem prévio 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 dimensões N • Necessita desenvolvimento de novas técnicas de otimização • Sem acesso a granularidade mínima (i.e., única transações) HOLAP (OLAP Híbrido): • • • • • Duplica dados Tabelas para dados atómicos Arrays para agregrados Flexível e rápido de execução Custoso em memória e desenvolvimento Modelos de dados ROLAP: Estrela Uma tabela de fato com: • uma coluna por medida agregada • uma columa por chave de dimensão analítica N tabelas de dimensões, uma por dimensão analítica • uma coluna por para cada atributo descrevendo a dimensão • geralmente um atributo por nível na hierarquia conceitual Não normalizada: • alguma redundância • alguns níveis e membros aparecem em vários registros Modelo estrela: exemplo time dimension table time_ key day day_of_the_week month quarter year branch dimension table branch_key branch_name branch_type 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 location dimension table location_key street city province_or_state country Modelos de dados ROLAP: Floco de Neve Igual ao modelo estrela exceto pela normalização das Vantagens tabelas de dimensões • Facilita evolução das dimensões • Reduz espaço ocupado por elas Desvantagens: • Aumenta tempo de resposta pela necessidade de junções Balanço: • Espaço ganhado negligível já que espaço 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 branch dimension table branch_key branch_name branch_type 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 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: Constelação Várias tabelas de fato: um por assunto analítico Uma tabela dimensão por dimensão analítica de algum assunto As dimensões compartilhadas por vários assuntos não são duplicadas, mas apontadas por várias tabelas de fato Em geral: • data mart modelado em estrela • data warehouse modelado em constelação • data mart integrado em um data warehouse por: uniformização das tabelas de dimensões dos vários data marts ligações entre elas e as tabelas de fato Modelo constelação: exemplo tim e dim ension table tim e_key day day_of_week m onth quarter year branc h dim ension table branc h_key branc h_name branc h_type sales fac t table tim e_key item _key branc h_key loc ation_key dollars_sold units_sold item dim ension table item _key item _name brand type supplier_type loc ation dim ension table loc ation_key street c ity province_or_state c ountry shipping shipper fac t table dim ension table item _key shipper_key tim e_key shipper_nam e shipper_key loc ation_key from_loc ation shipper_type to_loc ation dollars_cost units_shipped Elementos de um modelo de dados lógico multidimensional BDMD: coleção de cuboides D-dimensionais Cuboides: • D dimensões (ex, tempo, produto, espaço) • C celulas de dados quantitativos atómicos = valores das medidas Dimensão: • H hierarquias de N níveis de granularidade (ex, ano/mês/dias, ano/semestre/semana) Nível: E membros (ex, {Jan, ..., Dez}, {1, ..., 31}) Cellset: subcubo resultado de uma consulta OLAP selecionando: • • • • um cubo A do DBMD d dimensões de A como analíticas m dimensões de A como medidas para cada d: uma hierarquia hd um nivel nd com md membros • para cada m, uma função de agregação (sum, max, avg, var) • md celulas, cada uma contendo m dados agregados Linguagens e API de consulta de BDMD Até 98, profusão de linguagens: • proprietárias dos vendedores de SGBDMD • acadêmicas 2 tentativas de padronização para interoperabilidade entre BDMD: • MDAPI do OLAP Council, liderado pela Oracle e a Arbor publicação em 98 em 3 formatos: ¤ modelo UML, interfaces Java, interfaces COM até hoje nenhuma implementação está rapidamente perdendo apoio • OLE DB for OLAP desenvolvido pela Microsoft, porém não proprietária já apoiado de quase toda indústria dos SGBDMD OLE DB for OLAP Para conexão com Data Warehouse e funções administrativas: • usa outros padrões “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 físico de dados • ROLAP, MOLAP ou HOLAP Amarrado a plataforma Windows Pode ser chamado apenas a partir de C++ Padrões da Microsoft “abertos e orientados a objetos” UDA (Universal Data Access): • COM (Component Object Model): • • • padrão de interfaces para vários tipos de serviços como métodos de (pseudo)-objetos sem ID nem atributos acesso a métodos via ponteiros, herança simples e simulada via includes OLE (Object Linking and Embedding): • • • conjunto de padrões e API para acesso a vários tipos de dados transparentemente do seu suporte de armazenamento físico conjuntos de interfaces COM fornecendo serviços de acesso a dados de vários 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: definição e limitações MultiDimensional eXpression: • Linguagemde consulta para SGBDMD • Expressões da forma SELECT FROM WHERE • Passadas como parametros string de métodos especializados de OLE DB for OLAP e ADOMD • Chamável 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 agregação numérica, estatística e temporal Limitado a consultas em leitura; não permite: • Alteração de valores no cubo (celulas) • Materialização de visões multidimensionais (cellsets) MDX: exemplo criação de cubo Dimensões: {Produto, Local, CREATE CUBE vendas ( DIMENSION Produto HIERARCHY ProdCat Tempo, Vendas} LEVEL [ProdCat] LEVEL ALL, Hierarquias: LEVEL [Categoria], LEVEL [SubCat], • Produto: DIMENSION Loja HIERARCHY LojaLoc Software: LEVEL [LojaLoc] LEVEL ALL, LEVEL [Pais], {EditorTexto, Planilha, EditorGrafico} DIMENSION Tempo TYPE TIME Hardware: {Mouse,Teclado,Monitor,Gabinete} LEVEL Ano TYPE YEAR • Local: LEVEL Semestre TYPE SEMESTER País: {Brasil, México, USA} MEASURE [Vendas] FUNCTION SUM) • Tempo: Ano: {1998,1999} Semestre: {S1,S2} INSERT INTO vendas ([SubCat], [Pais], [Semestre], [Vendas]), OPTIONS DEFER_DATA <CONSULTA SQL RECUPERANDO CAMPOS CORRESPONDENTES NA OLTP BD FONTE> WITH MDX: sintaxe das consultas • membros virtuais calculados a partir de membros do cubo • via operadores aritméticos, estatísticos, de agregação, de series temporais, de formatação de saída SELECT • conjunto de membros de dimensões, hierarquias e níveis • especificado via expressão de operadores OLAP (DrillDown, Filter, ...) de manipulação de conjuntos (CrossJoin, Union, Inter, Member ...) agregação (TopSum, TopCount, TopPercent, Order, ...) ON eixos de visualização planares: • row, column, page, sections, chapters FROM cubo WHERE lista de membros de dimensões medidas MDX: exemplo de visualização inicial a um nível arbitrário Brasil 1998 Software Editor de Texto México 1999 1998 USA 1999 1998 1999 167 173 160 164 197 208 Planilha Eletrônica 120 122 110 130 133 136 Editoração Gráfica 134 137 126 128 157 164 245 265 230 243 280 293 Teclado 80 82 64 66 104 110 Monitor 72 73 56 58 94 98 Gabinete 66 68 52 53 78 81 Hardware Mouse SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Ano].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].[SubCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Vendas]). MDX: exemplo de drill-down até granularidade mais baixa Brasil Software Editor de Texto Planilha Eletrônica Editoração Gráfica Hardware Mouse Teclado Monitor Gabinete 1998 S1 S2 95 72 53 67 71 63 112 133 46 34 42 30 29 37 1999 S1 S2 94 79 58 64 63 74 124 141 49 33 31 42 35 33 México 1998 S1 S2 68 92 49 61 68 58 114 116 31 33 32 24 23 29 1999 S1 S2 75 89 62 68 56 72 111 132 29 37 33 25 29 24 USA 1998 S1 S2 99 98 62 71 74 83 136 144 46 58 51 43 37 41 1999 S1 S2 102 106 65 71 86 78 156 137 57 53 53 57 45 36 SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Semestre].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].[SubCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Vendas]). MDX: exemplo de roll-up Brasil 1998 México 1999 1998 USA 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 SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Semestre].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Vendas]). 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]).