grupo 1 archivos secuenciales indexados en c++

28
Archivos Secuenciales Indexados en C++

Upload: panchorc1

Post on 26-Jul-2015

195 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Grupo 1 Archivos Secuenciales Indexados en C++

Archivos Secuenciales

Indexados en C++

Page 2: Grupo 1 Archivos Secuenciales Indexados en C++

Recordando…

Un archivo es un grupo de registros relacionados.

Un registro es un grupo de campos relacionados.

Page 3: Grupo 1 Archivos Secuenciales Indexados en C++

Para facilitar la recuperación de registros especifícos de un archivo, debe seleccionarse en cada registro como clave de registro. Una clave de registro sirve para identificar que un registro pertenece a una persona o entidad especifíca y es única en cada registro.

Page 4: Grupo 1 Archivos Secuenciales Indexados en C++

Existen muchas formas de organizar los registros en un archivo. Un tipo común de organizar se conoce como “ARCHIVOS SECUENCIALES INDEXADOS” en el cúal los registros se almacenan en orden con base en el campo que es la clave de registro.

Page 5: Grupo 1 Archivos Secuenciales Indexados en C++

Por ejemplo:

En un Sistema de Nóminas, el registro para un empleado especifíco podría incluir los

siguientesdatos:• Número de Identificación del Empleado• Nombre del empleado• Dirección • Sueldo por hora• Etc.

Page 6: Grupo 1 Archivos Secuenciales Indexados en C++

Entonces basándonos en el ejemplo… En un archivo de Nómina, los registros generalmente se colocan en orden, con base al número de Identificación del Empleado, por así decirlo. El registro del primer empleado en el archivo contiene el número de identificación más pequeno, y los registro subsiguientes contienen números cada vez mayores.

Page 7: Grupo 1 Archivos Secuenciales Indexados en C++

Estructura de un Archivo Secuencial

Indexado

Page 8: Grupo 1 Archivos Secuenciales Indexados en C++

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

Page 9: Grupo 1 Archivos Secuenciales Indexados en C++

Los registros se almacenan en la secuencia física usual por la área primaria. Además, se almacena en el disco el índice de la localización del registro

Page 10: Grupo 1 Archivos Secuenciales Indexados en C++

Un archivo secuencial indexado consta de 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.

Page 11: Grupo 1 Archivos Secuenciales Indexados en C++

El archivo índice se utiliza para acelerar la búsqueda dentro del fichero (de hecho actúacomo un índice para los datos del fichero). El fichero de datos se organiza, lógicamente, en bloques o páginas de varios registros.

Page 12: Grupo 1 Archivos Secuenciales Indexados en C++

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: Grupo 1 Archivos Secuenciales Indexados en C++

Área primaria

Es la parte del fichero donde se guardan los registros ordenados por el valor del campo “clave”. Los registros se organizan por bloques. El acceso se realiza mediante 2 operaciones:• Primero, buscando en el bloque el registro. • Luego analiza secuencialmente ese bloque hasta localizar el registro deseado.

Page 14: Grupo 1 Archivos Secuenciales Indexados en C++

Área de Índices

Los registros de ésta área están formados por dos campos:

• El primero contiene la clave del ultimo registro de cada bloque.

• El segundo contiene la dirección de memoria (puntero) del inicio de cada bloque del área primaria.

Page 15: Grupo 1 Archivos Secuenciales Indexados en C++

OPERACIONES BÁSICAS DE ARCHIVO SECUENCIALES

INDEXADOS

Page 16: Grupo 1 Archivos Secuenciales Indexados en C++

Las operaciones que se pueden realizar son:

Creación y Apertura de un Fichero

Consulta de DatosCierre de un FicheroInserción de DatosBorrado de un Fichero

Page 17: Grupo 1 Archivos Secuenciales Indexados en C++

Creación y Apertura de un 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 un fichero previo para poder acceder a sus registros. Si no existe da error.Se traslada al buffer el primer grupo de registros.

Page 18: Grupo 1 Archivos Secuenciales Indexados en C++

Consulta de Datos

La consulta de datos 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.

Page 19: Grupo 1 Archivos Secuenciales Indexados en C++

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.Ejemplo: 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 > ): entero

Page 20: Grupo 1 Archivos Secuenciales Indexados en C++

Insercció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.

Page 21: Grupo 1 Archivos Secuenciales Indexados en C++

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.

Page 22: Grupo 1 Archivos Secuenciales Indexados en C++

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.

Modificación de los Datos de un Registro

Page 23: Grupo 1 Archivos Secuenciales Indexados en C++

Pasos para borrar un fichero:

1. Localizar en el fichero el registro que se desea modificar.

•Sabemos su posición. Nos posicionamos.

•Conocemos el contenido de algún campo y secuencialmente lo buscamos.

2. Sobre una variable auxiliar procederemos a modificar los datos.

Page 24: Grupo 1 Archivos Secuenciales Indexados en C++

3. Escribimos dicha variable auxiliar en la misma posición que se encontraba.

apunta(<variable fichero> , posición ( <variable fichero> ) – 1 )

escribe (<variable fichero>, <variable_auxiliar>)

Page 25: Grupo 1 Archivos Secuenciales Indexados en C++

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. 

Page 26: Grupo 1 Archivos Secuenciales Indexados en C++

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. 

Page 27: Grupo 1 Archivos Secuenciales Indexados en C++

Muchas técnicas para organizar un archivo como índice han sido propuestas. No todos los esquemas sencillos pueden ser óptimos para todas las aplicaciones, se utilizan principalmente las técnicas para implementar un índice Árbol B y Árbol B+. 

Page 28: Grupo 1 Archivos Secuenciales Indexados en C++

Que es un Arbol BUna de las estructuras que más ampliamente se ha usado para organizar un índice en un sistema de base de datos y en administradores de archivos tradicionales es el árbol B. (B Tree).