quarta-feira, 25 de setembro de 2013

Índice: Performance no acesso em tabelas

Olá,

No post de hoje, comentarei sobre um item muito importante no que se refere à performance no acesso em tabelas. Trata-se do Índice.

Para iniciar o assunto, se faz necessário citar que o armazenamento em buffer de tabela aumenta a performance quando os registros da tabela são lidos. Os registros de uma tabela bufferizada são lidos diretamente do buffer local do servidor de aplicação onde a transação de acesso está sendo executada quando a tabela é acessada, possibilitando a eliminação de acessos demorados ao BD. Este acesso é melhorado em um fator de 10 para 100. O aumento da velocidade depende da estrutura da tabela e da configuração exata do sistema. Desse modo, o armazenamento em buffer pode aumentar significativamente a performance do sistema.

Alguns tipos de armazenamento em buffer.
  • Armazenamento em buffer completo: quando é acessado um registro da tabela, todos os registros da tabela são carregados para o buffer.
  • Armazenamento em buffer genérico: quando é acessado um registro da tabela, são carregados para o buffer todos os registros que têm a parte da chave alinha à esquerda igual.
  • Armazenamento em buffer de registro individual: somente o registro acessado é carregado para o buffer.

Já um índice ajuda, isto é, agiliza os acessos de leitura a uma tabela. Um índice pode ser considerado uma cópia ordenada da tabela, reduzido aos campos de índice. Quanto maior for a frequência com que uma tabela é lida e menor a frequência das modificações dos conteúdos da tabela, melhor será armazená-la em buffer.

A seguir, apresento um exemplo do qual consegui gerar em meu ambiente, com base em meus estudos com o ABAP sobre o referido tema.




Como pode ver, a ideia simulada foi a necessidade de alguns empregados da área de RH de uma companhia aérea que necessitavam de um acesso rápido aos dados das tabelas de administração de empregados (no caso a ZEMPLOYMS). O acesso aos dados dessa tabela deveria ser agilizado. Muitas vezes, é usada a combinação do primeiro nome e do sobrenome para acessar os dados pessoais de um empregado. O sobrenome é declarado (destacado no acesso) com mais frequência que o primeiro nome. Para isso, deve ser criado um índice nessa ordem.

Bom, basicamente é isto aí.
Um abraço!

terça-feira, 24 de setembro de 2013

Elemento de Dados, Estrutura e Tab. Transparente

Olá,

Dando uma continuidade sobre o assunto que andei explorando nos últimos post's, hoje comentarei basicamente sobre estes 3 pontos que destaco no tema acima. Trata-se dos Elementos de Dados, Estrutura e Tabelas Transparentes. Posteriormente, mostrarei alguns print's de um desenvolvimento realizado em meu ambiente mini-SAP.

Os objetos básicos para a definição de dados no ABAP Dictionary são tabelas, elementos de dados e domínios. O domínio é usado para a definição técnica de um campo de tabela (alguns exemplos: TIPO e COMPRIMENTO DO CAMPO) e o elemento de dados é usado para a definição SEMÂNTICA (um exemplo: DESCRIÇÃO BREVE).

Uma tabela transparente é automaticamente criada no BD ao ser ativada no ABAP Dictionary. As categorias de dados do ABAP Dictionary são convertidos nas categorias de dados correspondentes do sistema de banco de dados. Os programas ABAP podem acessar uma tab. transparente de duas maneiras. Uma é acessando dados contidos nas tabelas com o OPEN SQL. O outro método, a tabela define um tipo estruturado que é acessado quando são definidas variáveis (ou tipos mais complexos).

Há também meios de se criar um tipo estruturado no ABAP Dictionary para o qual não existe um objeto correspondente no banco de dados. A esses denominamos de ESTRUTURAS. Elas podem ser usadas para definir os tipos de variáveis. As estruturas podem ser inseridas em tabelas ou em outras estruturas a fim de evitar definições de estruturas redundantes.

Uma cadeia de includes só pode conter uma tabela de banco de dados. A tabela na qual VOCÊ ESTÁ efetuando inclusões PERTENCE à cadeia de includes. Isso significa que você NÃO PODE INCLUIR uma tabela transparente em outra tabela transparente. Os includes SÓ PODEM conter outros includes. As definições de chave externa são geralmente transmitidas do include para a tabela de inclusão. Os atributos da definição de chave externa são transferidos do include para a tabela de inclusão, de modo que a chave externa depende da definição no include!

Além disto, devemos atualizar as configurações técnicas quando definimos uma tabela transparente no ABAP Dictionary. Configurações técnicas são usadas para otimizar individualmente os requisitos de arquivamento e o comportamento de acesso das tabelas de banco de dados. Também podem ser usadas para definir o modo como uma tabela deveria ser tratada quando é criada no BD, se a tabela deveria ser armazenada em buffer e se as modificações das entradas deveriam ser registradas em log.

Abaixo, apresento um print com uma solução gerada em meu ambiente de desenvolvimento. Nele, construí uma estrutura simples com elementos de dados para um controle de modificações das tabelas ZEMPLOYMS e ZDEPMENTMS.














Bom, basicamente é isso aí.
Abraço e até o próximo post!

quarta-feira, 11 de setembro de 2013

Tabelas Internas / ITAB's e Estruturas Profundas

Olá,

Hoje, mais um tópico sobre o tema ABAP Dictionary, mostrarei alguns exemplos com a utilização de dois outros pontos que também compreende este assunto. Trata-se das Tabelas Internas / ITAB's e Estruturas Profundas.

Quando inserimos uma tabela interna como um componente de estrutura, essa se torna uma estrutura profunda. Podemos definir tabelas internas ou ITABs usando uma estrutura de linhas existentes.

E uma estrutura profunda é composta, pelo menos, por uma tabela. O componente dessa tabela tem um nome próprio com o qual ele pode ser abordado como uma tabela interna normal. Por sua vez, uma tabela interna pode ter uma estrutura profunda como categoria de linha. 

Abaixo, apresento os print's dos exemplos desenvolvidos em meu ambiente.

Programa com o uso de ITAB's / Tabelas Internas.







Programa com o uso de Estruturas Profundas.






Como pode notar, no primeiro exemplo fiz duas listagens simples. A primeira listagem com os dados contidos na tabela do banco de dados e a segunda da tabela interna / ITAB. A tabela de banco de dados está compreendida numa ordem (ID Aero e voo) enquanto que a da tabela interna está em outra (por data).

No segundo exemplo, fiz uso de um programa simples com entrada de dados e ao fazer a listagem, apresentar tais dados que estão atrelados as informações que foram digitadas pelo usuário (no caso, os 3 tipos de telefones para contato) e listá-los também.

Bom, é isso aí.
Abraço e até o próximo post!