quinta-feira, 11 de fevereiro de 2010

Otimização de Aplicações Planning Pré-existentes – Parte 1

Uma pergunta comum dos clientes que já tem aplicações Planning pré-existentes é "como posso otimizar a performance das minhas aplicações?". Duas iniciativas simples que eventualmente podem ajudar na melhora da performance para ambientes Planning já estabelecidos são:
  1. Remover dados históricos desnecessários
  2. Reorganizar os outlines
Remover dados históricos desnecessários

É comum que se mantenha todo o histórico de dados em aplicações Planning para facilitar a análise ano a ano. Manter uma quantidade excessiva de dados históricos no Planning significa ter uma quantidade enorme de blocos desnecessários e quanto maior a quantidade de blocos, maior o tempo de processamento dos cálculos. É claro que geralmente é necessário  manter os dados históricos disponíveis de alguma forma para análise ao longo dos anos e para isso recomendo a prática de criar aplicações Essbase para reporting de dados históricos facilitando assim a otimização das aplicações Planning. Cubos Essbase para reporting podem ser desenvolvidos para manter dados históricos. Esses novos cubos Essbase devem ser desenvolvidos baseados nas aplicações Planning mantendo a mesma estrutura. Todos os dados que não sejam para novos planejamentos orçamentários ou forecasts devem ser movidos para esses cubos de reporting que são "puramente" Essbase. Essa integração entre as aplicações Planning e os cubos Essbase de reporting podem ser feitas usando técnicas como Partitioning, @XREF, ou mesmo exportação e importaçao de dados (export/import, report scripts). Os dados de planejamento como Orçado, Forecast, etc, permanecem nas aplicações Planning e através de processos de automação, ao longo dos anos os dados que se tornam históricos são migrados para as aplicações Essbase de reporting. Sugestão de passo a passo para migrar os dados históricos do Planning:
  1. Crie aplicações Essbase nativas para receber os dados históricos.
  2. Os novos cubos devem ser baseados na estrutura das aplicações Planning existentes.
  3. Remova das aplicações Planning todos os dados que não tem relação com o processo de geração de novos budgets e forecasts.
  4. Carregue os dados históricos nas aplicações nativas Essbase para reporting.
  5. Remova os membros das dimensões do Planning que dizem respeito apenas aos dados históricos.
  6. Escolha uma das técnicas disponíveis e integre os dados do ano corrente do Planning com os cubos Essbase de reporting.

Reorganizar Outlines

Pela "cartilha" ou se preferir "by the book" é sabido que a organização de outlines deve ser feita de cima para baixo:
  1. Dimensões densas com a maior quantidade de membros stored até as dimensões densas com a menor quantidade de membros stored
  2. Dimensões esparsas com a menor quantidade de membros stored até as dimensões esparsas com a maior quantidade de membros stored.
É claro que essa regra não se aplica a todos os modelos mas é recomendado que se comece dessa forma executando várias fases de testes com múltiplas configurações executandos os cálculos em cada uma delas até chegar na organização ótima do outline.

É possível também simular cálculos usando SET MSG ONLY no calc script. Um cálculo simulado oferece resultados que ajudam na análise da performance de um cálculo real baseado nos mesmos dados e no mesmo outline

Executando um cálculo simulado com um comando como o SET NOTICE HIGH, é possível verificar o tempo de cálculo de cada dimensão esparsa. Depois, executando o cálculo real em uma ou mais dimensões é possível estimar quanto tempo o cálculo vai demorar pois deve ser alguma coisa bem próxima do tempo do cálculo simulado.

Obviamente não considere esses passos como sendo o ciclo completo de otimização das aplicações Planning, considere como um bom começo.