Conceptos fundamentales de estructuras de archivos

Download Report

Transcript Conceptos fundamentales de estructuras de archivos

Conceptos fundamentales de
estructuras de archivos
Almacenamiento y Recuperación
de Información
UAM-A
Organización por campos y
registros
• La intención de escribir archivos es la de
volver persistentes los datos.
• Esta propiedad implica que los datos
puedan ser utilizados por otros programas.
(posiblemente recreando su estructura
original).
• La unidad básica de información es el
campo, que contiene un solo valor.
UAM-A
• Los campos se organizan de varias formas:
• Instancias del mismo tipo (arreglos).
• Instancias de conjuntos de valores de diferentes
tipos (registros).
• Cuando el registro es almacenado en la memoria
también se le suele llamar: estructura u objeto y sus
campos se llaman miembros.
UAM-A
• Imagine que tenemos una estructura con
varios miembros (nombre, dirección,
teléfono). ¿Qué pasa si los escribimos en un
archivo?
• Si no tenemos cuidado, no se podría distinguir
entre campos y registros… y sería imposible
recuperar las estructuras originales.
• De aquí que surja la necesidad de organizar los
campos en un archivo.
UAM-A
Formas de organización en
archivos
• Hacer que los campos tengan longitud
predecible.
• Comenzar cada campo con un indicador de
longitud.
• Colocar un separador al final de cada campo
• Utilizar representaciones de la forma: ‘dato
= valor’, con el fin de identificar cada
campo y su contenido.
UAM-A
Método 1: fijar la longitud de los
campos
• Es muy fácil recuperar la información del
archivo, cuando sabemos cuanto mide cada
registro y cada campo.
• Sin embargo pueden presentarse los
siguientes problemas:
• Si el espacio destinado a un campo es grande;
puede desperdiciarse espacio.
• Caso contrario los datos no caben.
UAM-A
Método 2: comenzar cada campo
con un indicador de longitud
• Si se agrega la longitud continúa siendo
fácil recuperar la información.
• Si los campos no son muy grandes (menos
de 256 bytes) es posible almacenar la
longitud en un sólo byte al comienzo de
cada campo.
UAM-A
Método 3: separar los campos
con delimitadores
• Si agregamos los separadores, estos se
deben poder distinguir de los datos, por lo
cual la selección del separador es
importante.
• Por ejemplo, se procura no utilizar espacios
como separadores si los datos son frases de
más de una palabra.
UAM-A
Método 4: uso de ‘llave=valor’
• Este método tiene una ventaja sobre las otras, y es que es
una estructura cuyo campo proporciona información sobre
el mismo.
• Es fácil decir que campos están contenidos en un archivo.
Este formato se utiliza con el formato de delimitador de
campos.
• Esto es útil en el sentido de que se muestra la división
entre el valor y la llave.
• Desafortunadamente este formato desperdicia mucho
espacio aproximadamente el 50% o más se utiliza para las
llaves, sin embargo hay aplicaciones donde este formato no
demanda mucho overhead.
UAM-A
Formas de Organización para
los registros
• De forma similar se deben organizar los registros
en un archivo y existen al menos 5 formas de
hacerlo:
• 1. Requerir que los registros sean de una longitud
en bytes predecible.
• 2. Requerir que los registros sean de una longitud
en campos predecible.
• 3. Comenzar con un indicador de la longitud en
bytes de un registro.
• 4. Usar delimitadores para separar un registro de
otro
UAM-A
Método 1: hacer que los registros
tengan un tamaño predecible en bytes
• Cada registro contiene el mismo número de bytes;
Este método para reconocer los registros es
análogo al método para reconocer los campos. Es
uno de los métodos más comunes para organizar
archivos.
• Ejemplos son el struct de C y la clase de C++.
• Es importante hacer hincapié que fijar el numero
de bytes para un record, no implica que el tamaño
de los campos en un record sea fijo.
UAM-A
Método 2: hacer que los registros tengan un
número predecible de campos
• En vez de que cada registro de un archivo
esta constituido por un número fijo de
bytes, podemos especificar que contendrá
un número fijo de campos.
UAM-A
Método 3: comenzar cada registro con un
indicador de longitud
• El número indica el número de bytes en el
registro.
• Es un método utilizado para registros de
longitud variable.
UAM-A
Método 4: utilizar un archivo para mantener
la pista de las direcciones
• Se utiliza un archivo secundario (índice)
donde se almacena el estado de los bytes de
cada registro del archivo original.
• Mantener esta pista nos permite encontrar el
comienzo de cada registro sub-secuente y
calcular la longitud de cada registro.
• Vemos cual es la posición del registro en el
archivo índice, después buscamos el
registro en el archivo de datos.
UAM-A
Método 5: colocar un delimitador al final de
cada registro
• Esta opción es análoga a la solución de los
campos, hay que tener cuidado con la
elección del delimitador (debe ser diferente
al delimitador del que se use en los
campos).
• OBSERVE QUE NINGÚN MÉTODO ES
MEJOR QUE LOS DEMÁS PARA UNA
SITUACIÓN CUALQUIERA.
UAM-A
Una estructura de registro que
usa un indicador de longitud
• Note que si deseamos colocar un indicador
de longitud al principio de cada registro (es
decir antes que sus campos) debemos
conocerla de antemano.
• Primero se debe construir el registro y sólo en
ese instante se puede escribir al archivo.
• A este procedimiento se le conoce como buffer.
• ¿Cómo se escribe esa longitud?
• En binario o en asccii.
UAM-A
• Cualquier notación que se escriba debe ser
posible distinguirla del resto del archivo.
• Particularmente observe que el número 65
puede quedar representado como los
caracteres 0x36, 0x35 o bien como el
carácter 0x41 (‘=A’).
• Los buffers también se pueden utilizar en la
lectura, para leer un registro completo cada
ocasión
UAM-A
• Finalmente una última nota de precaución:
• Si se va a utilizar una representación binaria,
recuerde que no todos los sistemas representan
los números de la misma forma. La pareja de
bytes 0x01, 0x02 pueden significar 258 en
algún sistema y 513 en otro sistema y el
problema se agrava al utilizar 4 o más bytes.
UAM-A
fin
UAM-A