FICHEROS Secuencial Para acceder a un determinado registro hay que pasar por los n-1 anteriores Los ficheros de texto son un caso particular de fichero secuencial que slo contienen caracteres Directo Podemos acceder directamente a cualquier registro GESTIN DE ARCHIVOS Las operaciones sobre los archivos se realizan mediante programas y el primer paso para poner gestionar un archivo mediante un programa es declarar un identificador lgico que se asocie al nombre externo del archivo para permitir su manipulacin.
La declaracin se realizar con una serie de instrucciones como las que se muestran a continuacin, cuya asociacin permite establecer la organuizacin del archivo y estructura de sus registros lgicos. FLUJOS Existen lenguajes d eprogramacin que realizan operaciones en archivos a travs de flujos, manipulados por clases, que conectan con el medio de almacenamiento. De esta forma, para crear y abrir un archivo, se requiere utilizar una clase definida la funcionalidad del flijo.
FLUJOS Los flujos determinan la sentido de la comunicacin (lectura, escritura o lectura/escritura), la posibilidad de posicionamineto directo o no en determinado registro y la forma de leer o escribir en el archivo. Cerrar un archivo implica cerra el flujo. PROCESAMIENTO DE ARCHIVOS SECUENCIALES (ALGORITMOS) Los archivos secuenciales terminan con una marca final de archivo (FDA o EOF). Cuando se tenga que aadir registros a un archivo secuencial se aadir al final, inmediatamente pordelante de las marcas fin de archivos. Es caracterstico de este tipo de archivos el no poder ser abiertos para operaciones de lectyra/escritura simultneamente ARCHIVOS DE TEXTO Los archivos de texto son un caso particular de archivos de organizacin secuencial. Un archivo de texto es una serie contnua de caraceres que se pueden leer uno tras otro.
Un archivo de texto es un archivo en el que cada registro es del tipo de cadena de caracteres.
El tratamiento de archivos de texto es elemental y en el caso de lenguajes como Pascal es posible detectar lectura de caracteres especiales como fin de lnea o fin de archivo. PROCESAMIENTO DE ARCHIVOS DIRECTOS (ALGORITMOS) Se dice que un archivo es aleatorio o directo cuando cualquier registro es directamente accesible mediante la especificacin de un ndice, que da la posicin del registro respectoal origen del fichero.
Los archivos aleatorios o directos tienen una gran rapidez para el acceso comparados con los secuenciales; los registros son fciles de refernciar nmero de orden del registro- , lo que representa una gran facilidad de mantenimiento. PROCESAMIENTO DE ARCHIVOS SECUENCIALES INDEXADOS Los archivos de organizacin secuencial indexada contienen tres reas: un rea de datos que agrupa a los registros, un rea ndice que contiene los niveles de ndice y una zona de desbordamiento o excedentes para el caso de actualizaciones con adicin de nuevos registros. PROCESAMIENTO DE ARCHIVOS SECUENCIALES INDEXADOS Los registros han de ser grabados obligatoriamnete en orden secuencial ascendente por el contenido del campo clave y, simultneamente a la grabacin de los registros, el sistema crea los ndices. En este tipo de organizacin se puede usar claves compuestas por una primaria y una o varias secundarias. MANTENIMIENTO DE ARCHIVOS MANTENIMIENTOS DE ARCHIVOS La operacin de mantenimiento de un archivo incluye todas las opraciones que sufre un archivo durante su vida y desde su creacin hasta su eliminacin o borrado.
El mantenimiento de un archivo consta de dos operaciones diferentes: Actualizacin Consulta MANTENIMIENTOS DE ARCHIVOS La actualizacin es la operacin de eliminar o modificar los datos ya existentes, o bien introducir nuevos datos. En esencia, es la puesta al da de los datos del archivo.
Las operaciones de actualizacin son: Altas Bajas Modificaciones Se deben considerar los tipos de cambios que puede tener un archivo. Si es muy volatil ( inserciones o eliminaciones frecuentes) y esta en un ambiente de tiempo real, se deben facilitar cambios rpidos. Ejemplo: sistema de reservaciones ereas. Si es un archivo fuera de linea, tiene pocos cambios, no necesita mantenerse actualizado, puede actualizarse en procesamiento por lotes y no requiere estructuras adicionales para facilitar los cambios rpidos.
Ejemplo: Lista de correos. El mantenimiento es importante debido a que el desempeo se deteriora conforme a los cambios. Ejemplo, se modifica un registro de longitud variable, de tal forma que el nuevo registro resulta ser mayor qu se hace con los datos adicionales?
Se podran agregar al final del archivo y colocar un apuntador desde el espacio original del registro hasta la ampliacin del registro. Se podra reescribir el registro hasta el final del archivo dejando un hueco en la localidad original del registro.
Las modificaciones pueden ser: Agregar un registro Actualizar un registro Eliminar un registro La actualizacin de registros puede ser considerada como una eliminacin de registro seguida por la insercin de otro. Cuando se elimina un registro se debe reutilizar el espacio Compactacin del Almacenamiento Una estrategia de eliminacin de registros debe proporcionar alguna forma de reconocer los registros que se han eliminado. Un enfoque sencillo y que normalmente funciona es colocar una marca especial en cada registro eliminado. Compactacin del Almacenamiento Como reutilizar el espacio del registro eliminado? No se hace nada de inmediato, se dejan los registros eliminados por un lapso.
Los programas que usan el archivo usan la lgica para que se ignoren los registros que estn eliminados.
Se puede anular la eliminacin del registro. Se puede guardar la marca de eliminacin en un campo especial.
El espacio de todos los registros eliminados se recupera despues de algn tiempo. Despues de algun lapso, se emplea un programa especial de compactacin que reconstruye el archivo ya sin los archivos eliminados. La forma ms simple es mediante un programa de copia de archivos que ignora los registros eliminados.
Compactacin del Almacenamiento La decisin respecto a la frecuencia con que se ejecuta el programa de compactacin puede basarse en el nmero de registros eliminados o en el calendario. Hay situaciones en las que por la volatilidad se requiere recuperar el espacio de manera inmediata.
Eliminacin de registros de longitud fija para la recuperacin dinamica de espacio Para proporcionar un mecanismo de eliminacin de registros con la subsecuente reutilizacin del espacio liberado se requiere: Que los registros eliminados se marquen de una manera especial Que se pueda encontrar el espacio que los registros eliminados ocupaban, para reutilizarlo cuando se agreguen registros.
Cuando el programa puede distinguir un registro eliminado, la reutilizacin del espacio puede darse en forma de busqueda en el archivo, registro por registro, hasta que se encuentre un registro eliminado. Si el programa llega al final del archivo sin encontrar un registro eliminado, entonces el registro puede agregarse ah, al final.
Eliminacin de registros de longitud fija para la recuperacin dinamica de espacio Esto es un proceso lento, para que se realice ms rpido se necesita: Una forma de saber de inmediato si hay lugares vacos en el archivo Una forma de saltar directamente a uno de esos lugares, en caso de existir. El uso de una lista ligada para unir todos los registros disponibles puede cubrir esas necesidades. Si se tiene una referencia inicial al primer nodo de la lista, est puede recorrerse examinando cada nodo y luego el campo apuntador del nodo, de manera que se sepa donde est el siguiente.
Eliminacin de registros de longitud fija para la recuperacin dinamica de espacio Una lista compuesta de registros eliminados que se han convertido en espacio disponible se llama lista de disponibles. Al insertar un registro nuevo en un archivo de registros de longitud fija, cualquier registro es bueno. El modo ms sencillo de manejar una lista es como si fuera una pila.
Ahora se pueden aplicar los dos criterios para acceso rpido al espacio reutilizable. Eliminacin de registros de longitud fija para la recuperacin dinamica de espacio Dond se guarda la pila? El apilamiento y ligamiento se realiza organizando y reorganizando las ligas usadas, de manera que un registro de espacio disponible apunte al siguiente. El sealamiento no se realiza con variables tipo apuntador sino a travs de nmeros realtivos de registro (NRR)
Eliminacin de registros de longitud fija para la recuperacin dinamica de espacio Eliminacin de Registros de Longitud Variable Para reutilizar los registros mediante una lista de disponibles se require: Una forma de ligar los registros en una lista Un algoritmo para agregar nuevos registros eliminados a la lista de disponibles Un algoritmo para encontrar y eliminar registros de la lista de disponibles cuando estn listos para usarse.
Lista de disponibles de Registros de Longitud Variable Se utilizar una estructura de archivo donde se define la longitud de cada registro, colocando un contador de bytes del contenido del registro al inicio de cada uno. Se puede colocar un asterisco en el primer campo, seguido por un campo binario deliga que apunte al siguiente registro eliminado en la lista de disponibles. No se peden utilizar los NRR para la ligas. No se puede calcular la distancia en bytes, las ligas deben contenerla. Agregar y Eliminar registros No se puede utilizar una pila, debido a que los registros en la lista de disponibles difieren en tamao. Se require que: El registro haya sido eliminado. El registro debe tener el tamao correcto. Para este efecto, tamao correcto es suficientemente grande. Todos los registros de la lista de disponibles cumplen con la primera condicin, pero no todos cumplen con la segunda. Se requiere buscar en la lista de disponibles un registro del tamao correcto.
Agregar y Eliminar registros Ejemplo, agregar registro de tamao 55
Si se llega al final de la lista de disponibles sin encontrar un registro lo suficientemente grande, se habra tenido que agregar el nuevo registro al final del archivo. Fragmentacin del almacenamiento Los puntos al final de los registros representan caracteres que se usan como relleno entre el ltimo campo y el final del registro. El relleno es espacio desperdiciado, es parte del costo que implica usar registros de longitud fija. El espacio desperdiciado dentro de un registro se llama fragmentacin interna.
Fragmentacin del almacenamiento Es deseable minimizar la fragmentacin interna. Con archivos de longitud fija, se busca minimizar eligiendo una longitud que sea lo ms aproximada posible a la que se necesita para cada registro. Los registros de longitud variable minimizan el espacio desperdiciado al eliminar la fragmentacin interna cuando se escribe el archivo la primera vez.
Que sucede en un archivo de registros de longitud variable despus de que se elimina un registro y se remplaza por otro ms corto? Si el registro ocupa menos espacio que el original ocurre fragmentacin interna
Fragmentacin del almacenamiento En el archivo anterior se elimina el segundo registro y se agrega el siguiente
Fragmentacin del almacenamiento En lugar de guardar intacto todo el espacio, se puede dividir en dos partes, uno para guardar el nuevo registro y otro para colocar el resto en la lista de disponibles. Agreguemos otro registro Fragmentacin del almacenamiento Agreguemos otro registro Cual es la probabilidad de encontrar un registros de 8 bytes? Este es un caso de fragmentacin externa. El espacio est en la lista de disponibles, no dentro de un registro, pero esta demasiado fragmentado para utilizarse.
Fragmentacin del almacenamiento La fragmentacin externa puede combatirse con la compactacin del espacio. Si la fragmentacin es intolerable se regenera el archivo. Otro enfoque seria, cuando es posible, combinar fragmentos pequeos para crea fragmentos ms grandes y utiles. Si el programa detecta que dos entradas de la lista son disponibles son adyacentes, puede combinarlas para hacer una entrada mayor. Esto se llama unir los huecos en el espacio de almacenamiento. Tambin se podria intentar minimizar la fragmentacin antes de que suceda, adoptando una estrategia de colocacin que el programa pueda utilizar cuando selecciona una entrada de la lista de disponibles. Estrategias de colocacin Primer ajuste Se busca desde el inicio de la lista hasta encontrar uno suficientemente grande Minima cantidad de trabajo No se preocupa por la exactitud Mejor ajuste Se ordena ascendente El primer registro encontrado del tamao suficiente seria el que menos desperdicia Desventaja se busca al agregar y al eliminar Peor ajuste Se ordena descendente Se toma el primero, el ms grande