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
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
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.
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"
Na grade "Visões Criadas" selecione um registro ou todos.
Clique no botão "Atualizar".
Observe se o campo "Status" mudou para "Atualizada"
Agendando a Atualização
Acesse o processo "Início > Admin > Agendador de Scripts"
Crie uma nova tarefa
Em "Período" selecione "Intervalo"
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.
Em "Script VFS" preencha com o valor "-1898141887" que a chave do script "updateAllViewMat.ijs".
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?
Criar um script com extensão ".iat" no formato de objeto JSON;
Entrar no processo de Tabelas de soma
Escolher a visão que vai ser criada;
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:
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.
Utilização de tabelas e visões deltas que ajudam a manter a visão sempre atualizada, sem perder a performance das consultas.
Compatibilidade com três tipos de banco de dados: SQL Server, ORACLE, PGSQL.