sábado, 3 de setembro de 2016

Quantidade de dados suportados Commarea / Container

Olá!

No post anterior foi apresentado como realizar a codificação de um programa para consultar os registros do banco de dados (DB), ou seja, realizar um Select e retornar todos os registros.

Agora pense que o desenvolvimento da aplicação será sobre o padrão de arquitetura MVC, e que tenha que retornar os registros para o usuário.


Logo, quando o usuário realizar uma requisição na camada de apresentação, sabemos que a rotina que realiza o Select estará na camada de modelos e deve repassar os dados da consulta, para uma rotina que está na camada de controles, que por sua vez essa rotina da camada de controles passa o resultado para a camada de apresentação. Para melhor entendimento veja a ilustração abaixo:

tramite de dados entre as camadas - felipe barbosa ferreira
Tramite de dados entre as camadas

Assim, tenha o foco no transito dos dados do programa que realiza a consulta no DB que está na camada de modelos, para o programa da camada de controle. Pois há um limite da quantidade de dados que podem ser transitadas entre a camadas.

Limite de dados? Qual é o limite máximo suportado?

Se a rotina que realiza o Select é construída para utilizar comunicação via COMMAREA, então a sua área de comunicação de dados possui o tamanho máximo de 32.700 bytes. Caso essa rotina utilize comunicação via container, o tamanho máximo cresce, veja na tabela abaixo:

Tipo de comunicaçãoTamanho máximo suportado
COMMAREA32.7 MB
Container Storage 24-bit 16 MB
Container Storage 31-bit 2 GB
Container Storage 64-bit > 2 GB e < 512 TB

Note que para o tipo de comunicação Container Storage 31-bit e 64-bit, o total de dados suportados é "alto". Mas lembre-se que dependendo da estrutura física e lógica da aplicação quanto maior é tamanho/fluxo dos dados que são trafegados, mais demorado ser o processamento dos dados, podendo resultar em uma perda significativa de performance.

Deste modo é necessário avaliar quantidade de registros que uma consulta irá retornar, para assim ter a ideia da quantidade de espaço que será utilizada para transitar os dados entre as camadas.

Pois imagine que ao construir um programa que utilize comunicação via COMMAREA, e realiza uma consulta que retorne 1 GB de dados que devem ser passados em uma única vez para a outra camada. ERRO: limite de área ultrapassado. Pois, o tamanho máximo para COMMAREA é de 32.7 MB.

Então, para construir um programa deve se estar atento de como/quanto será a utilização do espaço da área de dados, pois se o limite da área de comunicação for ultrapassado a execução do programa se finalizada com erro (ABEND).

As referências técnicas para este post estão em:
  1. IBM - Passing data to other programs
  2. IBM - COMMAREA or channel data structures
  3. IBM - Exploitation of 64-bit storage by CICS TS
  4. Using IBM CICS Transaction Server Channels and Containers
  5. What is the 64-bit address space?
Veja no próximo post, como calcular a quantidade de registros (OCCURS) que podem ser trafegados entre as camadas.

Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA

Até o próximo post!


Nenhum comentário:

Postar um comentário