Archivo secuencial indexado

22
UNIVERSIDAD MARIANO GÁLVEZ DE GUATEMALA INGENIERÍA EN SISTEMAS DE LA INFORMACIÓN Programación I Ing. Cesar Hernández Alumno: Franklin Leonel López Agustín Carné: 0907-14-22418

Transcript of Archivo secuencial indexado

Page 1: Archivo secuencial indexado

UNIVERSIDAD MARIANO GÁLVEZ DE GUATEMALAINGENIERÍA EN SISTEMAS DE LA INFORMACIÓNProgramación IIng. Cesar HernándezAlumno: Franklin Leonel López AgustínCarné: 0907-14-22418

Page 2: Archivo secuencial indexado

ARCHIVO SECUENCIAL INDEXADO

Los registros se organizan en una secuencia basada en un campo clave presentando dos características, un índice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento. El índice proporciona una capacidad de búsqueda para llagar rápidamente al registro deseado y el archivo de desbordamiento es similar al archivo de registros usado en un archivo secuencial, pero está integrado de forma que los archivos de desbordamiento se ubiquen siguiendo un puntero desde su registro predecesor. 

Page 3: Archivo secuencial indexado

La estructura más simple tiene como índice un archivo secuencial simple, cada registro del archivo índice tiene dos campos, un campo clave igual al del archivo principal y un puntero al archivo principal. Para encontrar un campo especifico se busca en el índice hasta encontrar el valor mayor de la clave que es iguale o precede al valor deseado de la clave, la búsqueda continua en el archivo principal a partir de la posición que indique el puntero.

Page 4: Archivo secuencial indexado

Cada registro del archivo principal tiene un campo adicional que es un puntero al archivo de desbordamiento. Cuando se inserta un nuevo registro al archivo, también se añade al archivo de desbordamiento. El registro del archivo principal que precede inmediatamente al nuevo registro según la secuencia lógica se actualiza con un puntero del registro nuevo en el archivo de desbordamiento, si el registro inmediatamente anterior está también en el archivo de desbordamiento se actualizará el puntero en el registro.

Para procesar secuencialmente un archivo completo los registros del archivo principal se procesarán en secuencia hasta encontrar un puntero al archivo de desbordamiento, el acceso continúa en el archivo de desbordamiento hasta que encuentra un puntero nulo, entonces renueva el acceso donde se abandonó en el archivo principal.

Page 5: Archivo secuencial indexado

CARACTERÍSTICAS DE UN ARCHIVO INDEXADO

• El diseño del registro tiene que tener un campo, o combinación de campos, que permita identificar cada registro de forma única, es decir, que no pueda haber dos registros que tengan la misma información en él. A este campo se le llama campo clave y es el que va a servir de índice. Un mismo fichero puede tener mas de un campo clave, pero al menos uno de ellos no admitirá valores duplicados y se le llama clave primaria. A las restantes se les llama claves alternativas.

Page 6: Archivo secuencial indexado

• Permiten utilizar el modo de acceso secuencial y el modo de acceso directo para leer la información guardada en sus registros.

• El modo de acceso directo se hace conociendo el contenido del campo clave del registro que queremos localizar. Con esa información el sistema operativo puede consultar el índice y conocer la posición del registro dentro del fichero.

• En el modo de acceso secuencial los registros son leídos ordenados por el contenido del campo clave, independientemente del orden en que se fueron grabando (El orden lógico no es igual al orden físico), debido a que el acceso a los datos se hace a través del índice, que para hacer más fácil la búsqueda de los registros permanece siempre ordenado por el campo clave.

Page 7: Archivo secuencial indexado

PARTES DE UN ARCHIVO SECUENCIAL INDEXADO

Para que un archivo pueda organizarse en forma secuencial indexada el tipo de los registros debe contener un campo clave identificador. La clave se asocia con la dirección (posición) del registro de datos en el archivo principal. Un archivo con organización secuencial indexada consta de las siguientes partes: • Área de datos: Contiene los registros de datos en

forma secuencial, sin dejar huecos intercalados. • Área de índices: Es una tabla que contiene la clave identificativa

y la dirección de almacenamiento. Puede haber índices enlazados.

Page 8: Archivo secuencial indexado

VENTAJAS

1. Permite el acceso secuencial.

2. Permite el acceso directo a los registros. 

3. Se pueden actualizar los registros en el mismo fichero, sin necesidad de crear un fichero nuevo de copia en el proceso de actualización.

Page 9: Archivo secuencial indexado

DESVENTAJAS1. Ocupa más espacio en el disco que los ficheros secuénciales, debido al

uso del área de índices.

2. Tiene tendencia a que aumente el tiempo medio de acceso a los registros, cuando se producen muchas altas nuevas con claves que hay que intercalar entre las existentes, ya que aumenta el área de overflow.

3. Solo se puede utilizar soportes direccionables.

4. Obliga a una inversión económica mayor, por la necesidad de programas y, a veces, hardware más sofisticado.

Page 10: Archivo secuencial indexado

ESTRUCTURA DE LA ORGANIZACIÓN SECUENCIAL INDEXADO

• Este tipo de organización se utiliza cuando existe la necesidad tanto de acceder a los registros secuencialmente, por algún valor de llave, como de acceder los individualmente. Un archivo secuencial indexado puede tener acceso porque manejan un archivo secuencial y un archivo relativo o de acceso directo.

