banco de dados multidimensionais e olap (on-line analytical processing) jacques robin e robson...
TRANSCRIPT
Banco de Dados Multidimensionais e
OLAP (On-Line Analytical Processing)
Jacques Robin e Robson FidalgoCIn-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
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.
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%
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
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
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
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
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 ?
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
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
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
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
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
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
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
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)
Remodelagem de dados: relacional dimensional
TempoTempo
ProdutoProduto
ClienteCliente
LocalizaçãoLocalização
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): 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
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, 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>
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
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
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
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
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]).