Upload
jennifergu17
View
89
Download
0
Embed Size (px)
Citation preview
ARCHIVOS SECUENCIAL
ES INDEXADOS
¿QUE ES UN ARCHIVO SECUENCIAL INDEXADO?
Un archivo secuencial indexado proporciona la combinación de tipos de acceso que manejan un archivo secuencial y un archivo relativo o de acceso directo.
Se utiliza este tipo de organización de archivo cuando existe la necesidad tanto de accesar los registros secuencialmente, por algún valor de llave, como de accesarlos individualmente.
Estructura lógica de Archivo Secuencial Indexado
En este tipo de organización de archivos se dispone de una tabla en que aparecen ordenados secuencialmente los números de la clave del archivo y asociados a cada uno de ellos da la dirección del registro correspondiente.
Un método popular para superar las desventajas de los archivos secuenciales es el del archivo secuencias indexado.
El archivo secuencial indexado mantiene las características básicas de los archivos
secuencialeslos registros están organizados en una
secuencia basada en un campo.
Dos Características se añaden:
1)Un Índice Del Archivo Para Soportar Los Accesos Aleatorios
2)Un Archivo De Desbordamiento ( overflow ).
El índice: Provee una capacidad de búsqueda para llegar rápidamente a las proximidades de un registro deseado.
El archivo de desbordamiento (overflow): Es similar al archivo de registro usado en un archivo secuencial, pero esta integrado de forma que los registros del archivo de desbordamiento se ubican en la dirección de un puntero desde si registro precedente.
En la estructura secuencial indexada mas simple, se usa un solo nivel de indexación. El índice, en este caso, es un archivo secuencial simple.
Cada registro del archivo índice tiene dos campos:
Un campo clave, que es el mismo que el campo clave del archivo principal.
Un puntero al archivo principal.
"ESTRUCTURA DE LA ORGANIZACIÒN SECUANCIAL INDEXADO“
Se utiliza este tipo de organización de archivo cuando existe la necesidad tanto de accesar los registros secuencialmente, por algún valor de llave, como de accederlos individualmente.
Un archivo secuencial indexado proporciona la combinación de tipos de acceso que manejan un archivo secuencial y un archivo relativo o de acceso directo.
El tipo de sus registros contiene un campo clave identificador.
Los registros están situados en un soporte direccionable por el orden de los valores
indicados por la clave.
Un archivo secuencial indexado consta de un:
Archivo índice
Archivo de datos
Es necesario que los registros contengan un campo clave para identificarlos y que estén almacenados en un soporte direccionable según el orden que indique dicha clave.
El Archivo Índice: se utiliza para acelerar la búsqueda dentro del fichero (de hecho actúa como un índice para los datos del fichero).
El Fichero De Datos: se organiza, lógicamente, en bloques o páginas de varios registros.
Cada registro del fichero índice almacena:
El Valor Del Campo Clave Del Último Registro De Un Bloque.
Los bloques están constituidos por un numero fijo de registros consecutivos.
La Dirección Del Primer Registro De Dicho Bloque.
Puede haber un área de desbordamiento. Ocupa más espacio en disco pero es más rápido. Puede almacenarse el fichero índice en memoria. Habría que calcularlo al iniciar una sesión de trabajo.
"REPRESENTACIÒN DE INDICES“
El índice puede definirse como una entidad que opera con un procedimiento que acepta información acerca de cierto valor de atributo, como entrada, y provee como salida una información que permite la rápida localización del registro se le llama primario al índice que utiliza como entrada la llave primaria y da como salida una información referente a la ubicación física del registro.
Al tener un apuntador fuera de la estructura califica al archivo como índice, en cual básicamente es una colección de pares, llaves-dirección.
Si este archivo contiene un par llave-dirección para cada registro de la colección de datos se le llama índice denso, de otra manera índice no denso se le llama índice disperso. Índice Datos
Ejemplo:
Una forma sencilla de ver la estructura de un archivo índice es la de un árbol de búsqueda binaria, el cual es usado para cumplir el requerimiento de acceso particular a un registro, esta es una organización no secuencial indexada
D B G A C E J 1 2 3 Datos no ordenados D 1 B 2 G 3 A 4 C 5 D 6 J 7 Llave Dirección
OPERACIONES BASICAS DE ARCHIVO SECUENCIALES INDEXADOS
Crear zonas de índice y datos como archivos vacíos originales.
Cargar el archivo índice en memoria antes de utilizarlo. Rescribir el archivo índice desde memoria después de utilizarlo.
Actualizar registros al archivo de datos y al índice. Borrar registros de archivos de datos. Actualizar registros en el archivo de datos.
MANTENIMIENTO DE UN ARCHIVO
El mantenimiento consiste que al momento de transcurrir un determinando tiempo de operación la estructura se satura, por ello se tiene que hacer un reacomodo de datos contenidos en el área de desbordamiento, trasladándolos al archivo principal y modificando el tamaño del bloque y los apuntadores de el índice.
Las operaciones que se pueden realizar dentro de la organización mediante un Archivo Secuencial Indexado son:
Creación y Apertura de un Fichero
Consulta de Datos
Cierre de un Fichero
Inserción de Datos
Borrado de un Fichero
Estas Operaciones se Describen a continuación (pseucodigo):
***Creación y Apertura de un Fichero****
crea ( <variable fichero > )
Crea el fichero asociado a la variable y lo deja preparado para la inserción de datos en el mismo, con un único elemento: EOF, indicando que está vacío.
Hay que asegurarse que el dispositivo físico esté listo para que no se produzca un error de ejecución.
abre ( < variable fichero > )
Abre un fichero previo para poder acceder a sus registros. Si no existe da error.
Se traslada al buffer el primer grupo de registros. El primer registro pasa a ser el registro activo. Tras crear un fichero, éste queda abierto.
***Consulta de Datos***
lee ( <variable fichero> , <variable> ).<variable> es una variable del mismo tipo que los registros del fichero que, después de la lectura, pasa a tener el valor del que era registro activo en ese momento.
•Tras una operación de lectura el apuntador interno del buffer se incrementaautomáticamente y pasa a señalar al registro siguiente. Si es necesario se carga el siguiente bloque en el buffer.
•No se puede sobrepasar el fin de fichero, produciría error. Utilizamos la función:EOF ( < variable fichero > ) : LógicoMientras not (EOF (<variable fichero>))LecturaFin Mientras
***Cierre de un Fichero***
El cierre de un fichero consiste en pasar toda la información que contiene el buffer al fichero del disco (la escritura se efectuaba sobre el buffer) y limpiar a continuación el buffer.
cierra ( <variable fichero>)Posicionamiento del Apuntador y Tamaño del Ficheroapunta ( <variable fichero> , <posición> )donde posición es un entero (constante o variable) entre cero y el número total de registros menos uno.
posición ( < variable fichero > ):enterotamaño ( < variable fichero > ): enteroSi hacemosapunta ( <variable fichero> , tamaño (<variable fichero> ) )estaremos colocados sobre la marca EOF. No da error.
Podríamos pasar un fichero a memoria, en un array p.e., pero:
1. Si sabemos el límite del número de registros que contendrá el fichero.
2. Puede no caber en memoria.
***Inserción de Datos***
escribe ( <variable fichero> , < variable > )donde <variable> tiene las mismas restricciones que en el caso de la lectura.
Se grabarán los datos, machacando los anteriores. El apuntador se avanzaautomáticamente.
Si el fichero está recién creado, se irán insertando los registros en cada operación de escritura, avanzando el apuntador automáticamente y empujando la marca EOF al final del fichero.
Si el fichero tiene datos, debemos avanzar el apuntador al final antes de insertar nuevos datos si queremos mantener los antiguos.
***Borrado de un Fichero***
Elimina definitiva y completamente un fichero en disco.borra ( <variable fichero> )Operaciones Adicionales sobre FicherosA partir de las operaciones primitivas que hemos visto.
Modificación de los Datos de un RegistroPasos:
1. Localizar en el fichero el registro que se desea modificar.
•Sabemos su posición. Nos posicionamos
•Conocemos el contenido de algún campo. Secuencialmente lo buscamos.
2. Sobre una variable auxiliar procederemos a modificar los datos.
3. Escribirnos dicha variable auxiliar en la misma posición que se encontraba.apunta(<variable fichero> , posición ( <variable fichero> ) – 1 )escribe (<variable fichero>, <variable auxiliar>)Supresión de RegistrosProblema: aprovechar el espacio ocupado por un registro borrado.
MANTENIMIENTO DE UN ARCHIVO SECUENCIAL INDEXADO
Al transcurrir un determinado tiempo de operación la estructura tiende a saturarse, se requiere entonces realizar un reacomodo de los datos contenidos en el área de desborde, trasladándolos hacia el archivo principal, teniendo que ajustar por supuesto el tamaño de los bloques y en consecuencia los apuntadores en el índice.
El mantenimiento puede darse por cualquiera de estos criterios:
Tiempo transcurrido
Tamaño del área de desborde (entre 25 y 30% del tamaño del archivo principal)
La eliminación de registros en tiempo de operación se recomienda en forma lógica; es decir, mediante marcas que indiquen si un registro esta activo o no en el proceso de mantenimiento se realizara el reacomodo de los registros suprimiendo así los registros marcados para la eliminación.
VentajasPermite procesar el archivo secuencialmente por orden
lógico y también procesarlo al azar.
La organización secuencial indexada es conveniente para archivos con mediana volatilidad, actividad variable y tamaño relativamente estable.
Desventajas
Los índices requieren espacio extra, se necesita una doble búsqueda; una en el índice y otra en el archivo.
Los registros deben ser de longitud fija.
El archivo debe estar separado por un dispositivo de acceso aleatorio; no se puede utilizar en cintas magnéticas.