Virtual Storage Access Method ( VSAM ) [1] es un método de acceso al almacenamiento de archivos del dispositivo de almacenamiento de acceso directo (DASD) de IBM , utilizado por primera vez en los sistemas operativos OS/VS1 , OS/VS2 Release 1 (SVS) y Release 2 (MVS), utilizado más tarde en toda la arquitectura de almacenamiento virtual múltiple (MVS) y ahora en z/OS . Originalmente un sistema de archivos orientado a registros , [NB 2] VSAM comprende cuatro [NB 2] organizaciones de conjuntos de datos : secuencia de claves (KSDS), registro relativo (RRDS), secuencia de entradas (ESDS) y lineal (LDS). [2] Las organizaciones KSDS, RRDS y ESDS contienen registros, mientras que la organización LDS (añadida más tarde a VSAM) contiene una secuencia de páginas sin estructura de registro intrínseca, para su uso como un archivo mapeado en memoria .
Un libro rojo de IBM llamado "VSAM PRIMER" (especialmente cuando se utiliza con el manual "Opciones del método de acceso al almacenamiento virtual (VSAM) para aplicaciones avanzadas") explica los conceptos necesarios para utilizar VSAM. [3] IBM utiliza el término conjunto de datos en la documentación oficial como sinónimo de archivo y dispositivo de almacenamiento de acceso directo ( DASD ) para dispositivos con acceso aleatorio a ubicaciones de datos, como unidades de disco, a diferencia de dispositivos como unidades de cinta que solo se pueden leer secuencialmente.
Los registros VSAM pueden tener una longitud fija o variable. Se organizan en bloques de tamaño fijo denominados intervalos de control (CI), [4] [5] y luego en divisiones más grandes denominadas áreas de control (CA). Los tamaños de los intervalos de control se miden en bytes (por ejemplo, 4 kilobytes ), mientras que los tamaños de las áreas de control se miden en pistas de disco o cilindros. Los intervalos de control son las unidades de transferencia entre el disco y la computadora, por lo que una solicitud de lectura leerá un intervalo de control completo. Las áreas de control son las unidades de asignación, por lo que, cuando se define un conjunto de datos VSAM, se asignará un número entero de áreas de control.
El programa de utilidad de servicios de métodos de acceso IDCAMS se utiliza habitualmente para manipular ("eliminar y definir") conjuntos de datos VSAM. Los programas personalizados pueden acceder a los conjuntos de datos VSAM a través de instrucciones de definición de datos (DD) en lenguaje de control de trabajos (JCL), mediante asignación dinámica o en regiones en línea como en el sistema de control de información del cliente (CICS).
Tanto IMS/DB [ cita requerida ] como Db2 [2] : 41 [6] se implementan sobre VSAM y utilizan sus estructuras de datos subyacentes .
La organización física de los conjuntos de datos VSAM difiere considerablemente de las organizaciones utilizadas por otros métodos de acceso, como se detalla a continuación.
Un archivo VSAM se define como un grupo de componentes VSAM, por ejemplo, para KSDS, un componente DATA y un componente INDEX.
Los componentes VSAM consisten en bloques físicos de longitud fija agrupados en intervalos de control de longitud fija [4] [5] (CI) y áreas de control (CA). El tamaño de los CI y CA está determinado por los Servicios de Método de Acceso (AMS), y la forma en que se utilizan normalmente no es visible para el usuario. Habrá una cantidad fija de intervalos de control en cada área de control.
Un intervalo de control normalmente contiene varios registros. Los registros se almacenan dentro del intervalo de control comenzando desde la dirección baja hacia arriba. La información de control se almacena en el otro extremo del intervalo de control, comenzando desde la dirección alta y avanzando hacia abajo. El espacio entre los registros y la información de control es espacio libre. La información de control comprende dos tipos de entrada: un campo descriptor de intervalo de control (CIDF) que siempre está presente y campos descriptores de registro (RDF) que están presentes cuando hay registros dentro del intervalo de control y describen la longitud del registro asociado. El espacio libre dentro de un CI siempre es contiguo.
Cuando se insertan registros en un intervalo de control, se colocan en el orden correcto en relación con otros registros. Esto puede requerir que los registros se muevan fuera del camino dentro del intervalo de control. Por el contrario, cuando se elimina un registro, los registros posteriores se mueven hacia abajo para que el espacio libre permanezca contiguo. Si no hay suficiente espacio libre en un intervalo de control para insertar un registro, el intervalo de control se divide. Aproximadamente la mitad de los registros se almacenan en el intervalo de control original, mientras que los registros restantes se mueven a un nuevo intervalo de control. El nuevo intervalo de control se toma de un grupo de intervalos de control libres dentro de la misma área de control que el intervalo de control original. Si no queda ningún intervalo de control libre dentro de esa área de control, el área de control en sí se divide y los intervalos de control se distribuyen equitativamente entre las áreas de control antiguas y nuevas.
Puede utilizar tres tipos de organización de archivos orientada a registros con VSAM (el contenido de los conjuntos de datos lineales no tiene estructura de registro):
Un ESDS puede tener un índice definido para permitir el acceso mediante claves, definiendo un índice alternativo. Los registros en ESDS se almacenan en el orden en el que se escriben por acceso a la dirección. [7] [8] [9] Los registros se cargan independientemente de su contenido y sus direcciones de bytes no se pueden cambiar.
Un KSDS consta de dos partes: el componente de índice y el componente de datos. Estos pueden almacenarse en volúmenes de disco separados.
Si bien un KSDS básico solo tiene una clave (la clave principal), se pueden definir índices alternativos para permitir el uso de campos adicionales como claves secundarias. Un índice alternativo (AIX) es en sí mismo un KSDS.
La estructura de datos utilizada por un KSDS se conoce actualmente como árbol B+ . [10] [11]
Un RRDS puede tener un índice definido para permitir el acceso a través de claves, definiendo un índice alternativo.
Un LDS es un conjunto de datos VSAM no estructurado con un tamaño de intervalo de control de un múltiplo de 4K. Lo utilizan ciertos servicios del sistema.
Hay cuatro tipos de técnicas de acceso para los datos VSAM:
El uso compartido de datos VSAM entre regiones CICS se puede realizar mediante el uso compartido a nivel de registros (RLS) de VSAM. Esto agrega almacenamiento en caché de registros y, lo que es más importante, bloqueo de registros. El registro y el procesamiento de confirmaciones siguen siendo responsabilidad de CICS, lo que significa que el uso compartido de datos VSAM fuera de un entorno CICS está severamente restringido.
El uso compartido entre regiones CICS y trabajos por lotes requiere VSAM transaccional, DFSMStvs. Este es un programa opcional que se basa en VSAM RLS agregando registro y confirmación en dos fases, utilizando servicios de sistema z/OS subyacentes. Esto permite el uso compartido generalizado de datos VSAM.
VSAM se introdujo como reemplazo de los métodos de acceso más antiguos [14] y su objetivo era agregar funciones, ser más fácil de usar y superar los problemas de rendimiento y dependencia del dispositivo. VSAM se introdujo en la década de 1970 cuando IBM anunció los sistemas operativos de almacenamiento virtual (DOS/VS, OS/VS1 y OS/VS2) para su nueva serie System/370, como sucesores de los sistemas operativos DOS/360 y OS/360 que se ejecutaban en su serie de computadoras System/360. Si bien se mantuvo la compatibilidad con versiones anteriores, los métodos de acceso más antiguos sufrieron problemas de rendimiento debido a la traducción de direcciones requerida para el almacenamiento virtual.
La organización KSDS fue diseñada para reemplazar a ISAM , el método de acceso secuencial indexado. Los cambios en la tecnología de discos habían hecho que la búsqueda de datos en conjuntos de datos ISAM se volviera muy ineficiente. También era difícil mover conjuntos de datos ISAM, ya que había punteros integrados a ubicaciones físicas del disco que dejaban de ser válidos si se movía el conjunto de datos. IBM también proporcionó una interfaz de compatibilidad para permitir que los programas codificados para usar ISAM utilizaran un KSDS en su lugar.
La organización RRDS fue diseñada para reemplazar a BDAM , el método básico de acceso directo. En algunos casos, los conjuntos de datos BDAM contenían punteros integrados que impedían que se los moviera. Sin embargo, la mayoría de los conjuntos de datos BDAM no los tenían y el incentivo para pasar de BDAM a VSAM RRDS era mucho menos convincente que el de pasar de ISAM a VSAM KSDS.
Posteriormente se agregaron conjuntos de datos lineales, seguidos de VSAM RLS y luego de VSAM transaccional.
Secuencial (VSAM ESDS – Conjunto de datos secuenciados de entrada)
Un conjunto de datos VSAM de ESDS contiene registros en el orden en el que se ingresaron
Este índice se denomina árbol B+.
describe consideraciones para compartir conjuntos de datos VSAM para NSR o LSR/GSR