Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

Informações Gerais

 

Especificação

Produto

Framework

Módulo

Inteligência de Negócios

Segmento Executor

 

Projeto1

FRW_002

IRM1

PCREQ-10027

Requisito1

PCREQ-10083

Subtarefa1

PDR_FRW_FRW002-202

Chamado2

 

País

( x ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

 

Executar um estudo com prova de conceito de ferramentas de análise para substituição ou adequação do controle de Pivot utilizado atualmente pelo Cubo.NET.

Foram identificadas situações em que o consumo de memória é excessivo, causando uma degradação da performance no Pivot da DevExpress.

Definição da Regra de Negócio

  • Criar uma tabela física no banco de dados com os dados da consulta cedida pelo cliente com 2.3 milhões de registros 

  • Estudar o controle Pivot da DevExpress e identificar alternativas para contornar o problema de perfomance
    • Vericar as propriedades de comportamento do controle para identificar as opções mais performáticas
    • Estudar a opção de ServerMode do controle de Pivot
    • Estudar a opção de OLAP do controle de Pivot

  • Estudar controles de Pivot de outros fornecedores como alternativa ao uso do DevExpress
    • Telerik
    • Infragistics
    • RadarSoft
    • ComponentOne

Comparativo de Performance entre os controles

FornecedorUso de Memória (GB)Tempo de Inicialização (Segundos)
DevExpress 14.16,14,4
DevExpress 15.26,14,0
RadarSoft4,173,5
ComponentOne4,86,2
Telerik> 10< 1,0
InfragisticsNDND

Observações:

Devido a complexidade para utilização do Pivot da Infragistics, o mesmo foi abortado para não impactar nas horas do estudo.

Apesar do cubo da RadarSoft ser o mais demorado para inicialização, aparentemente todos os cálculos de dimensões feitas pelo mesmo são efetuadas na inicialização. Desta forma este controle foi o que obteve a melhor performance na utilização pelo usuário final, enquanto todas as outras opções vão tendo a performance degradada na medida que a navegação é feita. 

Todos os controles com exceção do RadarSoft apresentam baixa performance ao trabalhar com este conjunto de dados.

Considerações finais

Fizemos o contato com o suporte da DevExpress a respeito desta baixa performance do componente. Mesmo após seguirmos as orientações dadas por eles, não obtivemos uma melhora considerável. Criamos um protótipo simulando a nossa situação e enviamos para eles.

Considerando este cenário, a alternativa mais eficiente seria utilizar o ServerMode com uma tabela física no banco. Para isto teremos que fazer mais estudos quando a que tipo de banco utilizar pois o mesmo deve ser acessado pela aplicação cliente. 

Uma proposta seria utilizar um engine de banco de dados local como SQL Compact ou SQLite, é preciso avaliar a performance destas soluções juntamente com a possibilidade de utiliza-las com o Entity Framework ou LINQ for SQL, pois o ServerMode obrigatoriamente precisa de usar uma dessas tecnologias.

Foi avaliada a utilização do Microsoft Analysis Services, mas a mesma depende de um componente de terceiros para visualização e utilizando o DevExpress não obtivemos uma melhora de performance considerável.

Apesar do componente RadarSoft ter tido uma performance mais eficiente, a sua utilização irá ter um grande impacto na experiência de uso, pois visualmente ele é bem inferior, além de trabalhar com um conjunto de dados que deve ser previamente configurado pelo usuário, coisa que não é necessária nas outras alternativas.

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.