Translate

Mostrar mensagens com a etiqueta acesso sequencial. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta acesso sequencial. Mostrar todas as mensagens

quarta-feira, 4 de abril de 2007

O que é VSAM ESDS?

 

Bellacosa Mainframe apresenta vsam esds

O que é VSAM ESDS?

Quando alguém começa a estudar armazenamento de dados no mainframe, logo descobre que existe uma tecnologia chamada VSAM (Virtual Storage Access Method).

Dentro do VSAM existem quatro tipos principais de arquivos:

  • KSDS (Key Sequenced Data Set)

  • ESDS (Entry Sequenced Data Set)

  • RRDS (Relative Record Data Set)

  • LDS (Linear Data Set)

Neste artigo vamos conhecer o ESDS, um dos formatos mais simples e eficientes do VSAM.


Definição simples

O ESDS (Entry Sequenced Data Set) é um tipo de arquivo VSAM onde os registros são gravados exatamente na ordem em que chegam.

Não existe chave primária.

Não existe ordenação.

Não existe índice.

Cada novo registro é simplesmente adicionado ao final do arquivo.


Uma analogia simples

Imagine um caderno.

Você começa a escrever na primeira página.

Depois escreve na segunda.

Depois na terceira.

Você nunca reorganiza as páginas.

Você apenas continua escrevendo.

O ESDS funciona exatamente assim.


O que significa ESDS?

ESDS significa:

Entry Sequenced Data Set

Em português:

Conjunto de Dados Sequencial por Entrada.

O nome explica seu funcionamento:

Os registros permanecem na mesma sequência em que foram inseridos.


Como funciona?

Imagine que um sistema grave os seguintes clientes.

João
Maria
Carlos
Ana
Pedro

O ESDS armazenará exatamente nesta ordem.

Registro 1 → João
Registro 2 → Maria
Registro 3 → Carlos
Registro 4 → Ana
Registro 5 → Pedro

Se um novo cliente chegar:

José

Ele será colocado no final.

Registro 6 → José

Nada será reorganizado.


Não existe chave

Essa é uma característica muito importante.

Diferente do KSDS:

12345
23456
34567

No ESDS não existe:

  • chave;

  • índice;

  • pesquisa direta por chave.

Os registros são apenas armazenados em sequência.


Como localizar um registro?

Existem duas formas principais.

1. Leitura Sequencial

O programa lê:

Registro 1

↓

Registro 2

↓

Registro 3

↓

Registro 4

Até encontrar o registro desejado.


2. RBA

O ESDS possui um identificador chamado:

RBA

Relative Byte Address

O RBA indica a posição física do registro dentro do arquivo.

Exemplo:

João   → RBA 00000000

Maria  → RBA 00000080

Carlos → RBA 00000160

Se o programa conhece o RBA, pode acessar diretamente aquele registro.


Como os registros são gravados?

Sempre no final.

Exemplo:

ANTES

A
B
C
D

Após inserir "E":

A
B
C
D
E

Nunca ocorre reorganização automática.


Como excluir um registro?

O ESDS não remove fisicamente o registro.

Normalmente o sistema:

  • marca como excluído;

  • reutiliza posteriormente;

  • reorganiza o arquivo através de utilitários.


Como alterar um registro?

Pode ser atualizado.

Porém seu tamanho normalmente não deve ultrapassar o espaço disponível.

Caso contrário pode ser necessário reorganizar o arquivo.


Estrutura do ESDS

+----------------------+

Registro 1

+----------------------+

Registro 2

+----------------------+

Registro 3

+----------------------+

Registro 4

+----------------------+

Registro 5

+----------------------+

Tudo em sequência.


Quando utilizar ESDS?

O ESDS é indicado quando:

  • a ordem de chegada é importante;

  • haverá muitas gravações;

  • pouca pesquisa por chave;

  • leitura predominantemente sequencial.


Exemplos de uso

  • logs de aplicações;

  • trilhas de auditoria;

  • históricos;

  • arquivos temporários;

  • captura de eventos;

  • processamento batch.


