Introdução


O segmento do Varejo possui uma dinâmica de decisões muito ativa e desafiadora. Olhando para esta necessidade, foram levantados alguns pontos fundamentais, dentre eles a Gestão de Estoques como uma visão de painel centralizador. Muitas são as informações que podem ser acopladas em um painel vocacionado para o estoque, como por exemplo:

Objetivo do estudo


Para consolidar em um painel uma visão mais robusta e diversificada, uma premissa precisa ser atendida: Performance

Visando avaliar os riscos e possibilidades técnicas disponíveis, um estudo foi criado para entender qual alternativa seria a mais assertiva para viabilizar o projeto.

Possibilidades avaliadas


Views

As Views são consultas armazenadas no banco de dados, realizando a funcionalidade de execuções via querys. Sua estrutura trabalha como uma tabela virutal no banco, similar à tabela real, porém sem armazenar dados. Sua utilização pelo produto padrão no Protheus não possui muitos casos, mas foi feita uma pesquisa com o time de manufatura para entender sua eficácia. O que foi reportado é um cenário de muitos problemas devido a falta de um correto planejamento na época em que foi disponibilizado.  Entrando mais no detalhe, é um tratamento para atender uma legislação ( Bloco K ) e a massa de dados é muito alta, envolvendo tabelas robustas de um período grande. Pelo fato do volume de dados ser muito alto, existem cenários em que o limite da tablespace é alcançado. Por esta razão seu uso foi descontinuado. 

Stored Procedures

Seu conceito é o armazenamento de um conjunto de instruções que podem ser executadas de maneira uniforme, como uma função. Possui ampla utilização em especial no contábil do Protheus. Dentro do âmbito do estudo, foi compreendido que a linguagem dedicada para cada banco de dados homologados, tal como seu processo de expedição e aplicação por parte do cliente seria um ponto de atenção relevante, uma vez que visamos uma entrega mais simples e dinâmica para nossos clientes.

Bind Variable

Disponibilizado pelo framework do Protheus através da classe FWPreparedStatement , trata-se de um objeto que representa um comando SQL precompilado. Sua finalidade é utilizar a instrução por diversas vezes de maneira eficiente. Seu uso é recomendado pelo Totvs para novos desenvolvimentos, sendo um case conhecido, o projeto que o Varejo atuou em conjunto com o time do Fiscal e engenharia Protheus:  Performance EFD ICMS IPI

Multithreads

A execução em multitarefa permite agilizar o processamento quando estamos lidando com um grande volume de dados. Executar threads de forma simultânea em um processo/rotina, permite um alto ganho de performance. Seu uso porém precisa ser avaliado com critério. Mencionando o case trabalhado com o Fiscal do Protheus, foi retirado o processo de multiplas threads e substituído pelo FWPreparedStatement (tópico Bind Variable).

Tabelas Consolidadoras

A necessidade de buscar informações relacionadas em diversas tabelas pode ocasionar lentidão no processo quando necessitamos desses dados que estão em tabelas com grandes volumes. Uma forma de mitigar ou solucionar essa questão é disponibilizar os dados em tabelas consolidadoras onde os dados já estão prontos/formatados, ganhando assim agilidade na busca da informação, já que não será necessário buscar as informações em diversas tabelas diferentes.


Painel de Gestão - Visão de negócio


Representação Técnica dos Componentes


A ilustração abaixo representa como cada componente de interface será tratado tecnicamente.




Considerações finais


Considerando o modelo de arquitetura acima, serão utilizados componentes técnicos vocacionados para a necessidade da visão consolidada. Esta estratégia irá proporcionar um resultado rápido, atendendo o principal requisito do estudo, que é a performance. Foram obedecidas as orientações da engenharia corporativa do Protheus, para que as melhores práticas sejam empregadas, tendo como base cases reais em clientes com considerável volume de dados, em rotinas que tinham no passado um histórico de performance como ofensor. Diante dos resultados aferidos, é correto afirmar que a estratégia é segura e aplicável.