VSAM KSDS - Key-Sequenced Data Set

 VSAM KSDS (Parte 1)

Apresentação

Podemos considerar o Key-Sequenced Data Set (KSDS) o mais usado e versátil dos tipos disponíveis de VSAM, é possível carregar (load) um VSAM KSDS com chave ascendente e realizar acessos randômicos, acessos sequenciais ou uma combinação, exemplo, acessar uma sequência de registros após localizar uma chave randômica (aleatoriamente escolhida).

A arquitetura do KSDS permite um registro ser recuperado partindo de uma chave fornecida, essa chave deve ser parte do registro e única para cada registro no arquivo VSAM KSDS.

Exemplo para chaves

Um arquivo de cadastro de clientes, onde há os campos Nome, CPF, Certificado Militar, e Passaporte, somente o CPF poderia ser usado como chave de acesso ao VSAM, o CPF é único, e obrigatório para todos os cidadãos brasileiros. Os demais, para nome temos homônimos, Certificado Militar não é obrigatório para as mulheres, passaporte não é documento obrigatório.

Arquitetura de um arquivo VSAM KSDS


A figura acima provê visão simplificada de um KSDS, os CIs (Control Intervals) contêm os registros e são retratados aqui verticalmente e neste exemplo os CIs estão agrupados em CAs (Control  Áreas).  

O arquivo de índices contém uma entrada (registro) para cada CI no arquivo de Dados apontando para o registro com a chave de maior valor de cada CI, sendo o endereço (endereço no disco) atua como um ponteiro para o início de cada CI.

As chaves de valores mais altos para cada CI na primeira CA são 22, 32 e 40 respectivamente, elas estão gravadas no segundo nível do Arquivo de Índice com os respectivos endereços do início de seus CIs.

No primeiro nível do Arquivo de Índice, as chaves mais altas de cada registro do segundo nível está gravada com o  valor mais alto de cada entrada do segundo nível e o ponteiro do início do registro do segundo nível.

    RECORD KEY     INDEX SET             ACTION

                77                          40                      Chave maior que a última chave registrada no Index Set da primeira CA

                77                          82                      Chave Menor que a última chave registrada no Index Set da segunda CA (Menor, então segue para pesquisar o Sequence Set).

O VSAM determinou que a chave 45 está na segunda CA. O próximo passo é verificar o “sequence set” pertencente à segunda control área para localizar o CI.

    RECORD KEY    SEQUENCE SET     ACTION

                77                             55                   Chave maior que a última chave registrada no Sequence Set do primeiro CI.

                77                             65                   Chave maior que a última chave registrada no Sequence Set do Segundo CI.

                77                             82                   Chave menor que a última chave registrada no Sequence Set do Terceiro CI. (Menor, então recupera o CI com todos os registros e entrega para processamento).

O VSAM determinou que o registro 77 está no terceiro CI da segunda CA. O endereço do ponteiro na sequência direciona a leitura para o CI correto, o VSAM lê sequencialmente o CI até encontrar a chave 77, recuperando o registro e entregando ao programa para processamento.

Free Space

Para permitir atualizações e inserções são deixados espaços livres no arquivo, permitindo acomodar novos registros ou registros maiores quando esses possuem tamanho variável portanto:
      1.   Espaços são deixados ao final de cada CI.
      2.   Alguns CI são deixados vazios dentro de cada CA.
Se um programa deleta ou atualiza registros como menores, o VSAM recupera alguns espaços agrupando os registros à esquerda, se o programa insere novos registros ou atualiza os registros para maior, os espaços livres são ocupados à direita. O VSAM atualiza os ponteiros de endereço e os valores das chaves nos índices em de acordo com as alterações.

Splits

Um CI pode não conter espaço suficiente para acomodar um novo registro, neste caso o VSAM efetua um split (divisão) de CI, movendo metade dos registros do CI lotado para um CI vazio, aquele definido como “free space” na mesma CA.
Quando isso acontece os registros não estão na ordem anterior em seus índices, portanto o VSAM realiza a atualização do Sequence Set para refletir a nova sequência dos registros.
Se não houver espaço na CA para inserir mais registros um split (divisão) de CA ocorrerá, neste caso o Index Set e o Sequence Set serão atualizados.

 KSDS split de CI

Neste exemplo, inserindo o registro que possui como chave o valor '86'. O CI no qual ele deve ser gravado não há mais espaço para gravação portanto será realizado o split de CI, ao seu lado esquerdo a situação antes de ser inserido e ao seu lado direito a situação depois da inserção, em vermelho os elementos atualizados.


KSDS split de CA

Neste exemplo, inserindo o registro que possui como chave o valor '56'. O CI no qual ele deve ser gravado não há mais espaço para gravação na CA portanto será realizado o split de CA, ao seu lado esquerdo a situação antes de ser inserido e ao seu lado direito a situação depois da inserção, em vermelho os elementos atualizados.



 

Comentários

Postagens mais visitadas deste blog

zSystem IBM (mainframe) - Arquitetura - 1

PROGRAMAÇÃO - 0001