Exemplo-de-Motiva‡Æo

Propaganda
UFPB – UNIVERSIDADE FEDERAL DA PARAÍBA.
CENTRO DE CIÊNCIAS E TECNOLOGIA.
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO.
CURSO DE MESTRADO EM INFORMÁTICA.
DISCIPLINA: BANCO DE DADOS MULTIDIMENSIONAL
PROFESSOR: MARCOS SAMPAIO
PROJETO DA DISCIPLINA
Projeto de um Sistema DWing para uma Empresa
de Consultoria Fictícia
Campina Grande – Abril de 2002
ALEX SANDRO DA CUNHA RÊGO
ELOI ROCHA NETO
ELY WAGNER AGUIAR
Alunos do curso de Pós-Graduação em Informática da
Universidade Federal da Paraíba – UFPB
Projeto de um Sistema DWing para
uma Empresa de Consultoria Fictícia
Trabalho
que
apresentamos
ao
Professor
Marcus Sampaio, da disciplina Banco de Dados
Multidimensional, referente à segunda etapa do
projeto.
Campina Grande – Maio de 2002
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
2
Í N D I C E
A N A L Í T I C O
1.
INTRODUÇÃO ............................................................................................... 4
2.
ESTRELA BÁSICA ........................................................................................ 5
3.
CONSULTAS SQL CORRESPONDENTE ÀS QUERY PATTERNS ...... 6
4.
QUERY PATTERNS ...................................................................................... 6
4.1
4.2
4.3
4.4
4.5
5.
ANÁLISE COMPARATIVA DE CUSTOS E FATURAMENTO ENTRE CLIENTES AO
LONGO DO TEMPO ............................................................................................... 6
FATURAMENTO ASSOCIADO COM DIFERENTES TIPOS DE SERVIÇO DE
CONSULTORIA ..................................................................................................... 6
CLIENTES MAIS RENTÁVEIS................................................................................. 7
ÍNDICE DE UTILIZAÇÃO DOS CONSULTORES......................................................... 8
RENTABILIDADE DE PROJETOS ESPECÍFICOS ....................................................... 8
OTIMIZAÇÃO DE CONSULTAS .............................................................. 10
5.1
5.2
5.3
CÁLCULO DO TAMANHO DAS TABELAS ............................................................. 10
CRIAÇÃO DE ESTRELAS SECUNDÁRIAS ............................................................. 11
ANÁLISE DE ESPARCIDADE ............................................................................... 12
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
3
1. INTRODUÇÃO
Este trabalho apresenta a segunda etapa do projeto de um Data Warehouse para uma
empresa fictícia de consultoria. Nele são mostradas as consultas SQL das Query Patterns, as
estrelas secundárias e uma análise de esparcidade das tabelas de fato primária e secundárias.
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
4
2. ESTRELA BÁSICA
TEMPO
#cod_tempo
hora
data
dia_mês
semana
mês
ano
LANCAMENTO
#cod_tempo
#cod_consultor
#cod_atividade
num_horas
custo
lucro
faturamento
CONSULTOR
#cod_consultor
nome_consultor
ATIVIDADE
#cod_atividade
tipo_atividade
nome_cliente
tipo_servico
nome_projeto
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
5
3. CONSULTAS SQL CORRESPONDENTE ÀS QUERY
PATTERNS
4. QUERY PATTERNS
4.1
ANÁLISE COMPARATIVA DE CUSTOS E
FATURAMENTO ENTRE CLIENTES AO LONGO DO
TEMPO
SELECT
T.semana,
T.mes,
T.ano,
A.nome_cliente,
SUM(L.custo),
SUM(L.faturamento)
FROM
Lancamento AS L,
Tempo AS T,
Atividade AS A
WHERE
L.cod_tempo = T.cod_tempo AND
L.cod_atividade = A.cod_atividade AND
T.data BETWEEN ? AND ?
CUBE BY
T.semana,
T.mes,
T.ano,
A.nome_cliente
4.2
FATURAMENTO ASSOCIADO COM
DE SERVIÇO DE CONSULTORIA
DIFERENTES
TIPOS
SELECT
T.semana,
T.mes,
T.ano,
A.tipo_servico,
SUM(L.faturamento)
FROM
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
6
Tempo AS T,
Lancamento AS L,
Atividade AS A
WHERE
L.cod_atividade = A.cod_atividade AND
T.data BETWEEN ? AND ?
CUBE BY
T.semana,
T.mes,
T.ano,
A.tipo_servico
4.3
CLIENTES MAIS
RENTÁVEIS
SELECT
T.semana,
T.mes,
T.ano,
A.nome_cliente,
SUM(L.lucro) AS lucro_total
FROM
Tempo AS T,
Lancamento AS L,
Atividade AS A
WHERE
T.cod_tempo = L.cod_tempo AND
L.cod_atividade = A.cod_atividade AND
T.data BETWEEN ? AND ?
CUBE BY
T.semana,
T.mes,
T.ano,
A.nome_cliente
ORDER BY
lucro_total DESC LIMIT 10
Consideramos que seja do interesse do usuário visualizar os 10 clientes mais rentáveis.
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
7
4.4
ÍNDICE DE
UTILIZAÇÃO
DOS CONSULTORES
SELECT
T.semana,
T.mes,
T.ano,
A.nome_consultor,
SUM(L.num_horas) AS total_horas
FROM
Tempo AS T,
Lancamento AS L,
Consultor AS C
WHERE
T.cod_tempo = L.cod_tempo AND
L.cod_consultor = C.cod_consultor AND
T.data BETWEEN ? AND ?
CUBE BY
T.semana,
T.mes,
T.ano,
A.nome_consultor
ORDER BY
total_horas DESC
4.5
RENTABILIDADE
DE PROJETOS
ESPECÍFICOS
SELECT
T.semana,
T.mes,
T.ano,
A.nome_projeto,
SUM(L.lucro) AS lucro_total
FROM
Lancamento AS L,
Atividade AS A,
Tempo AS T
WHERE
T.cod_tempo = L.cod_tempo AND
L.cod_atividade = A.cod_atividade AND
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
8
A.nome_projeto = ? AND
T.data BETWEEN ? AND ?
CUBE BY
T.semana,
T.mes,
T.ano,
A.nome_projeto
ORDER BY
lucro_total DESC
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
9
5. OTIMIZAÇÃO DE CONSULTAS
5.1
CÁLCULO DO TAMANHO DAS
TABELAS
Para otimizar as consultas ao Data Warehouse, é necessário conhecer o tamanho das tabelas
de dimensão e suas consultas mais freqüentes. Consideramos que a empresa está em
operação há 40 anos e que neste período tenha tido 100 consultores, 100 atividades, 3 tipos de
serviço, 50 clientes e 150 projetos. Calculamos o tamanho máximo possível de cada uma das
tabela a seguir:
TEMPO
24 hs x 365 dias x 40 anos = 350.400 linhas
CONSULTOR
100 linhas
ATIVIDADE
100 linhas
LANÇAMENTO
350.400 x 100 x 100 = 3.504.000.000 linhas
A tabela Lancamento possui menos linhas do que seu tamanho máximo possível.
Consideramos que durante os 40 anos de funcionamento da consultoria, em cada semana,
houve uma média de 50 lançamentos a cada hora e que se trabalhava 8 hs durante 5 dias da
semana.
LANCAMENTO
8 hs x 5 dias x 52 semanas x 40 anos x 50 lançamentos = 4.160.000 linhas
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
10
5.2
CRIAÇÃO
DE ESTRELAS
SECUNDÁRIAS
Consideramos que a agregação por semana é a mais freqüente nas consultas. Por isso
criamos a estrela secundária LANCAMENTO_SEMANAL, com os valores da tabela de fato já
agregados por semana. Essa tabela tem um tamanho inferior ao da tabela LANCAMENTO, e
isso agiliza a maioria das consultas do usuário. Ao invés de 4.160.000, o banco terá que
manipular apenas 2.080 linhas para realizar as consultas.
TEMPO_SEMANAL
52 semanas x 40 anos = 2.080 linhas
O tamanho máximo da tabela LANCAMENTO_SEMANAL pode ser calculado a seguir:
LANCAMENTO_SEMANAL
2.080 x 100 consultores x 100 atividades = 20.800.000 linhas
Consideramos que ao longo dos 40 anos, em média 15 consultores realizaram o lançamento
de 20 atividades em cada semana. O tamanho da tabela LANCAMENTO_SEMANAL pode ser
calculado como a seguir:
LANCAMENTO_SEMANAL
2.080 x 15 consultores x 20 atividades = 624.000 linhas
Consideramos também que a consulta 4.2 (Faturamento associado com diferentes tipos de
serviço de consultoria) é a utilizada mais freqüentemente pelo usuário. Por esse motivo,
criamos a estrela secundária LANCAMENTO_TIPOSERV. Considerando que existam 3 tipos
de serviço de consultoria, o tamanho da tabela pôde ser calculado a seguir:
LANCAMENTO_TIPOSERV
2.080 x 3 tipos de serviço = 6.240 linhas
Ela é muito menor que as outras tabelas e permite que a consulta 4.2 seja gerada rapidamente.
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
11
TEMPO
#cod_tempo
hora
data
dia_mês
semana
mês
ano
LANCAMENTO
CONSULTOR
#cod_tempo
#cod_consultor
#cod_atividade
num_horas
custo
lucro
faturamento
#cod_consultor
nome_consultor
LANCAMENTO _SEMANAL
ATIVIDADE
LANCAMENTO _TIPOSERV
#cod_tempo
#cod_consultor
#cod_atividade
num_horas
custo
lucro
faturamento
#cod_atividade
tipo_atividade
nome_cliente
tipo_servico
nome_projeto
#cod_tempo
#cod_tipo_servico
num_horas
custo
lucro
faturamento
TIPO_SERVICO
TEMPO_SEMANAL
#cod_tipo_servico
tipo_servico
nome_projeto
#cod_tempo
semana
mês
ano
O Agregate Navigator desviará as consultas para as tabelas secundárias sempre que isso
trouxer um desempenho melhor em sua execução. Por exemplo, a consulta 4.5 (Rentabilidade
de projetos específicos) quando agrupada por semana, terá sua cláusula FROM alterada para
utilizar as tabelas LANCAMENTO_SEMANAL e TEMPO SEMANAL. Isso certamente trará um
desempenho melhor do que se o processamento tivesse que ser sobre as tabelas
LANCAMENTO e TEMPO, que são bem maiores.
5.3
ANÁLISE DE ESPARCIDADE
Na tabela a seguir, podemos comparar os tamanhos das tabelas de fato primária e
secundárias.
TABELAS
LANÇAMENTO
TEMPO
CONSULTOR
ATIVIDADE
MÁXIMO LINHAS
LINHAS
ESPARC.
350.400
100
100
3.504.000.000
4.160.000
0,12 %
LANÇAMENTO_SEMANAL
2.080
100
100
20.800.000
624.000
3,00 %
LANÇAMENTO_TIPOSERV
2.080
-
3
6.240
6.240
100,00 %
Observamos que não ocorre a falha de esparcidade nas tabelas de fato do Data Warehouse da
empresa de consultoria, visto que quanto mais agregada é a tabela, menor é seu tamanho.
UFPB – Universidade Federal da Paraíba
Banco de Dados Multidimensional
12
Download