Este documento describe diferentes tipos de organización de ficheros. La organización secuencial graba los registros de forma consecutiva sin dejar espacios. La organización directa almacena los registros en celdas específicas calculadas a partir de la clave primaria, permitiendo acceso directo. La organización aleatoria almacena los registros en posiciones no consecutivas usando una función hash sobre la clave. La organización secuencial encadenada enlaza los registros mediante punteros para permitir inserciones. La organización secuencial indexada usa índ
2. 1.- FICHEROS CON ORGANIZACIÓN SECUENCIAL
1.1- CARACTERÍSTICAS.
Un fichero con organización secuencial es aquel en el que los registros se van grabando uno
a continuación de otro, sobre el soporte informático, sin dejar huecos en medio.
En este tipo de ficheros existe una correspondencia total entre el orden lógico y el orden
físico, si entendemos por orden lógico el orden en que son dados de alta y recuperados los registros
y por orden físico el orden en que están grabados los registros en el soporte.
Los registros normalmente estarán ordenados por el contenido de uno o más campos para
hacer más fácil el trabajo de búsqueda, inserción y borrado de registros.
La organización secuencial es aconsejable para ficheros con un índice de utilización muy
elevado y estables.
1.2.- VENTAJAS E INCONVENIENTES.
1.2.1.- VENTAJAS.
· Aprovecha al máximo el soporte, al no dejar huevos entre los registros.
· Rápido acceso al registro siguiente. Por lo que se hace ideal cuando en cada
operación de actualización o consulta se van a procesar la mayoría de los registros.
· Se pueden utilizar cualquier tipo de registros: de longitud fija, variable o indefinida.
· Se pueden grabar en cualquier tipo de soporte, tanto en secuenciales como en
direccionables.
· Todos los lenguajes de programación disponen de instrucciones para trabajar con
este tipo de ficheros.
1.2.2.- INCONVENIENTES.
· El único modo de acceso es el acceso secuencial, por lo que para leer el registro que
ocupe la posición `n` es necesario leer los `n-1` registros anteriores. Esto hace que este tipo de
organización no sea adecuado para ficheros en los que se necesita procesar frecuentemente registros
aislados, es decir, que tengan un índice de utilización bajo.
· No se pueden insertar registros entre los que ya están grabados. Si tenemos el
fichero ordenado por el contenido de un campo y queremos dar de alta un registro, que según ese
orden debería ir entre dos registros que ya existen en el fichero, es necesario copiar todo el fichero
en uno nuevo, grabando en el nuevo fichero todos los registros, insertando el registro que se quiere
dar de alta en la posición que le corresponda. Otra posibilidad es ir dando de alta los registros al
final del fichero y a continuación realizar una operación de reordenación de todo el fichero.
· Si el fichero está grabado en un soporte secuencia, como por
ejemplo una cinta magnética, para poder hacer modificaciones o borrado de
registros es necesario hacer una copia del fichero en un fichero nuevo. Si el
soporte no es secuencial las modificaciones se pueden hacer sobre el mismo
registro, y el borrado se puede hacer de forma lógica, es decir, mediante la
grabación de una marca de registro.
3. 2.- ORGANIZACIÓN RELATIVA O DIRECTA.
2.1.- CARACTERÍSTICAS.
La organización directa está basada en la independencia entre el orden en que se dan de alta
los registros y la posición en la que se graban en el soporte. La posición en la que se graban los
registros está en función de la información que tenga el campo clave del registro.
En esta organización el espacio total disponible para el fichero se divide en celdas destinadas
cada una de ellas a contener un registro y sólo uno. Las celdas están numeradas correlativamente y
se puede acceder al contenido de un registro, de forma directa, si conocemos la dirección relativa de
la celda en la que está grabado.
Esta organización sólo es posible en soportes direccionables, pues el acceso a los registros se
hace sin necesidad de leer los anteriores. Es la organización que tiene un menor tiempo de acceso a
un registro, en acceso directo. Se usa cuando el acceso a los datos de un registro se hace siempre
empleando la misma clave y la velocidad de acceso a un registro es lo que más nos importa.
2.2.- A TENER EN CUENTA AL ELEGIR UNA TÉCNICA DE DIRECCIONAMIENTO.
· Que sea fácil de aplicar. Tenemos que tener en cuenta que en esta organización es el
usuario el que se encarga de calcular la posición en la que se van a guardar los registros, y no como
en los ficheros indexados, que era el sistema operativo el que se encargaba de esto.
· Que deje el menos número de huecos. Se debe procurar que el método seleccionado nos
proporcione valores entre 1 y `n`, siendo `n` el número de celdas que tiene el fichero, sin dejar
celdas vacías.
· Que las claves de registros diferentes nos den direcciones diferentes. Cuando dos o más
claves diferentes proporcional, al aplicar la técnica de direccionamiento, la misma dirección se dice
que se produce un “sinónimo”. También se dice que esos registros “colisionan”. Cuando las claves
de dos registros dieron lugar a un “sinónimo” (indican la misma celda), sólo uno de ellos puede ser
almacenado en esa celda y tenemos que tener previsto algún procedimiento para calcular la posición
en la que se tiene que grabar el otro registro. Los métodos más empleados para el tratamiento de
sinónimos son los siguientes:
- Almacenar el registro que colisiona en el primer hueco libre que se encuentra a
partir de la dirección que le corresponde, y que esté ya ocupada. A este método se le conoce como
búsqueda lineal o direccionamiento abierto.
- Creando una zona especial del fichero en la que se grabará todos los registros que
dieron lugar a un sinónimo. A esta zona del fichero se le suele llamar “área de desbordamiento u
overflow”. Este es el sistema más empleado.
2.3.- VENTAJAS E INCONVENIENTES.
2.3.1.- VENTAJAS.
· Al emplear un modo de acceso directo son los ficheros los que permiten acceder de
la forma más rápida posible a un registro cualquiera del fichero. Por tanto es la organización ideal
para los procesos en los que el tiempo de acceso a los registros es lo más importante, siempre y
cuando el acceso se haga siempre por el campo clave. El caso más favorable para utilizar la
organización directa es cuando las claves son numéricas y permiten utilizar el direccionamiento
directo.
· Permite la actualización de los registros en el mismo fichero, sin necesidad de
copiar el fichero.
· Permite realizar procesos de actualización en tiempo real.
4. 2.3.2.- INCONVENIENTES.
· La relación entre clave y dirección (número de registro) la define el programados y
sólo él es responsable de manejarla correctamente. El acceso a un registro se hace indicándole al
sistema su dirección relativa dentro del fichero (número de registro) y la comprobación de que el
registro leído es o no el que buscamos la tiene que hacer el programador. El sistema operativo no
nos avisa de posible errores que se produzcan en el cálculo de la dirección.
· Cuando el rango de claves posibles es muy superior al de claves que realmente
están grabadas en el fichero, habrá mucho espacio desaprovechado puesto que tenemos que reservar
espacio a todos y cada unos de los registros teóricamente posibles. Pueden existir celdas vacías.
· El algoritmo de direccionamiento debe garantizarnos que no se nos producirán dos
direcciones iguales para dos valores de clave distintos. En el caso de no elegir un buen método de
direccionamiento puede que la aparición de sinónimos haga complicado el acceso a algunos
registros debido a que tendríamos que emplear un método de tratamiento de sinónimos que debe
controlar el programador.
· No permite el acceso secuencial a los registros por otro orden que no sea el orden
en que están grabados en el soporte.
· Sólo se puede utilizar un campo clave para acceder a los registros.
5. 3.- ORGANIZACIÓN ALEATORIA O INDIRECTA.
3.1.- CARACTERÍSTICAS.
La idea básica de este tipo de organización consiste en guardar físicamente los registros en
lugares de la memoria secundaria no consecutivos.
Para encontrar donde está cada registro, la única solución es utilizar un campo clave de entre
todos los que hay en el registro. Este campo clave, que suele ser numérico, permite averiguar la
dirección física donde está almacenado el registro en la memoria secundaria mediante un algoritmo
de transformación. Por eso, la clave suele denominarse “dirección de memoria lógica”, para
distinguirlo de la “dirección de memoria física” donde efectivamente se encuentra guardado el
registro. Esta transformación de claves para obtener direcciones física se denomina “hashing”.
El “hashing” es utilizado para localizar archivos en la memoria secundaria. Cada registro
debe tener un campo clave, y el “hashing” consiste en aplicar una función de transformación a cada
una de estas claves (lo que también se denomina función “hash”). Dependiendo de la función
“hash” empleada, pueden surgir colisiones o que muchas direcciones físicas no sean utilizadas, con
lo que se desaprovecha el espacio de almacenamiento.
Los archivos relativos son más versátiles que los secuenciales porque permiten acceder a
cualquier parte del fichero en cualquier momento, como si fueran “arrays”. Las operaciones de
lectura y escritura pueden hacerse en cualquier punto del archivo.
3.2.- VENTAJAS E INCONVENIENTES.
3.2.1.- VENTAJAS.
· No es necesario ordenar el fichero.
· Son muy rápidos en el tratamiento individual de los registros.
· Permiten realizar accesos secuenciales.
· Permiten realizar operaciones de lectura y escritura simultáneamente.
· Acceso inmediato a los registros mediante su clave.
3.2.1.- INCONVENIENTES.
· Se quedarán muchos huecos libres si no elegimos la función “hash” adecuada.
6. 4.- ORGANIZACIÓN SECUENCIAL ENCADENADA.
4.1.- CARACTERÍSTICAS.
La consulta es secuencial, cada vez que se lee un registro, se lee además la posición del
siguiente, lo que permite seguir la secuencia lógica del archivo, pudiéndose establecer una
equivalencia entre esta organización una lista de registros.
Los archivos con organización encadenada son útiles en aquellos casos en que se deban
realizar frecuentes inserciones de pocos registros. Si cada vez que se accede al archivo se van a
insertar muchos registros en comparación con el `n` total, será preferible una organización
secuencial. La principal ventaja de esta organización es su flexibilidad y el inconveniente es su
limitación en una consulta secuencial, además del espacio adicional ocupado por el puntero en cada
registro.
En estos ficheros la secuencia física y la secuencia lógica no coinciden, pudiendo ocurrir que
el último registro en secuencia física sea el primero en secuencia lógica y viceversa.
4.2.- CONSULTA, INSERCIÓN, BORRADO Y MODIFICACIÓN.
4.2.1.- CONSULTA.
La consulta es secuencial, cada vez que se lee un registro, se lee además la posición
del siguiente, lo que permite seguir la secuencia lógica del archivo, pudiéndose establecer una
equivalencia entre esta organización y una lista de registros.
4.2.2.- INSERCIÓN.
Será necesario para insertar un registro localizar la dirección en la que se desea
insertar el registro.
Físicamente, el registro se escribe en una zona vacía del soporte, con la misma
dirección en el campo que el registro que lo precede, modificándose posteriormente el registro
precedente para actualizar el valor de su puntero, que debe contener la dirección del nuevo registro.
4.2.3.- BORRADO.
Un registro deja de estar en la secuencia de lectura del archivo cuando se elimina su
dirección del puntero del registro anterior. Para borrar un registro se asigna al puntero precedente la
dirección del registro posterior. El sistema operativo puede o no liberar el espacio ocupado por el
registro si libera el espacio, y dicho espacio será asignado por otro archivo.
4.2.4.- MODIFICACIÓN.
Si la modificación no implica un aumento de longitud del registro, este puede
reescribirse en el mismo espacio. En el caso de que el registro aumente su longitud, se debe insertar
el registro y posteriormente borrar la versión anterior a la modificada.
7. 5.- ORGANIZACIÓN SECUENCIAL INDEXADA.
5.1.- CARACTERÍSTICAS.
A los ficheros con este tipo de organización se les llama también ficheros indexados, por que
se basan en la utilización de índices que permiten el acceso a un registro del fichero de forma
directa, sin tener que leer los anteriores. Estos índices son similares a los de los libros. Si nos
interesa leer un capítulo concreto, podemos recurrir al índice que nos dice en que página comienza,
y abrimos el libro por esa página, sin tener que mirar en todas las páginas anteriores para
localizarlo.
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 más de un “campo clave”, pero al menos uno de ellos no admitirá
valores duplicados. A este se le llama “clave primaria”.
Este tipo de fichero permite utilizar el modo de “acceso secuencial” y el modo de “acceso
directo” para leer la información guardada en sus registros.
Solamente se puede grabar en un soporte direccionable (por ejemplo, un disco magnético).
Si no fuera así, no podría emplear el acceso directo.
Del tratamiento de los índices y punteros se encarga el sistema operativo, por lo que no va a
crear problemas al usuario cuando maneje este tipo de ficheros. El usuario sabe lo que sucede
cuando solicita una consulta de un registro, pero no sabe como se realiza internamente esa consulta.
5.2.- ESTRUCTURA.
· Área de datos: es el área en la que se escriben los registros cuando es creado el fichero.
Los registros de un fichero con organización secuencial indexada se graban en un soporte de
almacenamiento directo, en secuencia ascendente, de acuerdo con los valores de la clave y en
páginas o bloques de longitud fija.
· Área de índices: es creada por el sistema al mismo tiempo que se van almacenando los
datos. Contiene una tabla que asocia las claves con las direcciones de los registros en el área de
datos. Cada entrada del área de índices está formada por el valor más alto de la clave de cada grupo
de registros y un puntero con la dirección del primer registro del grupo.
· Área de desbordamiento u Overflow: aquí se graban los registros que no tienen sitio en el
área de datos. Los nuevos registros se insertan y quedan enlazados entre sí mediante punteros
conservando el orden lógico que marca la clave o índice principal.
5.3.- VENTAJAS E INCONVENIENTES.
5.3.1.- VENTAJAS.
· Permite el acceso secuencial. Esto es muy interesante cuando la tasa de actividad es
alta. En el acceso secuencial, además, los registros se leen ordenados por el campo clave.
· Permite el acceso directo a los registros. Primero busca la clave en el área de índice
y luego va a leer al área de datos la dirección que le indica la tabla.
· Se pueden actualizar los registros en el mismo fichero, sin necesidad de crear un
fichero nuevo de copia en el proceso de actualización. Permite tanto el procesamiento por lotes
(procesos que hay que preparar previamente) como el procesamiento en tiempo real (las
actualizaciones de la información se llevan a cabo en el momento en el que se producen).
8. 5.3.2.- INCONVENIENTES.
· Ocupa más espacio en el disco que los ficheros secuenciales, debido al uso del área
de índices.
· 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. Requiere una reorganización periódica.
· Sólo puede utilizar soportes direccionables.
· Obliga a una inversión económica mayor, por la necesidad de programas y, a veces,
hardware más sofisticado.
9. 6.- ORGANIZACIÓN SECUENCIAL INDEXADA-ENCADENADA.
6.1.- CARACTERÍSTICAS.
Este tipo de organización consiste en aprovechar las ventajas de la organización secuencial
indexada y de la organización secuencial encadenada, facilitando las inserciones y eliminaciones de
los registros en un archivo indexado, que es de índices y punteros.
Para eliminar registros se marcan, en lugar de ser borrados físicamente.
Las adiciones se realizan sobre la zona de overflow, ya que no se pueden añadir registros en
el área primaria una vez creado el fichero.
Estos ficheros deben ser reorganizados a menudo, ya que la no eliminación física de los
registros marcados y las adiciones crea un área de overflow grande, llegando a funcionar como
ficheros secuenciales en el caso de no ser reorganizados.
Este tipo de organización se utiliza cuando existe la necesidad tanto de acceder a los
registros secuencialmente o individualmente.
Utiliza punteros entre los registros de la zona primaria y la de overflow.
El fichero de datos se organizar en bloques o páginas de varios registros y tiene un campo
con una clave para identificarlos.
Cada fichero índice almacena el valor del campo clave del último registro de un bloque y la
dirección del primer registro de dicho bloque.
6.2.- ESTRUCTURA.
· Área de datos: es en la que se escriben los registros cuando el archivo es creado en el
directorio del fichero.
· Área de índices: es creada por el sistema al mismo tiempo que se van almacenando los
datos. Contiene una tabla que asocia las claves con las direcciones de los registros en el área de
datos.
· Área de Overflow: es la zona de memoria done se almacenan los registros duplicados.
6.3.- FUNCIONAMIENTO.
La adiciones se realizan sobre la zona de overflow, ya que no se pueden añadir registros en
el área primaria una vez creado el fichero.
Para eliminar registros se marcan, ya que la no eliminación física de éstos crean un área de
overflow grande.
La forma de acceder a un registro es la siguiente:
· Primero, ir al área de índices.
· Segundo, buscar la dirección de inicio del bloque de registros al que pertenece.
· Si no se encuentra al registros en el área de índices, el último registro del bloque
debe apuntar a un bloque del área de overflow.
· Si tampoco se localiza en el área de overflow, se termina la búsqueda.