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.

Apresentação sem título

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.