Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde a todos!
Eu criei este tópico para demonstrar uma iniciativa que estou realizando em um projeto e gostaria de saber a opinião e experiência dos demais colegas quanto a esta abordagem.
1. O problema:
O projeto em que comecei a trabalhar recentemente, possui diversas aplicações (QVW) já desenvolvidas e a maioria destas aplicações está usando acesso direto ao banco de dados durante as recargas. O que observei também é que boa parte das informações carregadas acabam sendo comuns para diversas aplicações, aí vem a pergunta: De que forma eu consigo eliminar estas redundâncias na extração dos dados e manter um modelo consistente entre as aplicações? <br mozdirty="" type="_moz">
2. O uso dos arquivos QVD - Escalabilidade de Aplicações:
O QlikView tem um recurso que são os chamados arquivos QVD (QlikView Data), um formato exclusivo que tem melhor performance de leitura além de outros benefícios como recargas incrementais e compressão para grandes volumes de dados. Para quem não sabe, cada arquivo deste é capaz de representar uma tabela da nuvem. Partindo deste conceito, podemos transferir o script responsável pela conexão com as fontes de dados para uma ou várias aplicações chamadas de Extratoras ou Geradoras de QVD (o objetivo delas é unicamente conectar-se as fontes, realizar as transformações necessárias e armazenar os dados nos arquivos QVD, estes QVWs geralmente não possuem objetos na interface a não ser caixas de entrada para variáveis de carga caso sejam necessárias). As aplicações por sua vez carregam os dados dos arquivos e não mais acessam diretamente os bancos de dados.
Alguns links interessantes com mais detalhes sobre o assunto:
<br mozdirty="" type="_moz">QlikBlog - Simplificando o QlikView por Guilherme Oliveira (o assunto QVD está dividido em 3 partes)
[http://qlikblog.com.br/category/desenvolvimento/ | http://qlikblog.com.br/category/desenvolvimento/]
QlikView Blog by Stefan Walther (tem alguns vídeos bem interessantes)
[http://www.qlikblog.at | http://www.qlikblog.at]
3. Dificuldades:<br mozdirty="" type="_moz">
Eu tenho implantado constantemente esse modelo e uma das dificuldades que eu observei é que às vezes você precisa alterar a lógica de criação de um arquivo e não sabe exatamente qual será o impacto (quais aplicações carregam aquele arquivo) ou saber qual a aplicação responsável por sua geração. A solução que encontrei foi desenvolver um mecanismo para uma espécie de log de cargas (loads) e armazenamentos (stores) de QVD.
4. A Solução:
Criei 3 funções (SUB) no script que chamei de: LoadFromQVD, StoreIntoQVD e LogQVD. Esse script eu transferi para um arquivo chamado QVDControl.txt que é adicionado em todos os QVW através do comando include no script:
$(include=QVDControl.txt);<br mozdirty="" type="_moz">
Eu incluí o arquivo em anexo, o código está comentado com as instruções de uso das funções. O resultado é a geração de um arquivo chamado QVD_List.qvd que é atualizado por todos os QVW que usam as funções, neste qvd eu tenho o log de todos os LOAD e STORE de arquivos . QVD de modo que eu consigo analisar:
1.Qual aplicação utiliza determinado qvd.
2.Qual aplicação é responsável por gerar o arquivo.
3.Quando este arquivo foi criado e quando foi lido.
4.Se o prazo de atualização do arquivo está ok.
Estou curioso se alguém aqui da comunidade já fez algum controle parecido ou tem alguma experiência semelhante. Por favor comentem.
Abraços.
Cesar,
Parabéns pelo seu post, é praticamente um artigo sobre controle de carga.
Até o presente momento, não tive essa necessidade, mas acompanharei o post pois achei muito interessante as suas colocações.
Abraço.
Obrigado Aderlan,
Fico feliz em contribuir com a comunidade.
Abraços.
Bem interessante.
Vou fazer alguns testes.
Muito obrigado por compartilhar.
Abraços.
Cesar,
A alguns meses a comunidade Qlikview liberou um documento chamado MetaScanner que faz uma varredura em todos os QVWs e te dá diversas informações a respeito dos metadados de um documento Qlikview inclusive os Qvds utilizados como origem ou gravados por ele. Apesar disso ela funciona somente a partir da versão 10.
O teu trabalho ficou muito bom, já que ele me parece ser portável para aqueles que ainda usam versões anteriores a 10 (9 e 8).
Eu já tive que implementar um certo controle de cargas usando funções como a que tu desenvolveste, mas somente para controlar o processo de carga incremental, armazenando a data da ultima atualização, como ponto de controle para a proxima extração.
Parabéns pela iniciativa de compartilhar o teu trabalho !!
Olá Pablo,
Eu baixei esta aplicação do MetaScanner porém não tive tempo de analisar, me parece muito interessante, assim que tiver um tempo vou verificar. Agradeço pela sugestão e pelo feedback!
Abraços.
Muito bom Cezar, estava pesquisando uma solução para este problema que estamso tendo. Tbem não sabia da aplicação MetaScanner... vamos analisar. Obrigado!
Cesar,
Parabéns pela sua iniciativa e a conclusão do seu projeto. Tenho certeza que vai ajudar muitas pessoas da nossa comunidade.
abs,