OLAP (On-Line Analytical Processing) e Banco de Dados Multidimensionais Jacques Robin CIn-UFPE.
Transcript of OLAP (On-Line Analytical Processing) e Banco de Dados Multidimensionais Jacques Robin CIn-UFPE.
OLAP (On-Line Analytical Processing)OLAP (On-Line Analytical Processing) e Banco de Dados e Banco de Dados Multidimensionais Multidimensionais
Jacques RobinCIn-UFPE
O que é OLAP?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: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 Banco de dado operacional x data warehouse x data martx 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 x OLAPOLTP x OLAP Função Automatizar operações diárias Auxiliar tomada de decisão Usuário humano Cliente, Atendente, DBA Executivo, Analista, Eng. de Conhecimento Software cliente Aplicativos de inventário, Aplicativos de mineração de contabilidade, ... dados, análise matemática, ... Modelo lógico Relacional, Multidimensional, orientado por aplicações orientado por assuntos Granularidade Única e atômica Múltipla e agregada Temporalidade Apenas valor corrente Histórico dos valores, dos dados atualizada continuamente completado periodicamente Consultas Simples e predefinidas Complexas e ad-hoc Direção Tanto ler quanto escrever Essencialmente ler Envolve Acessos via índice e hash Junções, varreduras Registros 10 106 Usuários 103 [0-10] Bytes MB-GB GB-TB Prioridade Disponibilidade, eficiência Flexibilidade, interatividade Métrica Numero de transações Número e tempo de cada consulta
Modelo de dados multidimensionalModelo 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 4DCuboide de dados: exemplo 4D
Location Chicago New York TorontoItem HE Com
pTel Sec
uHE Comp Tel Secu HE Comp Tel Secu
Time Supplier
Q1 Sup1Sup2
Q2 Sup1Sup2
Q3 Sup1Sup2
Q3 Sup1Sup2
Q4 Sup1Sup2
DimensõesMembros
Células
Cuboide de dados: exemplo 4DCuboide de dados: exemplo 4D
605 825 14 400Q 1
Q 2
Q 3
Q 4
C h ic a g oN e w Yo rk
To ro ntoVa nc o uve r
time
(qua
rters)
lo c a tio n (c itie s)
ho m e e n te rta inm e nt
c o m p ute r
ite m (typ e s)
p ho nese c u rity
ho m e e n te rta inm e nt
c o m p ute r
ite m (typ e s)
p ho nese c u rity
ho m e e n te rta inm e nt
c o m p ute r
ite m (typ e s)
p h o nese c u rity
sup p lie r = Ò SUP1Ó sup p lie r = Ò SUP2Ó sup p lie r = Ò SUP3Ó
Reticulado de CuboidesReticulado de Cuboides
sup p lie r
all
tim e, ite m , lo c a tio n, sup p lie r
ite m , lo c a tio ntim e, lo c a tio nite m , sup p lie rtim e, sup p lie r
tim e, lo c a tio n, sup p lie rite m , lo c a tio n, sup p lie r
lo c a tio n, sup p lie r
tim e, ite m , sup p lie r
tim e ite m lo c a tio n
tim e, ite m
tim e, ite m , lo c a tio n
0-D (a p e x) c ub o id
1-D c ub o id s
2-D c ub o id s
3-D c ub o id s
4-D (b a se ) c ub o id
Tipologia e cálculo das medidasTipologia 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 Hierarquias conceituais: da multidimensionalidade a multidimensionalidade a
multigranularidademultigranularidade Hierarquia esquemática:
• implícita 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 múltipla
Construção de hierarquias:• Manual via GUI• Automática via clustering
c o untry
c ity
p ro vinc e _ o r_sta te
m o nth we e k
ye a r
d a y
q ua rte r
stre e t
(a ) (b )
Exemplo de Exemplo de hierarquia conceitual esquemáticahierarquia conceitual esquemática
C a na d a
British C o lum b ia O nta rio
Va nc o uve r Vic to ria O tta waTo ro nto C hic a g oBuffa lo
Ne w Yo rk
Ne w Yo rk
Illino is
USA
all
lo c a tio n
all
c o untry
c ity
p ro vinc e _ o r_ sta te
Exemplo de Exemplo de hierarquia conceitual de agrupamentohierarquia 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: navegação no espaço Operadores OLAP: navegação no espaço analítico multidimensional e multigranular 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 Operadores OLAP: navegação no espaço analítico multidimensional e multigranular 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
Q1Q2
Q3Q4
1 000Ca n a d a
US A 2 0 0 0
time
(qu
arte
rs)
h o mee n t e r t a i n me n t
c o mp ut e r
i t e m ( t y p e s )
p h o n es e c u r i t y
To r on t o 3 9 5
Q1Q2
6 05Va n c o uv e r
time
(qua
rter
s)
h o mee n t e r t a i n me n t
c o mp u t e r
i t e m ( t y p e s )
J a n u a r yF e b r u a r yMa r c hAp r i lMa yJ u n eJ u l yAu g u s tS e p t e mb e rOc t o b erNov e mb e rDe c e mb e r
Ch i c a g oNe w Yo r k
Tor o n t oVa n c o uv e r
time
(mo
nths
)
h omeen t er t a i n me n t
c omp u t e r
i t e m ( t y p e s )
p h on es e c u r i t y
15 010 015 0
605 82 5 1 4 4 00Q1Q2
Q3
Q4
Ch i c a g oNe w Yo r k
To r o n t oVa n c o u v e r
time
(qu
arte
rs)
h o mee n t e r t a i n men t
c o mp ut e r
i t em ( t y p e s )
p h o n es e c u r i t y
4403 95
1 5 6 0
d i c e f o r( l o c a t i o n = ÒTo r o n t oÓ o r ÒVa n c o u v e r Ó)a n d ( t i me = ÒQ1Ó or ÒQ2Ó) a n d( i t e m = Òh o me e n t e r t a i n men t Ó o r Òc o mp u t er Ó)
r o l l - u po n l o c a t i o n( f r o m c i t i e st o c o u n t r i e s )
s l i c ef o r t i me = ÒQ1 Ó
Ch i c a g o
Ne w Yo r kTo r o n t o
Va n c o uv e r
h o mee n t e r t a i n me n t
c o mp u t e r
i t e m ( t y p e s )
p h o n es e c u r i t y
loca
tion
(ci
ties
)
6 05 82 5 14 440
h omee nt e r t a i n me n t
c o mp u t e r
p ho n es e c u r i t y
60 582 5
14
40 0
Ch i c a goNe w Yo r k
l o c a t i o n ( c i t i e s )
item
(ty
pes)
To r o n t oVa n c o u v e r
p i vo t
d r i l l - d owno n t i me( f r o m q u a r t er st o mo n t h s )
Modelos físicos de dados para OLAPModelos 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: Modelos de dados ROLAP: EstrelaEstrela
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
ModeloModelo estrela: exemplo estrela: exemplotim e
d im e nsio n ta b letim e _ ke y d a y d a y_ o f_ the _we e k m o nth q ua rte r ye a r
sa le s fa c t ta b le
tim e _ ke y ite m _ ke y b ra nc h_ ke y lo c a tio n_ ke y d o lla rs_so ld units_so ld
ite m d im e nsio n ta b le
ite m _ ke y ite m _ na m e b ra nd typ e sup p lie r_ typ e
b ra nc h d im e nsio n ta b le
b ra nc h_ ke y b ra nc h_ na m e b ra nc h_ typ e
lo c a tio n d im e nsio n ta b lelo c a tio n_ ke y stre e t c ity p ro vinc e _ o r_ sta te c o untry
Modelos de dados ROLAP: Modelos de dados ROLAP: Floco de NeveFloco de Neve
Igual ao modelo estrela exceto pela normalizaçãonormalização das tabelas de dimensões
Vantagens• 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
ModeloModelo floco de neve: exemplo floco de neve: exemplotim e
d im e nsio n ta b letim e _ ke y d a y d a y_ o f_ we e k m o nth q ua rte r ye a r
sa le s fa c t ta b le
tim e _ ke y ite m _ ke y b ra nc h_ ke y lo c a tio n_ ke y d o lla rs_so ld units_so ld
ite m d im e nsio n ta b le
ite m _ ke y ite m _ na m e b ra nd typ e sup p lie r_ke y
b ra nc h d im e nsio n ta b le
b ra nc h_ ke y b ra nc h_ na m e b ra nc h_ typ e
lo c a tio n d im e nsio n ta b lelo c a tio n_ ke y stre e t c ity_ ke y
sup p lie r d im e nsio n ta b le
sup p lie r_ke y sup p lie r_ typ e
c ity d im e nsio n ta b lec ity_ ke y c ity p ro vinc e _ o r_sta te c o untry
Modelos de dados ROLAP: Modelos de dados ROLAP: ConstelaçãoConstelaçã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
ModeloModelo coconstelaçãonstelação: : exemploexemplo
tim e d im e nsio n ta b le
tim e _ ke y d a y d a y_ o f_ we e k m o nth q ua rte r ye a r
sa le s fa c t ta b le
tim e _ ke y ite m _ ke y b ra nc h_ ke y lo c a tio n_ ke y d o lla rs_ so ld un its_ so ld
ite m d im e nsio n ta b le
ite m _ ke y ite m _ na m e b ra nd typ e sup p lie r_ typ e
b ra nc h d im e nsio n ta b le
b ra nc h_ ke y b ra nc h_ na m e b ra nc h_ typ e
lo c a tio n d im e nsio n ta b lelo c a tio n_ ke y stre e t c ity p ro vin c e _ o r_ sta te c o untry
sh ip p ing fa c t ta b le
ite m _ ke y tim e _ ke y sh ip p e r_ ke y fro m _ lo c a tio n to _ lo c a tio n d o lla rs_ c o st un its_ sh ip p e d
sh ip p e r d im e nsio n ta b le
sh ip p e r_ ke y sh ip p e r_ na m e lo c a tio n_ ke y sh ip p e r_ typ e
Elementos de um modelo de dados Elementos de um modelo de dados lógico multidimensionalló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 BDMDLinguagens 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 OLAPOLE 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 Padrões da Microsoft “abertos e orientados a objetos”“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çõesMDX: 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 cuboMDX: 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 consultasMDX: 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 MDX: exemplo de visualização inicial a um nível arbitrárioa 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 USA1998 1999 1998 1999 1998 1999
Editor de Texto 167 173 160 164 197 208Planilha Eletrônica 120 122 110 130 133 136
Software
Editoração Gráfica 134 137 126 128 157 164Mouse 245 265 230 243 280 293Teclado 80 82 64 66 104 110Monitor 72 73 56 58 94 98
Hardware
Gabinete 66 68 52 53 78 81
MDX: exemplo de drill-down MDX: exemplo de drill-down até granularidade mais baixaaté 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 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 USA1998 1999 1998 1999 1998 1999
S1 S2 S1 S2 S1 S2 S1 S2 S1 S2 S1 S2Software 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 WITHMDX: exemplo do uso de WITHWITH [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]).