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.
Veja: MVC e COBOL
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 |
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ção | Tamanho máximo suportado |
COMMAREA | 32.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:
- IBM - Passing data to other programs
- IBM - COMMAREA or channel data structures
- IBM - Exploitation of 64-bit storage by CICS TS
- Using IBM CICS Transaction Server Channels and Containers
- 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
FELIPE BARBOSA FERREIRA
Até o próximo post!
Nenhum comentário:
Postar um comentário