Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson...

28
Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE

Transcript of Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson...

Page 1: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Banco de Dados Multidimensionais e

OLAP (On-Line Analytical Processing)

Jacques Robin e Robson FidalgoCIn-UFPE

Page 2: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo 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

Page 3: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

BD multidimensionais e Data Warehouses

BD multidimensional (BDMD): BD histórico com modelo lógico de dados multidimensionais

especializado para OLAP

Data Mart: BDMD de escopo departamental, armazenando réplicas históricas, não volátis, as vezes limpadas, completadas e normalizadas, e sempre agregadas ao longo de várias dimensões analíticas, de dados de um único banco operacional

Data Warehouse: BDMD de escopo organizacional, integrando réplicas agregadas e históricas, de dados de vários data marts ou vários bancos operacionais, e as vezes outras fontes,

BD de legado, dados semi-estruturados, etc.

Page 4: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

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%

Page 5: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

OLAP x OLTP

Características Operacional-OLTP Decisão-OLAPObjetivo Op. diárias do negócio Análisar o negócioVisão dos dados Relacional MultidimensionalOp. com os dados Incl., Alt, Excl e Cons. Carga e ConsultaAtualização Contínua (tempo real) Periódica (Bach)No de usuários Milhares DezenasTipo de usuário Operacional GerencialInteração c/ usuário Pré-definida Pré-definida e ad-hocGranularidade Detalhados Detalhados e ResumosRedundância Não ocorre OcorreVolume Megabytes-Gigabytes Gigabytes-TerabytesHistórico Até uma atualização 5 a 10 anosAcesso a registro Dezenas Milhares

Page 6: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Elementos de um modelo de dados lógico multidimensional

BDMD: coleção de cubos D-dimensionais

Cubo: D dimensões (ex, tempo, produto, espaço) C celulas de dados

quantitativos atómicos 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

Page 7: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Elementos de um modelo lógico de dados multidimensional: exemplo

Tem

po

5 1 68

Produto

P1 P2 P3 P4

Jan./99

Fev./99

FORTALEZASOBRAL

NORDESTE

CEARÁ

SUDESTE

RIO DE JANEIRO

PERNAMBUCO

SÃO PAULO

...

Dimensões Hierarquias

NíveisMembros

Medidas Celulas

Page 8: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

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

Page 9: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Relacões x Arrays

Produto Região VendasAAAA Norte 50AAAA Sul 60AAAA Central 100BBBB Norte 40BBBB Sul 70BBBB Central 80CCCC Norte 90CCCC Sul 120CCCC Central 140DDDD Norte 20DDDD Sul 10DDDD Central 30

Produto NORTE SUL CENTRALAAAA 50 60 100BBBB 40 70 80CCCC 90 120 140DDDD 20 10 30

Vendas dimensionadas por produtos e regiãoVendas dimensionadas por produtos e região

M A T R I Z B I D I M E N S I O N A LM A T R I Z B I D I M E N S I O N A L

Qual diferença em consultar essas duas tabelas ?

Qual a melhor forma de representar esses dados ?Qual a melhor forma de representar esses dados ?

Page 10: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Arrays sempre mais consicos?

– Ob. Se só existe uma única correspondência entre os campos, estes não podem ser multidimensionais.

CLIENTE CPF TELEFONE ENDEREÇORobson 000001-01 111-1111 Rua X

Fernando 000002-02 222-2222 Avenida HPaula 000003-03 333-3333 Travessa DPatricia 000004-04 444-4444 Rodovia U

CLINETE CPFRobson 000001-01

Fernando 000002-02Paula 000003-03

Patric ia 000004-04

Page 11: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Produto Região VendasAAAA Norte 50AAAA Sul 60AAAA Central 100BBBB Norte 40BBBB Sul 70BBBB Central 80CCCC Norte 90CCCC Sul 120CCCC Central 140DDDD Norte 20DDDD Sul 10DDDD Central 30

Produto Região VendasAAAA Norte 50AAAA Sul 60AAAA Central 100AAAA TOTAL 210BBBB Norte 40BBBB Sul 70BBBB Central 80BBBB TOTAL 190CCCC Norte 90CCCC Sul 120CCCC Central 140CCCC TOTAL 350DDDD Norte 20DDDD Sul 10DDDD Central 30DDDD TOTAL 60TOTAL Norte 200TOTAL Sul 260TOTAL Central 350TOTAL TOTAL 810

Dados agregados em relações e arrays

Produto NORTE SUL CENTRAL TOTALAAAA 50 60 100 210BBBB 40 70 80 190CCCC 90 120 140 350DDDD 20 10 30 60TOTAL 200 260 350 810

-Na representação multidimensional os totais,médias, max,... São mais facilmente calculados

Page 12: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Operadores OLAP

Rotate, slice and dice: girar e fatiar cubo

Regiã

o

Regiã

o

PPrroodduuttoo

SituaçãoSituação RegiãoRegião

Produto

Produto

SituaçãoSituação

RegiãoRegião

PPrroodduuttoo

Situaç

ão

Situaç

ão

Page 13: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Operadores OLAP

