2. UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
CENTRO UNIVERSITARIO JALAPA
FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACIÓN
PROGRAMACIÓN 1
INGENIERO CESAR HERNÁNDEZ
ARCHIVOS SECUENCIALES INDEXADOS
MARCO TULIO ENRIQUEZ W.
NO. DE CARNET 0907-15-7071
JALAPA 1 DE ABRIL DE 2016
3. ¿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.
4. 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.
5. 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.
6. Un método popular para superar las desventajas de
los archivos secuenciales es el del archivo
secuencias indexado.
7. El archivo secuencial indexado mantiene las
características básicas de los archivos secuenciales
los registros están organizados en una secuencia basada
en un campo.
8. Dos Características se añaden:
1) Un Índice Del Archivo Para Soportar Los Accesos
Aleatorios
2) Un Archivo De Desbordamiento ( overflow ).
9. 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.
10. 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.
11. "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.
12. 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.
13. 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.
14. 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.
15. 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.
16. "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.
17. 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
18. 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
19. 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.
20. 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.
21. 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
22. 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.
23. ***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
incrementa
automá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ógico
Mientras not (EOF (<variable fichero>))
Lectura
Fin Mientras
24. ***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 Fichero
apunta ( <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 > ):entero
tamaño ( < variable fichero > ): entero
Si 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.
25. ***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
avanza
automá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.
26. ***Borrado de un Fichero***
Elimina definitiva y completamente un fichero en disco.
borra ( <variable fichero> )
Operaciones Adicionales sobre Ficheros
A partir de las operaciones primitivas que hemos visto.
27. Modificación de los Datos de un Registro
Pasos:
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. Escribirmos 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 Registros
Problema: aprovechar el espacio ocupado por un registro borrado.
28. 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.
29. 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.
30. Ventajas
Permite 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.
31. 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.