Sie sind auf Seite 1von 34

OLAP (On-Line Analytical Processing)

e Banco de Dados Multidimensionais


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)


MDX: exemplo criao de cubo
Dimenses: {Produto, Local,
Tempo, Vendas}
Hierarquias:
Produto:
Software:
{EditorTexto, Planilha, EditorGrafico}
Hardware:
{Mouse,Teclado,Monitor,Gabinete}
Local:
Pas: {Brasil, Mxico, 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 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]).



Brasil Mxico 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 Eletrnica 53 67 58 64 49 61 62 68 62 71 65 71
Software
Editorao Grfica 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 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]).