software‎ > ‎módulos‎ > ‎engine‎ > ‎artigos‎ > ‎

Tabelas de Soma


Indrodução


Tabelas de soma são tabelas que totalizam o conteúdo de um campo especificado pelo usuário. 

Ex: Seja uma tabela hipotética Vendas

 Data      Classe  Valor
 01/05
 2  32
 01/05  2  22
 01/05  3  11
 02/05  3  44    

Queremos gerar uma tabela de soma, agregando por data e classe.

O programador, através de um script vai definir a tabela, os campos de agregação, e os campos de soma:

Exemplo de script:

{
    tableName: "Vendas"
    viewName : "Vendas_Soma"
    fields:[{name:"data"},
              {name:"classe"}, 
              {name: "valor", agg: "sum"} ]

    indexes: ["data,classe", "classe"]

}

Teríamos a tabela Vendas_Soma

 Data  Classe  Valor
 01/05  2  54
 01/05  3  11
 02/05  3  44

Para melhor compreender o funcionamento da tabela de soma, se faz necessario compreensão dos seguintes conceitos:
  • Visão
  • Visão Materializada
  • JSON 

O que é uma visão?

Tabela derivada a partir de uma ou várias tabelas do banco de dados através de uma consulta. As visões não armazenam dados.

Wikipedia:
Uma visão, ou vista (em inglês: view), no contexto dos bancos de dados é uma relação que não armazena dados, composta dinamicamente por uma consulta que é previamente analisada e otimizada.

Entre as principais utilidades estão, a depender do SGBD utilizado, o aumento de segurança por propiciar uma visão limitada e controlada dos dados que podem ser obtidos da base e aperformance por utilizar uma consulta previamente otimizada, tornando desnecessário este processo de otimização quando for realizada.


Quais os problema em usar visões?

São re-computadas sempre que uma consulta a referencia. Esse processo pode ter um custo bastante elevado. 
Solução : Criar visões materializadas.


O que é uma visão materializada?

É o resultado do conteúdo de um visão computado, armazenado em uma tabela do banco. 
Desta forma, uma consulta envolvendo a visão pode acessar diretamente a visão materializada. 

Obs: O sistema Bematech ERP já usa visões materializadas.

Quais os problemas em usar visões materializadas?

Como uma visão materializada é uma tabela derivada e definida a partir de uma tabela base, operações de inserção, deleção e atualização nos registros dessa tabela base fazem com que a visão materializada fique desatualizada. 

Recriar a visão materializada como um todo pode ser um processo demorado e ineficiente

Solução: Aplicar na visão materializada apenas as alterações feitas na tabela base. Este tipo de atualização é chamado de manutenção incremental da visão materializada

Como funciona a tabela de soma?



Tabela Base: Nome da tabela do sistema
Tabela Delta: Onde ficará todas as alterações realizadas na tabela base
Visão Base : Uma visão da tabela base
Visão Delta: Visão da tabela delta, com os mesmo campos da visão base
Visão Materializada Base: Visão materializada da visão base
Visão do usuário: União da visão delta com a visão materializada base.

Funcionamento





O que é um objeto JSON?

Forma simplificada de escrever um objeto em javascript

Wikipedia:
JSON, um acrônimo para "JavaScript Object Notation", é um formato leve para intercâmbio de dados computacionais. JSON é um subconjunto da notação de objeto de JavaScript, mas seu uso não requer Javascript exclusivamente.


Como criar um objeto JSON?

A criação do objeto JSON é feita criando um script com a extensão .iat com o seguinte formato:

{
    tableName: "Vendas"                    
    viewName : "Vendas_Soma"         
    fields:[{name:"data"},                 
              {name:"classe"},                 
              {name: "valor", agg: "sum"} ] 

    indexes: ["data,classe", "classe"]    

}

Onde,

tableName = Nome da tabela

viewName = Nome da visão

fields = Nome dos campos e os tipos de aggregação

indexes = Nome dos campos que vão ser criados indices no banco. Poderá ser criado indices simples ou compostos.

Onde fica o processo para criação das tabelas de soma?

Ir Para / Desenvolvimento / Banco de dados / Tabelas De Soma.ip


Processo:

Grade de visões do sistema: Contém todos os scripts que define uma tabela de soma
Grade de visões criadas: Contém todos as tabelas de soma criada no banco de dados

Atualização de uma visão materializada

A atualização das visões materializada é realizada através de um tarefa no Scheduler executada de acordo com o periodicidade configurada, ou através do processo de criação das tabelas e soma.

Atualizando Manualmente

Acesse o processo "Início > Desenvolvimento > Banco de Dados > Tabelas de Soma"
  1. Na grade "Visões Criadas" selecione um registro ou todos.
  2. Clique no botão "Atualizar".
  3. Observe se o campo "Status" mudou para "Atualizada"

Agendando a Atualização

  1. Acesse o processo "Início > Admin > Agendador de Scripts"
  2. Crie uma nova tarefa
  3. Em "Período" selecione "Intervalo"
  4. Em "Hora" selecione o intervalo entre as execuções do script, recomendamos 10 minutos, mas o valor pode ser definido de acordo com o usuário.
  5. Em "Script VFS" preencha com o valor "-1898141887" que a chave do script "updateAllViewMat.ijs".
  6. Grave o agendamento e verifique se a primeira execução deste ocorre sem erros.
Mais informações sobre o agendamento de scripts.

Como criar uma definição de tabela de soma no sistema?

  1. Criar um script com extensão ".iat" no formato de objeto JSON;
  2. Entrar no processo de Tabelas de soma
  3. Escolher a visão que vai ser criada;
  4. Clicar na action de criar visão;
    Obs: A tabela de soma só esta disponível a partir da versão 10.1

Como criar uma tabela de soma no sistema?

    1. Acessar o processo bematech / Desenvolvimento / Banco de dados / Tabelas De Soma.ip;
    2. Selecionar na grade "Visões do Sistema" as visões (tabelas de soma) a serem criadas;
    3. Clicar em "criar";

Como remover uma tabela de soma do sitema?

    1. Acessar o processo bematech / Desenvolvimento / Banco de dados / Tabelas De Soma.ip;
    2. Selecionar na grade "Visões Criadas" as visões (tabelas de soma) a serem removidas;
    3. Clicar em "deletar".

Conclusão

Com as informações aqui apresentas a respeito da tabela de soma e seu funcionamento, podermos destacar os seguintes pontos:
  1. Otimização nas consultas que utilizem o tipo de aggregação do tipo SUM, com a criação de visões materializadas e com a oportunidade de criação de indices simples ou compostos para os campos. 
  2. Utilização de tabelas e visões deltas que ajudam a manter a visão sempre atualizada, sem perder a performance das consultas. 
  3. Compatibilidade com três tipos de banco de dados: SQL Server, ORACLE, PGSQL.