Page 11: Archivo secuencial indexado

• Un archivo índice y un 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 agilizar la búsqueda dentro del fichero. El fichero de datos se organiza, lógicamente, en bloques o páginas de varios registros.

• 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.

Page 12: Archivo secuencial indexado

CADA REGISTRO DEL FICHERO ÍNDICE ALMACENA

• El valor del campo clave del último registro de un bloque. Los bloques están constituidos por un número 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.

Page 13: Archivo secuencial indexado

ÁREAS DEL ARCHIVO SECUENCIAL INDEXADO

• Área de Datos: Contiene los registros secuencial, esta ordenados alfabéticamente o alfanuméricamente y no deja espacios. 

• Área de índice: Los niveles de índice están contenidos en una tabla, si existieran varios índices enlazados se denomina nivel de indexación 

• Área de Desbordamiento o Excedentes: Esta área es utilizada para realizar actualizaciones si ello es necesario 

Page 14: Archivo secuencial indexado

OPERACIONES SOBRE UN ARCHIVO SECUENCIAL

• Los archivos secuenciales son típicamente utilizados en aplicaciones de proceso de lotes Y son óptimos para dichas aplicaciones si se procesan todos los registros. La organización secuencias de archivos es la única que es fácil de usar tanto en disco como en cinta.

• Para las aplicaciones interactivas que incluyen peticione s o actualizaciones de registros individuales, los archivos secuenciales ofrecen un rendimiento pobre.

Page 15: Archivo secuencial indexado

• Uno o más atributos se volverán los atributos llave para los registros en los archivos. el conjunto de valores para los atributos llave generalmente identifica el objeto descrito por el registro; es decir, el número de placa de un automóvil el nombre de une persona. Se espera poder identificar los registros en forma única con base en sus llaves. entonces los registros en el archivo se conservan en el orden de acuerdo con los atributos llave. Un atributo llave proporcionara la llave primaria de clasificación de alto orden y si este atributo no identifica en forma única al objeto, entonces puede identificarse atributos llave secundarios o inferiores hasta que el orden se determine por completo.

Page 16: Archivo secuencial indexado

ARCHIVOS SECUENCIALES• Creación de Archivo: En este proceso se pretende solamente crear un

archivo nuevo en disco, con su nombre, tipo y especialidad de almacenamiento de datos apropiado.

• Apertura de Archivos: En este caso se pretende abrir un archivo ya existente en disco para procesarlo, ya sea cargar o grabar datos en sus registros, o leer algún registro en especial para mandarlo a una variable de cualquier tipo. 

No confundir creación con apertura, creación es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura, siempre se está realizando por los programas especializados en algún proceso.

Page 17: Archivo secuencial indexado

• Cierre de archivos: Es la operación más importante en cualquier programa que maneje archivos, o se cierra el archivo como última instrucción del programa o se verá el anuncio ABORT, RETRY, FAIL.

• Altas en archivo: En este proceso se carga una clase en memoria con sus datos pertinentes y se graba la clase en el archivo en disco.

• Lectura de archivo: En este proceso, se abre el archivo y se manda el registro de disco, a una clase en memoria para su procesamiento. 

• Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla, ya sea consola o mejor aún, a una pagina HTML .

Page 18: Archivo secuencial indexado

• Búsqueda en archivos: Una de las operaciones más comunes, consiste en que el usuario pide toda la información de algún renglón en disco, proporcionando la información de algún campo, generalmente el campo clave de la clase. 

• Filtros: En este proceso el usuario está interesado en algún conjunto de renglones con características comunes (condición), por ejemplo todos los alumnos de “sisJAVA TEMA s”, o todos los empleados que ganen más de $500.00 pesos, o todos los clientes que sean de “Tijuana”, etc. 

• Modificaciones de registros o archivos: Problema muy común, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era “Juan” es “Juana”, o la calificación no es 100 es 20, etc. 

• Bajas de registros: también muy común este proceso, por ejemplo el alumno ya egreso, el cliente huyo, etc.

Page 19: Archivo secuencial indexado

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.

• Cuando es relevante el orden de llegada de los registros en cada bloque puede tomarse el criterio de sustituir a un registro eliminado por el ultimo asociado al mismo bloque ya sea que este se encuentre al final del bloque o en el área de desborde.

Page 20: Archivo secuencial indexado

EJEMPLO DE ARCHIVOS SECUENCIALES INDEXADOS

• Para buscar el teléfono de una persona en la guía no se busca secuencialmente desde los nombres cuya inicial es "a" hasta la "z", sino que se abre la guía por la letra inicial del nombre. Si se desea buscar "zala bastro", se abre la guía por la letra "z" y se busca la cabecera de página hasta encontrar la página más próxima al nombre, buscando a continuación nombre a nombre hasta encontrar "zalabastro". La guía es un ejemplo típico de archivo secuencial indexado con dos niveles de índices, el nivel superior para las letras iniciales y el nivel menor para las cabeceras de página. Por consiguiente, cada archivo secuencial indexad o consta de un archivo de índices y un archivo de datos.

Page 21: Archivo secuencial indexado
Page 22: Archivo secuencial indexado

EJEMPLO DE ARCHIVOS SECUENCIALES INDEXADOS EN C++

• https://github.com/Tortu/hello-world/blob/master/Archivo%20secuencial%20indexado