El método de acceso secuencial indexado ( ISAM ) permite crear, mantener y manipular archivos de datos informáticos para recuperar registros de forma secuencial o aleatoria mediante una o más claves. Se mantienen índices de los campos clave para lograr una recuperación rápida de los registros necesarios en los archivos indexados . IBM desarrolló originalmente ISAM para ordenadores centrales , pero existen implementaciones para la mayoría de los sistemas informáticos.
El término ISAM se utiliza para varios conceptos relacionados:
- El producto IBM ISAM y el algoritmo que emplea. [ 1 ]
- Un sistema de base de datos donde un desarrollador de aplicaciones utiliza directamente una interfaz de programación de aplicaciones para buscar en los índices y así localizar registros en los archivos de datos. En cambio, una base de datos relacional utiliza un optimizador de consultas que selecciona automáticamente los índices. [ 2 ]
- Un algoritmo de indexación que permite el acceso secuencial y por clave a los datos. [ 3 ] La mayoría de las bases de datos utilizan alguna variación del árbol B para este propósito, aunque las implementaciones originales de IBM ISAM y VSAM no lo hicieron.
- En términos generales, cualquier índice de una base de datos. Casi todas las bases de datos utilizan índices.
Organización
En un sistema ISAM, los datos se organizan en registros compuestos por campos de longitud fija, almacenados originalmente de forma secuencial según su clave. Un conjunto secundario de registros, denominado índice , contiene punteros a la ubicación de cada registro, lo que permite recuperar registros individuales sin necesidad de buscar en todo el conjunto de datos. Esto difiere de las bases de datos de navegación contemporáneas , en las que los punteros a otros registros se almacenaban dentro de los propios registros. La principal mejora de ISAM reside en que los índices son pequeños y se pueden buscar rápidamente, posiblemente en memoria, lo que permite a la base de datos acceder únicamente a los registros que necesita. Las modificaciones adicionales a los datos no requieren cambios en otros datos, solo en la tabla y los índices en cuestión.
Cuando se crea un archivo ISAM, los nodos de índice son fijos y sus punteros no cambian durante las inserciones y eliminaciones posteriores (solo cambia el contenido de los nodos hoja). Como consecuencia, si las inserciones en algún nodo hoja superan la capacidad del nodo, se almacenan nuevos registros en cadenas de desbordamiento. Si hay muchas más inserciones que eliminaciones en una tabla, estas cadenas de desbordamiento pueden volverse muy grandes gradualmente, lo que afecta el tiempo necesario para recuperar un registro. [ 4 ]
Las bases de datos relacionales se pueden construir fácilmente sobre un marco ISAM añadiendo lógica para mantener la validez de los vínculos entre las tablas. Normalmente, el campo que actúa como vínculo, la clave externa , se indexa para una búsqueda rápida. Si bien esto es más lento que almacenar directamente el puntero a los datos relacionados en los registros, también significa que los cambios en la estructura física de los datos no requieren actualizar los punteros; la entrada seguirá siendo válida.
ISAM es sencillo de entender e implementar, ya que consiste principalmente en el acceso directo a un archivo de base de datos. La desventaja es que cada máquina cliente debe gestionar su propia conexión a cada archivo al que accede. Esto, a su vez, conlleva la posibilidad de inserciones conflictivas en esos archivos, lo que resulta en un estado inconsistente de la base de datos. Para evitar esto, algunas implementaciones de ISAM [ 5 ] [ 6 ] proporcionan funcionalidad de bloqueo de archivos completos o de registros individuales . Bloquear varios registros conlleva el riesgo de interbloqueo a menos que se siga estrictamente un esquema de prevención de interbloqueos . Los problemas de bloqueo e interbloqueo se resuelven normalmente con la adición de un marco cliente-servidor que gestiona las solicitudes del cliente y mantiene el orden. Algunas implementaciones cliente-servidor de ISAM proporcionan sistemas completos de gestión de transacciones ACID . [ 5 ] Estos son los conceptos básicos de un sistema de gestión de bases de datos (DBMS), que es una capa cliente sobre el almacén de datos subyacente.
En IBM, ISAM fue reemplazado por una metodología llamada VSAM (método de acceso al almacenamiento virtual). Posteriormente, IBM desarrolló SQL/DS y luego Db2, que IBM promociona como su principal sistema de gestión de bases de datos . VSAM es el método de acceso físico utilizado en Db2.
OpenVMS
El sistema operativo OpenVMS utiliza el sistema de archivos Files-11 junto con RMS ( Servicios de Gestión de Registros ). RMS proporciona una capa adicional entre la aplicación y los archivos en disco, ofreciendo un método consistente de organización y acceso a los datos en múltiples lenguajes de programación de tercera y cuarta generación (3GL y 4GL). RMS ofrece cuatro métodos diferentes de acceso a los datos: acceso secuencial, acceso relativo al número de registro, acceso a la dirección del archivo de registro y acceso indexado.
El método de acceso indexado para leer o escribir datos solo proporciona el resultado deseado si el archivo está organizado como un archivo ISAM con las claves apropiadas previamente definidas. El acceso a los datos mediante las claves definidas previamente es extremadamente rápido. Se admiten múltiples claves, claves superpuestas y compresión de claves en las tablas hash. Se proporciona una utilidad para definir o redefinir claves en archivos existentes. Los registros se pueden eliminar, aunque la recolección de basura se realiza mediante una utilidad independiente.
Consideraciones de diseño
Los ingenieros de IBM diseñaron el sistema ISAM para utilizar una cantidad mínima de memoria de computadora . La contrapartida fue que el canal de entrada/salida , la unidad de control y el disco se mantenían más ocupados. Un archivo ISAM consta de una colección de registros de datos y dos o tres niveles de índice. El índice de pista contiene la clave más alta para cada pista de disco en el cilindro que indexa. El índice de cilindro almacena la clave más alta en un cilindro y la dirección de disco del índice de pista correspondiente. Un índice maestro opcional , generalmente utilizado solo para archivos grandes, contiene la clave más alta en una pista de índice de cilindro y la dirección de disco de ese índice de cilindro. Una vez que se carga un archivo, los registros de datos no se mueven; los registros insertados se colocan en un área de desbordamiento separada . Para localizar un registro por clave, los índices en el disco son buscados por un programa de canal auto-modificable complejo . [ 7 ] Esto aumentó el tiempo de ocupación del canal, la unidad de control y el disco. Con el aumento de los tamaños de memoria física y virtual en sistemas posteriores, esto se consideró ineficiente, y se desarrolló VSAM para modificar la compensación entre el uso de memoria y la actividad del disco.
El uso por parte de ISAM de programas de canal automodificables causó posteriormente dificultades para la compatibilidad de CP-67 con OS/360 , ya que CP-67 copiaba un programa de canal completo en la memoria fija cuando se iniciaba la operación de E/S y traducía las direcciones virtuales a direcciones reales. [ 8 ]
Implementaciones al estilo ISAM
- Administrador de bases de datos Advantage Database Server
- Base de datos de Berkeley
- Btrieve
- Base de datos de FairCom [ 5 ]
- C-ISAM [ 9 ]
- Base de datos propietaria de DataFlex
- dBase y productos relacionados Clipper y FoxPro
- Servicios de gestión de registros de Digital Equipment Corporation
- Enscribe es el método de acceso a archivos estructurados de HP Tandem.
- Motor de almacenamiento extensible
- Motor de base de datos de Access (ACE y anteriormente JET) utilizado por Microsoft Access
- MySQL implementa y extiende ISAM como MyISAM.
- Paradoja
- Implementación de pblIsam GPL escrita en C [ 10 ]
- Familia de bases de datos Superbase
- Bases de datos DBM y bases de datos de archivos planos que funcionan en conjunto.
Véase también
Referencias
- ↑ Chin, YH (1975). "Análisis del comportamiento en espacio libre de VSAM". Actas de la 1.ª Conferencia Internacional sobre Bases de Datos Muy Grandes - VLDB '75 . págs. 514–515 . doi : 10.1145/1282480.1282529 . ISBN 9781450318181. S2CID 11082747 .
- ↑ Bogue, Robert L. (13 de febrero de 2004). "Explora las diferencias entre ISAM y las bases de datos relacionales" . Recuperado el 17 de octubre de 2014 .
- ↑ Larson, Per-Åke (1981). "Análisis de archivos secuenciales de índice con encadenamiento de desbordamiento" . ACM Transactions on Database Systems . 6 (4): 671– 680. doi : 10.1145/319628.319665 . S2CID 16261748 .
- ↑ Ramakrishnan Raghu, Gehrke Johannes - Sistemas de gestión de bases de datos, McGraw-Hill Higher Education (2000), 2.ª edición (en) página 252
- 1 2 3 "Guía para desarrolladores de la API FairCom ISAM para C" .
- ↑ "Manual del programador de C-ISAM" (PDF) . Archivado del original (PDF) el 21/07/2021 . Consultado el 21/07/2021 .
- ↑ IBM Corporation (1973). DOS/VS LIOCS Volumen 3: Lógica DAM e ISAM . págs. 63–72 . Recuperado el 30 de diciembre de 2018 .
- ↑ IBM Corporation (1972). IBM Virtual Machine Facility /370: Guía de planificación (PDF) . pág. 45. Archivado del original (PDF) el 25 de octubre de 2022. Recuperado el 8 de enero de 2018 .
- ↑ "Taller de RDBMS: Informix" (PDF) (Entrevista). Entrevista realizada por Luanne Johnson. Museo de Historia de la Computación. 12 de junio de 2007. Consultado el 30 de mayo de 2025 .
- ↑ Graf, Peter. "Implementación de pblIsamFile" . mission-base.com . Consultado el 8 de septiembre de 2017 .
- Sistemas de archivos informáticos
- formatos de archivos informáticos
- Software de IBM