Como criar um ESDS?

Normalmente utilizando IDCAMS.

Exemplo simplificado:

//DEFINE EXEC PGM=IDCAMS

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

 DEFINE CLUSTER (

 NAME(BELLA.CLIENTES.ESDS)

 INDEXED

 NONINDEXED

 RECORDSIZE(80 80)

 TRACKS(5 2)

 )

 /*

Observe que o ESDS é definido como:

NONINDEXED

Ou seja:

sem índice.


Como acessar em COBOL?

Utilizando VSAM.

Exemplo:

SELECT CLIENTES
ASSIGN TO VSAMFILE
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.

Depois:

READ CLIENTES

Lendo registro por registro.


Vantagens

Simplicidade

Não possui índice.


Inserção rápida

Sempre grava no final.


Boa performance

Excelente para grandes cargas sequenciais.


Menor overhead

Menos estruturas de controle.


Desvantagens

Pesquisa lenta

Sem chave.


Pouca flexibilidade

Não é ideal para consultas frequentes.


Exclusões

Podem exigir reorganização periódica.


ESDS x KSDS

ESDSKSDS
Sem chavePossui chave
Sem índiceÍndice automático
Ordem de entradaOrdem pela chave
Inserção rápidaInserção mais complexa
Leitura sequencialPesquisa rápida por chave

Curiosidades incríveis

1. O ESDS é um dos tipos mais antigos do VSAM

Ele existe desde a introdução do VSAM na década de 1970.


2. O RBA é fundamental

Muitos sistemas utilizam o Relative Byte Address para localizar registros rapidamente.


3. O ESDS é excelente para auditoria

Como preserva a ordem de gravação, é ideal para armazenar históricos e trilhas de eventos.


4. Muitos sistemas batch utilizam ESDS

Principalmente quando os dados são processados em sequência.


Erros comuns de iniciantes

"ESDS possui chave"

Não.

Ele não utiliza chave primária.


"É igual KSDS"

Não.

KSDS possui índice e pesquisa por chave.

ESDS trabalha com sequência de entrada.


"Posso pesquisar rapidamente qualquer registro"

Somente se conhecer o RBA.

Caso contrário, normalmente é necessária uma leitura sequencial.


Quando escolher ESDS?

Escolha ESDS quando:

  • a ordem cronológica dos registros for importante;

  • a aplicação gravar muitos dados continuamente;

  • as consultas forem predominantemente sequenciais;

  • não houver necessidade de acesso frequente por chave.


Conclusão

O VSAM ESDS é um tipo de arquivo que armazena registros exatamente na ordem em que são inseridos, sem utilizar índices ou chaves.

Sua simplicidade proporciona excelente desempenho para gravações sequenciais, tornando-o uma escolha ideal para logs, auditorias, históricos e aplicações batch.

Embora não seja a melhor opção para pesquisas rápidas, o ESDS continua sendo uma peça importante da arquitetura VSAM e um conceito fundamental para quem deseja dominar o armazenamento de dados no ambiente IBM Mainframe.


domingo, 11 de fevereiro de 2007

O que é Dataset QSAM?

 

Bellacosa Mainframe o q é dataset QSAM

O que é Dataset QSAM?

QSAM significa:

Queued Sequential Access Method

É um dos métodos de acesso a arquivos mais antigos, importantes e utilizados da história do mainframe.

Praticamente todo programador COBOL batch trabalha com QSAM em algum momento.


Definição simples

QSAM é:

o método de acesso usado para ler e gravar arquivos sequenciais no z/OS.

Quando falamos de um dataset sequencial (PS), normalmente estamos falando de um arquivo acessado através do QSAM.


Analogia simples

Imagine uma fita cassete.

Você precisa ouvir:

Música 1
 ↓
Música 2
 ↓
Música 3
 ↓
Música 4

Não pode pular diretamente para a música 4.

O QSAM funciona da mesma forma.


Fluxo QSAM

Registro 1
    ↓
Registro 2
    ↓
Registro 3
    ↓
Registro 4

Leitura sequencial.


Onde o QSAM é usado?

Principalmente em:

  • COBOL Batch

  • PL/I

  • Assembler

  • Easytrieve

  • SORT

  • Syncsort

  • DFSORT

  • JCL


Tipo de Dataset

Normalmente:

PS (Physical Sequential)

Exemplo de Dataset QSAM

BANCO.CLIENTES.ARQ

Conteúdo:

00001JOAO SILVA
00002MARIA SOUZA
00003CARLOS LIMA

Como o COBOL acessa?

Na ENVIRONMENT DIVISION:

SELECT ARQCLI
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL.

Na FILE SECTION

FD ARQCLI.

01 REG-CLIENTE.
   05 CLI-ID    PIC 9(5).
   05 CLI-NOME  PIC X(30).

Leitura QSAM

READ ARQCLI

A cada READ:

Registro 1
 ↓
Registro 2
 ↓
Registro 3

Escrita QSAM

WRITE REG-CLIENTE

O novo registro é gravado no final do arquivo.


Operações principais

OPEN

OPEN INPUT ARQCLI

READ

READ ARQCLI

WRITE

WRITE REG-CLIENTE

CLOSE

CLOSE ARQCLI

Como o JCL participa?

//CLIENTE DD DSN=BANCO.CLIENTES.ARQ,
//            DISP=SHR

Fluxo:

JCL
 ↓
DDNAME
 ↓
QSAM
 ↓
COBOL

O que é Buffering?

O QSAM utiliza buffers em memória.

Em vez de ler um registro por vez:

Disco
 ↓
Buffer
 ↓
Programa

Isso melhora muito a performance.


O que significa "Queued"?

O sistema mantém uma fila de registros em memória.

Por isso o nome:

Queued Sequential Access Method

QSAM x BSAM

QSAM

Mais simples.

O sistema controla os buffers.

Programa
 ↓
QSAM
 ↓
Disco

BSAM

Mais baixo nível.

O programador controla os buffers.

Programa
 ↓
Buffer Manual
 ↓
Disco

QSAM x VSAM

QSAM

Acesso sequencial.

1
↓
2
↓
3
↓
4

VSAM KSDS

Acesso por chave.

PROCURA CHAVE 00003
       ↓
Registro encontrado

Vantagens do QSAM

✅ Simples

✅ Excelente para batch

✅ Muito rápido

✅ Fácil programação COBOL

✅ Baixo consumo de recursos


Desvantagens

❌ Não possui índice

❌ Não acessa diretamente um registro específico

❌ Necessita percorrer registros anteriores


Casos de uso clássicos

Folha salarial

Funcionário 1
Funcionário 2
Funcionário 3
...

Relatórios

Cliente 1
Cliente 2
Cliente 3
...

Processamento bancário

Transação 1
Transação 2
Transação 3
...

Exemplo Batch Completo

OPEN INPUT ARQCLI

PERFORM UNTIL EOF = 'S'

   READ ARQCLI
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSAR

   END-READ

END-PERFORM

CLOSE ARQCLI

Curiosidades

1. Grande parte dos batchs do mundo ainda utiliza QSAM

2. O QSAM existe desde os primeiros sistemas OS/360

3. Muitos bancos processam bilhões de registros QSAM diariamente

4. DFSORT e Syncsort trabalham intensamente com datasets QSAM


Erros comuns de iniciantes

Esquecer OPEN


Não tratar EOF


Layout incompatível


DDNAME diferente do ASSIGN


Não verificar FILE STATUS


Resumo rápido

ConceitoSignificado
QSAMQueued Sequential Access Method
Tipo de ArquivoSequencial (PS)
AcessoSequencial
Comando COBOLREAD / WRITE
PerformanceAlta
ÍndiceNão
Uso PrincipalBatch
BufferAutomático

Conclusão

O QSAM é o método de acesso padrão para datasets sequenciais no z/OS. Ele utiliza buffers automáticos e acesso sequencial aos registros, sendo a base de grande parte dos programas COBOL batch executados diariamente nos ambientes IBM Z.