Title: Conceptos fundamentales de estructuras de archivos
1Conceptos fundamentales de estructuras de archivos
- Almacenamiento y Recuperación de Información
2Organizació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.
3- 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.
4- 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.
5Formas 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.
6Mé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.
7Mé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.
8Mé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.
9Método 4 uso de llavevalor
- 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.
10Formas 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
11Mé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.
12Mé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.
13Mé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.
14Mé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.
15Mé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.
16Una 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.
17- 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
18 - 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.
19