Cómo usar un índice VSAM alternativo

Los orígenes de datos con secuencia de claves VSAM son compatibles con el uso de índices de claves alternativos (claves). Los orígenes de datos con secuencia de claves VSAM constan de dos componentes: un componente de índice y otro de datos. El componente de datos contiene los registros de datos reales, mientras que el índice es la clave utilizada para localizar los registros en el origen de datos. A la conjunción de estos componentes se le denomina clúster de base.

Los índices alternativos son estructuras de índice, adicionales e independientes, que permiten acceder a registros en orígenes de datos KSDS VSAM, en base a una clave distinta a la clave primaria del origen de datos. Por ejemplo, normalmente utiliza un origen de datos de personal secuenciado por el número de la Seguridad Social, aunque a veces necesita obtener registros clasificados según la descripción del puesto. El campo de descripción de puesto puede considerarse un índice alternativo. Los índices alternativos deben estar relacionados con el clúster base que están describiendo, mediante una ruta, que está almacenada en un origen de datos independiente.

Al tratarse de una estructura VSAM, el índice alternativo se crea y mantiene en el entorno VSAM. Sin embargo, puede aparecer descrito en su archivo máster, permitiendo aprovechar todas las ventajas de los índices alternativos.

La principal ventaja de estos índices es la eficiencia del rendimiento. Puede utilizarlo como una alternativa de secuencia de recuperación más eficiente o aprovechar su potencial de forma indirecta con pruebas de filtros (IF...LT, IF...LE, IF...GT, IF...GE, IF...EQ, IF...FROM...TO, IF...IS), que se traducen en lecturas directas basadas en el índice alternativo. Además, puede combinar orígenes de datos con el comando JOIN, a través de este índice alternativo.

No tiene por qué identificar la vista indexada de forma explícita para aprovechar las ventajas del índice alternativo. Cuando aparece descrito en el archivo máster, el índice alternativo se utiliza automáticamente.

Para aprovechar un índice alternativo específico durante una solicitud de TABLE, proporcione una prueba WHERE o IF en el campo del índice alternativo que cumpla con los criterios expuestos más arriba. Por ejemplo:

TABLE FILE CUST
PRINT SSN
WHERE LNAME EQ 'SMITH'
END

Como se puede apreciar en el archivo máster de Cómo describir un índice VSAM alternativo, el campo LNAME está definido como un campo de índice alternativo. Los registros del origen de datos se recuperan de acorde a los apellidos; algunos filtrajes IF del campo LNAME resultan en lecturas directas. Tenga en cuenta que, si se omite el nombre del campo de índice alternativo, la clave primaria (si existe) se usa para una lectura secuencial o directa y los índices alternativos se tratan como campos normales.

Los índices alternativos deben estar descritos como campos con FIELDTYPE=I en el archivo máster. El ALIAS del campo de índice alternativo debe ser el nombre del archivo asignado al nombre de la ruta correspondiente. Si están compuestos por partes de formatos diferentes, puede describir los índices alternativos como GROUPs. Recuerde que debe utilizar ALIAS=KEY para describir la clave primaria.

Sólo se puede hacer referencia a un tipo de registro en la solicitud cuando se estén empleando índices alternativos, aunque no existe ninguna restricción en cuanto al número de segmentos OCCURS.

Tenga en cuenta que el nombre de la ruta de la asignación difiere de los nombres del clúster y del índice alternativo.

Si no está seguro de los nombres de las rutas y los índices alternativos asociados a un clúster base determinado, puede emplear la utilidad IDCAMS. (Para más detalles, consulte el manual de IBM llamado Cómo usar comandos y macros de VSAM.)


Principio de página

Ejemplo: Cómo describir un índice VSAM alternativo

Tenga en cuenta lo siguiente:

FILENAME = CUST, SUFFIX = VSAM,$
 SEGNAME = ROOT, SEGTYPE = S0,$
  GROUP = G, ALIAS = KEY, A10, A10,$
   FIELD = SSN,   SSN, A10, A10,$
   FIELD = FNAME, DD1, A10, A10, FIELDTYPE=I,$
   FIELD = LNAME, DD2, A10, A10, FIELDTYPE=I,$

En este ejemplo, SSN es una clave primaria, mientras que FNAME y LNAME son índices alternativos. El conjunto de datos de la ruta debe estar asignado al ddname especificado en el ALIAS= de su campo de índice alternativo. En este archivo máster, ALIAS=DD1 y ALIAS=DD2 tienen un asignación que apunta al conjunto de datos de la ruta. FNAME y LNAME deben tener INDEX=I o FIELDTYPE=I codificado en el archivo máster. CUST debe estar asignado al clúster base.


Principio de página

Ejemplo: Cómo usar IDCAMS

El siguiente ejemplo explica cómo usar IDCAMS para hallar los nombres del índice alternativo y de la ruta, asociados a un clúster base llamado CUST.DATA:

Primero, averigüe los nombres de índices alternativos (AIX) asociados al clúster correspondiente.

IDCAMS input:
 LISTCAT CLUSTER ENTRIES(CUST.DATA) ALL
 
IDCAMS output (fragments):
 CLUSTER -------- CUST.DATA
  ASSOCIATIONS
   AIX ---------- CUST.INDEX1
   AIX ---------- CUST.INDEX2

Con esto obtiene los nombres de los índices alternativos (AIX): CUST.INDEX1 y CUST.INDEX2.

A continuación, averigüe los nombres de rutas asociados al nombre de AIX correspondiente:

IDCAMS input:
 LISTCAT AIX ENTRIES (CUST.INDEX1 CUST.INDEX2) ALL
 
IDCAMS output (fragments):
 AIX ---------CUST.INDEX1
  ASSOCIATIONS
   CLUSTER -- CUST.DATA
   PATH ------CUST.PATH1
 AIX ---------CUST.INDEX2
  ASSOCIATIONS
   CLUSTER -- CUST.DATA
   PATH ------CUST.PATH2

Con esto obtiene los nombres de las rutas: CUST.PATH1 y CUST.PATH2.

Esta información, junto con el comando TSO DDNAME, puede utilizarse para asignar correctamente su índice alternativo.


WebFOCUS