IMS DB - Indexation secondaire

L'indexation secondaire est utilisée lorsque nous voulons accéder à une base de données sans utiliser la clé concaténée complète ou lorsque nous ne voulons pas utiliser les champs primaires de séquence.

Segment de pointeur d'index

DL / I stocke le pointeur vers des segments de la base de données indexée dans une base de données distincte. Le segment de pointeur d'index est le seul type d'index secondaire. Il se compose de deux parties -

  • Élément de préfixe
  • Élément de données

Élément de préfixe

La partie préfixe du segment de pointeur d'index contient un pointeur vers le segment cible d'index. Le segment cible de l'index est le segment accessible à l'aide de l'index secondaire.

Élément de données

L'élément de données contient la valeur de clé du segment de la base de données indexée sur laquelle l'index est construit. Ceci est également connu sous le nom de segment source d'index.

Voici les points clés à noter sur l'indexation secondaire -

  • Le segment source d'index et le segment source cible ne doivent pas nécessairement être identiques.

  • Lorsque nous mettons en place un index secondaire, il est automatiquement mis à jour par le DL / I.

  • Le DBA définit de nombreux index secondaires selon les chemins d'accès multiples. Ces index secondaires sont stockés dans une base de données d'index distincte.

  • Nous ne devons pas créer plus d'index secondaires, car ils imposent une surcharge de traitement supplémentaire sur le DL / I.

Clés secondaires

Points à noter -

  • Le champ du segment source d'index sur lequel l'index secondaire est construit est appelé comme clé secondaire.

  • Tout champ peut être utilisé comme clé secondaire. Il n'est pas nécessaire que ce soit le champ de séquence de segments.

  • Les clés secondaires peuvent être n'importe quelle combinaison de champs uniques dans le segment source d'index.

  • Les valeurs de clé secondaire ne doivent pas être uniques.

Structures de données secondaires

Points à noter -

  • Lorsque nous construisons un index secondaire, la structure hiérarchique apparente de la base de données est également modifiée.

  • Le segment cible d'index devient le segment racine apparent. Comme le montre l'image suivante, le segment d'ingénierie devient le segment racine, même s'il ne s'agit pas d'un segment racine.

  • Le réarrangement de la structure de la base de données provoqué par l'index secondaire est appelé structure de données secondaire.

  • Les structures de données secondaires n'apportent aucune modification à la structure de base de données physique principale présente sur le disque. Il s'agit simplement d'un moyen de modifier la structure de la base de données devant le programme d'application.

Opérateur AND indépendant

Points à noter -

  • Lorsqu'un opérateur AND (* ou &) est utilisé avec des index secondaires, il est appelé opérateur AND dépendant.

  • Un ET indépendant (#) nous permet de spécifier des qualifications qui seraient impossibles avec un ET dépendant.

  • Cet opérateur ne peut être utilisé que pour les index secondaires où le segment source d'index dépend du segment cible d'index.

  • Nous pouvons coder un SSA avec un AND indépendant pour spécifier qu'une occurrence du segment cible soit traitée en fonction des champs de deux segments source dépendants ou plus.

01 ITEM-SELECTION-SSA.
   05 FILLER           PIC X(8).
   05 FILLER           PIC X(1) VALUE '('.
   05 FILLER           PIC X(10).
   05 SSA-KEY-1        PIC X(8).
   05 FILLER           PIC X   VALUE '#'.
   05 FILLER           PIC X(10).
   05 SSA-KEY-2        PIC X(8).
   05 FILLER           PIC X   VALUE ')'.

Séquençage clairsemé

Points à noter -

  • Le séquençage clairsemé est également connu sous le nom d'indexation clairsemée. Nous pouvons supprimer certains des segments source de l'index de l'index en utilisant un séquençage fragmenté avec une base de données d'index secondaire.

  • Un séquençage clairsemé est utilisé pour améliorer les performances. Lorsque certaines occurrences du segment source d'index ne sont pas utilisées, nous pouvons les supprimer.

  • DL / I utilise une valeur de suppression ou une routine de suppression ou les deux pour déterminer si un segment doit être indexé.

  • Si la valeur d'un champ de séquence dans le segment source d'index correspond à une valeur de suppression, aucune relation d'index n'est établie.

  • La routine de suppression est un programme écrit par l'utilisateur qui évalue le segment et détermine s'il doit être indexé ou non.

  • Lorsque l'indexation clairsemée est utilisée, ses fonctions sont gérées par le DL / I. Nous n'avons pas besoin de prévoir des dispositions spéciales pour cela dans le programme d'application.

Exigences DBDGEN

Comme indiqué dans les modules précédents, DBDGEN est utilisé pour créer un DBD. Lorsque nous créons des index secondaires, deux bases de données sont impliquées. Un DBA doit créer deux DBD à l'aide de deux DBDGEN pour créer une relation entre une base de données indexée et une base de données indexée secondaire.

Exigences PSBGEN

Après avoir créé l'index secondaire pour une base de données, le DBA doit créer les PSB. PSBGEN pour le programme spécifie la séquence de traitement appropriée pour la base de données sur le paramètre PROCSEQ de la macro PSB. Pour le paramètre PROCSEQ, le DBA code le nom DBD pour la base de données d'index secondaire.