DB IMS - Indicizzazione secondaria

L'indicizzazione secondaria viene utilizzata quando si desidera accedere a un database senza utilizzare la chiave concatenata completa o quando non si desidera utilizzare i campi primari della sequenza.

Segmento puntatore indice

DL / I memorizza il puntatore a segmenti del database indicizzato in un database separato. Il segmento del puntatore dell'indice è l'unico tipo di indice secondario. Consiste di due parti:

  • Elemento prefisso
  • Elemento dati

Elemento prefisso

La parte del prefisso del segmento del puntatore di indice contiene un puntatore al segmento di destinazione dell'indice. Il segmento di destinazione dell'indice è il segmento accessibile utilizzando l'indice secondario.

Elemento dati

L'elemento dati contiene il valore della chiave dal segmento nel database indicizzato su cui è costruito l'indice. Questo è anche noto come segmento di origine dell'indice.

Ecco i punti chiave da notare sull'indicizzazione secondaria:

  • Il segmento di origine dell'indice e il segmento di origine di destinazione non devono necessariamente essere gli stessi.

  • Quando configuriamo un indice secondario, viene automaticamente gestito dal DL / I.

  • Il DBA definisce molti indici secondari in base ai percorsi di accesso multipli. Questi indici secondari vengono archiviati in un database degli indici separato.

  • Non dovremmo creare più indici secondari, poiché impongono un sovraccarico di elaborazione aggiuntivo sul DL / I.

Chiavi secondarie

Punti da notare -

  • Il campo nel segmento di origine dell'indice su cui viene creato l'indice secondario viene chiamato come chiave secondaria.

  • Qualsiasi campo può essere utilizzato come chiave secondaria. Non è necessario che sia il campo della sequenza dei segmenti.

  • Le chiavi secondarie possono essere qualsiasi combinazione di singoli campi all'interno del segmento di origine dell'indice.

  • I valori chiave secondari non devono essere univoci.

Strutture dati secondarie

Punti da notare -

  • Quando creiamo un indice secondario, viene modificata anche l'apparente struttura gerarchica del database.

  • Il segmento di destinazione dell'indice diventa il segmento radice apparente. Come mostrato nell'immagine seguente, il segmento Engineering diventa il segmento radice, anche se non è un segmento radice.

  • La riorganizzazione della struttura del database causata dall'indice secondario è nota come struttura dati secondaria.

  • Le strutture dati secondarie non apportano modifiche alla struttura del database fisico principale presente sul disco. È solo un modo per modificare la struttura del database davanti al programma applicativo.

Operatore AND indipendente

Punti da notare -

  • Quando un operatore AND (* o &) viene utilizzato con gli indici secondari, è noto come operatore AND dipendente.

  • Un AND indipendente (#) ci consente di specificare qualifiche che sarebbero impossibili con un AND dipendente.

  • Questo operatore può essere utilizzato solo per gli indici secondari in cui il segmento di origine dell'indice dipende dal segmento di destinazione dell'indice.

  • Possiamo codificare un SSA con un AND indipendente per specificare che un'occorrenza del segmento di destinazione venga elaborata in base ai campi in due o più segmenti di origine dipendenti.

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 ')'.

Sequenziamento sparse

Punti da notare -

  • Il sequenziamento sparse è noto anche come indicizzazione sparse. Possiamo rimuovere alcuni dei segmenti di origine dell'indice dall'indice utilizzando la sequenza sparsa con il database dell'indice secondario.

  • La sequenza sparsa viene utilizzata per migliorare le prestazioni. Quando alcune occorrenze del segmento di origine dell'indice non vengono utilizzate, possiamo rimuoverle.

  • DL / I utilizza un valore di soppressione o una routine di soppressione o entrambi per determinare se un segmento deve essere indicizzato.

  • Se il valore di un campo sequenza nel segmento di origine dell'indice corrisponde a un valore di soppressione, non viene stabilita alcuna relazione di indice.

  • La routine di soppressione è un programma scritto dall'utente che valuta il segmento e determina se deve essere indicizzato o meno.

  • Quando viene utilizzata l'indicizzazione sparsa, le sue funzioni vengono gestite dal DL / I. Non è necessario prevedere disposizioni speciali per questo nel programma applicativo.

Requisiti DBDGEN

Come discusso nei moduli precedenti, DBDGEN viene utilizzato per creare un DBD. Quando creiamo indici secondari, sono coinvolti due database. Un DBA deve creare due DBD utilizzando due DBDGEN per creare una relazione tra un database indicizzato e un database indicizzato secondario.

Requisiti PSBGEN

Dopo aver creato l'indice secondario per un database, il DBA deve creare i PSB. PSBGEN per il programma specifica la sequenza di elaborazione corretta per il database sul parametro PROCSEQ della macro PSB. Per il parametro PROCSEQ, il DBA codifica il nome DBD per il database dell'indice secondario.