Gestion des données

La gestion des données sur IBM Z repose sur deux grandes familles de structures : les fichiers VSAM (Virtual Storage Access Method) et les fichiers NON-VSAM

VSAM constitue la méthode d’accès moderne et optimisée, utilisée notamment par CICS, IMS, DB2 ainsi que par le système lui-même.

Les fichiers NON-VSAM, plus traditionnels, restent massivement utilisés pour organiser le code, les bibliothèques système et les membres JCL.


Fichiers VSAM

VSAM regroupe plusieurs types de datasets, chacun spécialisé dans une manière différente d’organiser et d’adresser les données. On parle ici de CLUSTERS.

KSDS (Key-Sequenced Data Set)

Les données sont organisées en paires clé / enregistrement, permettant une recherche rapide via un index B-tree.

+---- Index -----+      +------- Data Records -------+
| Key → pointer  | ---> | Record(key=1001)           |
| Key → pointer  | ---> | Record(key=1020)           |
| ...            | ---> | Record(key=1050)           |
+----------------+      +-----------------------------+

ESDS (Entry-Sequenced Data Set)

Les enregistrements sont stockés dans l’ordre d’arrivée, sans clé. L’accès est alors séquentiel ou direct par RBA (Relative Byte Address).

  +-------------------------------+
  | Rec1 | Rec2 | Rec3 | Rec4 ... |
  +-------------------------------+

RRDS (Relative Record Data Set)

Les enregistrements sont stockés dans des emplacements fixes numérotés, comme des cases d’un tableau. L’accès se fait alors par numéro d’enregistrement (RRN).

  +------+------+------+------+
  |  R1  |  R2  |  R3  |  R4  |
  +------+------+------+------+
     ^      ^      ^      ^
    RRN1   RRN2   RRN3   RRN4

LDS (Linear Data Set)

Fichier “linéaire” sans notion d’enregistrement, vu comme un simple flux d’octets regroupés en CI de 4K.

  +---------------------------------------------+
  |  Flux continu d’octets (aucune structure)   |
  +---------------------------------------------+

Fichiers Non-VSAM

Fichiers séquentiels

Un fichier séquentiel est un dataset non-partitionné dans lequel les enregistrements sont lus et écrits strictement dans l’ordre. C’est le format le plus simple et le plus utilisé historiquement.

PDS (Partitioned Data Set)

Un PDS est un dataset contenant un ou plusieurs membres. Il comporte un directory, qui se comporte comme un index qui va pointer vers les différents membres.

  +-----------------------------------------+
  |              PDS / PDSE                 |
  |-----------------------------------------|
  | Directory (table des membres)           |
  |   - MBR1  → pointeur vers contenu       |
  |   - MBR2  → pointeur vers contenu       |
  |   - MBR3  → pointeur vers contenu       |
  |-----------------------------------------|
  | Contenu des membres                     |
  |    [Contenu MBR1]                       |
  |    [Contenu MBR2]                       |
  |    [Contenu MBR3]                       |
  +-----------------------------------------+

Membre : une unité logique dans un dataset partitionné (PDS ou PDSE). Il se comporte comme un fichier individuel à l’intérieur d’un conteneur commun. Un membre porte toujours un nom (8 caractères maximum) et contient généralement du texte ou du code : JCL, macros assembleur, paramètres, tables, scripts REXX, sources COBOL, etc.

Pour l’allocation, on considère qu’il faut 1 bloc directory pour 5 membres.

PDSE (Partitioned Data Set Extended)

Version moderne du PDS, plus performante et sans problème de fragmentation.

Pour différencier un PDSE d’un PDS lors d’une allocation, il n’est pas nécessaire de spécifier de taille de directory, mais il faut par contre spécifier LIBRARY dans Data set name type