Drill Down and Roll Up: detalhar ou agregar ao longo de uma hierarquia (mudar granularidade dos dados)

50.000 Clientes50.000 Clientes Drill DownDrill Down

Roll UpRoll Up

500 Cidades500 Cidades

50 Estados50 Estados

5 Regiões5 Regiões

1 Total1 Total

500 Cidades500 Cidades

50 Estados50 Estados

5 Regiões5 Regiões

1 Total1 Total

500 Cidades500 Cidades

50 Estados50 Estados

5 Regiões5 Regiões

1 Total1 Total

500 Cidades500 Cidades

50 Estados50 Estados

5 Regiões5 Regiões

1 Total1 Total

Page 14: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Operadores OLAP

Drill Down Drill Down

Roll Up Roll Up

Região Produto VendasNorte AAAA 50

BBBB 40CCCC 90DDDD 20

Sul AAAA 60BBBB 70CCCC 120DDDD 10

Central AAAA 100BBBB 80CCCC 140DDDD 30

Região VendasNorte 200Sul 260

Central 350

Page 15: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

ROLAP: esquema estrela

Ch_RegiãoCh_RegiãoNomeNomeClimaClimaPopulaçãoPopulação

DM RegiãoDM Região

Ch_TempoCh_TempoCh_RegiãoCh_RegiãoCh_ProdutoCh_ProdutoVendas Vendas (R$)(R$) Vl_unitárioVl_unitário(R$)(R$)

Despesas Despesas (R$)(R$)

QtdVendidaQtdVendida

FT VendaFT Venda

Ch_TempoCh_TempoSemanaSemanaMêsMêsTrimestreTrimestreAnoAnoFeriado?Feriado?

DM TempoDM Tempo

Ch_ProdutoCh_ProdutoNomeNomeDescriçãoDescriçãoMarcaMarcaCategoriaCategoria

DM ProdutoDM Produto

Tabela de FatosTabela de Fatos

Tabelas das DimensõesTabelas das Dimensões

Page 16: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

ROLAP: esquema floco de neve

Ch_ProdutoCh_ProdutoNomeNomeDescriçãoDescriçãoCh_MarcaCh_Marca

DM ProdutoDM Produto

Ch_MarcaCh_MarcaMarcaMarcaCh_CategoriaCh_Categoria

DM ProdutoDM Produto

Ch_CategoriaCh_CategoriaCategoriaCategoria

DM ProdutoDM Produto

Dimensões normalizadas

Page 17: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Estrela Estrela Relacional Relacional XX

Remodelagem de dados: relacional dimensional

ER representa vários processos em um único diagrama 1- Dividir o diagrama ER em vários diagramas MD 2- Definir as tabelas das dimensões (desnormalizar) 3- Definir a tabela de fatos (atributos)

Page 18: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Remodelagem de dados: relacional dimensional

TempoTempo

ProdutoProduto

ClienteCliente

LocalizaçãoLocalização

Page 19: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

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

Page 20: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

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++

Page 21: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

Padrões da Microsoft “abertos e orientados a objetos”

UDA (Universal Data Access): conjunto de padrões e API para acesso a vários tipos de dados

transparentemente do seu suporte de armazenamento físico 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):

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

Page 22: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

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)

Page 23: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

MDX: exemplo criação de cubo

Dimensões: {Produto, Local, Tempo, Vendas}

Hierarquias:Produto:

Software: {EditorTexto, Planilha, EditorGrafico}Hardware: {Mouse,Teclado,Monitor,Gabinete}

Local:País: {Brasil, México, USA}

Tempo:Ano: {1998,1999}Semestre: {S1,S2}

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>

Page 24: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

MDX: sintaxe das consultas

WITH 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

Page 25: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

MDX: exemplo de visualização inicial

a um nível arbitrário

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 México USA

1998 1999 1998 1999 1998 1999

Editor de Texto 167 173 160 164 197 208

Planilha Eletrônica 120 122 110 130 133 136

Software

Editoração Gráfica 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

Page 26: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

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]).

Brasil México USA

1998 1999 1998 1999 1998 1999

S1 S2 S1 S2 S1 S2 S1 S2 S1 S2 S1 S2

Editor de Texto 95 72 94 79 68 92 75 89 99 98 102 106

Planilha Eletrônica 53 67 58 64 49 61 62 68 62 71 65 71

Software

Editoração Gráfica 71 63 63 74 68 58 56 72 74 83 86 78

Mouse 112 133 124 141 114 116 111 132 136 144 156 137

Teclado 46 34 49 33 31 33 29 37 46 58 57 53

Monitor 42 30 31 42 32 24 33 25 51 43 53 57

Hardware

Gabinete 29 37 35 33 23 29 29 24 37 41 45 36

Page 27: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

MDX: exemplo de roll-up

SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS}, {[Tempo].[Semestre].MEMBERS}) ON COLUMNS NON EMPTY {[ProdCat].MEMBERS} ON ROWS FROM Vendas WHERE ([Medidas].[Vendas]).

Brasil México 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

Page 28: Banco de Dados Multidimensionais e OLAP (On-Line Analytical Processing) Jacques Robin e Robson Fidalgo CIn-UFPE.

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]).