You are on page 1of 24

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

TEMA 1.- SISTEMAS CLÁSICOS DE GESTIÓN DE FICHEROS

Apartado

Pag

  • 1.1. Evolución del tratamiento de la

1

  • 1.2. Características de los sistemas de ficheros

1

  • 1.3. Clasificación de los archivos según su uso

.......................................................

3

  • 1.4. archivos. ................................................................................

Organización de

4

  • 1.5. Apilo. ................................................................................................................

5

  • 1.6. secuencial. ..................................................................................

Organización

6

  • 1.7. Organización secuencial indexada

....................................................................

9

  • 1.8. indexada. .................................................................................

Organización

17

  • 1.9. Organización relativa o

21

1.1. Evolución del tratamiento de la información.

En casi todos los ámbitos del mundo actual, es fundamental el procesamiento de datos para obtener información que permita tomar decisiones.

El mundo empresarial cada vez utiliza más datos, lo cual dificulta su procesamiento. A partir de los años sesenta varias empresas empiezan a almacenar sus datos en soportes magnéticos para ser tratados directamente por computadoras. Desde entonces el auge de los equipos informáticos y soportes de información ha ido aumentando a pasos agigantados, y de igual forma han ido disminuyendo su coste.

En la evolución del tratamiento automático de la información podemos ver varias etapas: Las primeras aplicaciones integraban los datos en los programas en forma de constantes y sólo se analizaban pequeñas parcelas del mundo científico. Posteriormente aparecen los ficheros, que representan pequeñas parcelas del mundo real. En un principio estos ficheros sólo podían ser accedidos de forma secuencial y posteriormente de forma aleatoria. Las aplicaciones estaban constituidas por programas independientes y cada uno de ellos procesaba sus propios ficheros. Por ello, algunos datos tenían que ser repetidos en distintos archivos, pudiendo producirse incoherencias entre los mismos. A finales de los años sesenta, para evitar estos problemas, surgen las bases de datos, que pretenden modelar grandes parcelas del mundo real mediante la interrelación de varios archivos, evitando las redundancias y posibles incoherencias.

1.2. Características de los sistemas de ficheros convencionales.

El ordenador no sólo trabaja con datos individuales y aislados, sino con conjuntos de datos lógicamente relacionados. Se denomina registro lógico a un conjunto de datos referentes a una misma entidad y que constituyen una unidad para el proceso. A cada uno de los datos que forman un registro lógico se le denomina campo o atributo.

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

Llamamos archivo a un conjunto de registros (lógicos) del mismo tipo, que posee una organización coherente y que se ubica en dispositivos de almacenamiento secundario.

Fichero
Fichero
Campos NIF NOMBRE LOCALIDAD 1111 Manuel Málaga 3333 Gabriel Granada 5555 Marcos Málaga
Campos
NIF
NOMBRE
LOCALIDAD
1111
Manuel
Málaga
3333
Gabriel
Granada
5555
Marcos
Málaga
Registros lógicos
Registros lógicos

Se llama registro físico o bloque al conjunto de datos transferidos en una sola operación de entrada/salida. Se conoce como factor de bloqueo al número de registros lógicos que hay en cada registro físico o bloque. Los registros pueden ser de longitud fija o de longitud variable. La utilización de registros de longitud fija provoca pérdida de espacio, pero son más fáciles de manejar. Los registros de longitud variable provocan menos pérdida de espacio pero su utilización será más difícil al tener que utilizar marcas de principio y final de registro, o campos extra con la longitud del registro.

Asociado a los archivos de un soporte suele existir un directorio de archivos, se trata de un archivo, donde para cada archivo del soporte, existe un registro de directorio. Este registro contiene información acerca de la posición y el formato de los registros que forman el archivo. Según el tipo de organización el contenido de este registro será diferente. Normalmente el contenido de cada registro directorio suele ser el nombre del archivo, el propietario, el punto inicial, el punto final, la cantidad de espacio permitida y la utilizada actualmente. El propietario de este archivo directorio es el S.O.

Se denomina apertura de un fichero al proceso de leer el registro directorio asociado al fichero y retener esta información para su consulta posterior. El proceso contrario, cerrar el archivo, consiste en la actualización del directorio de archivo correspondiente al fichero, en el caso que haya sufrido alguna modificación.

Tipos de acceso: Se denomina acceso al proceso físico de localizar la información contenida en el fichero. Podrá ser secuencial o directo:

Acceso secuencial: Se accede a los registros siguiendo su orden físico de

aparición en el soporte de entrada. Acceso al azar o directo: Se accede a los registros atendiendo a un orden aleatorio de solicitud de los mismos. Este orden es externo al programa y no predecible.

El tipo de acceso dependerá directamente del tipo de soporte que se utilice:

Soporte de acceso secuencial: Para acceder a un registro físico estamos obligados a acceder a todos los registros físicos que le preceden. Por ejemplo:

una cinta magnética. Soporte de acceso directo: Son los que permiten el acceso a cualquier registro físico una vez conocida su dirección. Por ejemplo: un disco magnético. Los soportes de acceso directo también admiten accesos secuenciales.

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

Tipo de proceso: Dependerá de la aplicación que procese el archivo. Podrá ser de dos tipos:

En lote o batch: En general son los que no requieren la intervención del usuario.

Un caso típico son las actualizaciones de un fichero maestro a partir de uno de movimientos. En estos procesos todos los movimientos (altas, bajas, y modificaciones) sobre un fichero denominado maestro son acumulados durante cierto tiempo en un fichero de movimientos, que posteriormente es procesado actualizando al fichero maestro. Los procesos en lote son eficaces siempre que no sea necesario que el fichero maestro esté continuamente actualizado. En línea: En los procesos en línea los movimientos o alteraciones del fichero son tratadas en el momento en que se producen. Estos procesos se caracterizan por permitir el diálogo con el usuario, se dice que son interactivos o conversacionales.

1.3. Clasificación de los archivos según su uso.

Los archivos se clasifican según la utilización que se hace de ellos en tres grupos:

Archivos permanentes. Contienen información que varía poco a lo largo del tiempo. Su contenido es esencial para la aplicación que los utiliza. Deben protegerse ante alteraciones accidentales y realizar copias de seguridad de forma periódica para

garantizar la reconstrucción en caso de pérdida total o parcial. Pueden ser de tres clases:

  • - Archivos de constantes. Su información permanece prácticamente inamovible, utilizándose principalmente como archivos de consulta. Un archivo de este tipo puede ser el archivo de datos personales de empleados, que suele sufrir escasas modificaciones.

  • - Archivos de situación o maestros. Reflejan el estado o situación de una empresa, entidad o algún aspecto de ella en un determinado momento. Estos archivos se actualizan periódicamente para adaptarlos a cada nueva situación. Un ejemplo de este tipo de archivos sería: el archivo de existencias de almacén, que para cada entrada o salida de almacén deberá ser modificado.

  • - Archivos históricos. Se obtienen de los anteriores cuando quedan fuera de uso. Aunque la información que contienen no es de actualidad, reflejan la evolución de la misma. Suelen ser de gran tamaño, y no es frecuente su consulta al azar, su uso habitual es para elaborar estudios estadísticos. Un archivo histórico puede ser el que contiene la información de libros adquiridos por una biblioteca en la década de los ochenta. Otro podría ser, la facturación de una empresa en el año 1.998.

Archivos de movimientos. En ellos se almacena la información que se utilizará para actualizar los archivos maestros. Sus registros, denominados movimientos o transacciones, suelen especificar tres tipos de acciones sobre el maestro: altas, bajas y modificaciones. Una vez realizado el proceso de actualización de un archivo maestro por medio de un archivo de movimientos, éste pierde su validez y podemos deshacernos de él. Su destrucción accidental no es muy grave ya que se puede reconstruir a partir de los documentos que provocaron los últimos movimientos. Estos archivos eran muy utilizados en sistemas batch o por lotes. Actualmente, aunque siguen siendo utilizados, se recurre a soluciones más interactivas. Podría utilizarse un archivo de este tipo para actualizar un maestro de almacén con los

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

nuevos artículos, eliminar los artículos descatalogados, modificar el stock de artículos debido a entradas o salidas, o cualquier otro tipo de modificación.

Archivos de maniobra o trabajo. Se utilizan como auxiliares de los anteriores. Tienen una vida limitada, normalmente igual a la duración de la ejecución del programa que los maneja. Son ficheros “puente”, que no serían necesarios si dispusiéramos de una memoria principal infinita. Por ejemplo, si se desea listar un archivo ordenado por alguno de sus campos, se hará por medio de un archivo de maniobra en el que se almacena esta información, allí se ordena por dicho campo, se imprime y posteriormente podríamos eliminarlo.

En la figura siguiente se muestra un ejemplo de actualización de un archivo maestro de almacén mediante un archivo de movimientos:

Archivo maestro de ALMACEN

Archivo de MOVIMIENTOS

Cod

Descripción

PVP

Stock

 

Mov

Cod

Descripción

PVP

Stock

100

Impresora HP 690

26000

20

A

095

Fax 56 K

7000

20

104

Teclado ACER

2600

25

B

104

     

115

Pentium III 850

28000

10

M

115

 

27500

 

120

DIMM 128M

4100

10

A

118

Minitorre

2500

20

 

M

120

   

+5

Nuevo archivo maestro de ALMACEN

Cod

Descripción

PVP

Stock

 
  • 095 Fax 56 K

7000

20

 
  • 100 26000

Impresora HP 690

 

20

 
  • 115 Pentium III 850

27500

10

 
  • 118 Minitorre

2500

20

 
  • 120 DIMM 128M

4100

15

Como ejercicio realiza el algoritmo en pseudocódigo que actualice el archivo maestro de almacén mediante las transacciones del archivo de movimientos.

1.4. Organización de archivos.

En los dispositivos de almacenamiento de acceso directo podemos organizar los ficheros de forma muy diversa. Se trata de establecer un método que nos proporcione la ubicación física de cada registro, y que se adapte a nuestras necesidades de acceso.

A continuación analizaremos las siguientes organizaciones de ficheros:

Apilo

Organización secuencial

Organización secuencial-indexada

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

Organización indexada

Organización relativa o directa

En el análisis de las distintas organizaciones de archivos realizaremos comparaciones con las siguientes operaciones:

Economía de almacenamiento: Se desea almacenar los datos con un mínimo de redundancia. Existe redundancia cuando están duplicados los campos de datos o cuando se repite la descripción del contenido de los registros. La existencia de datos redundantes aumenta el esfuerzo a la hora de modificar sus valores, ya que se espera que todas las copias de un elemento dato sean consistentes.

Recuperación de un registro: La recuperación de un registro consiste en dos pasos:

primero localizar el registro y posteriormente la lectura del registro. Para una eficaz recuperación del registro es necesario una rápida localización, que dependerá del tipo de organización que estemos utilizando. Obtención del siguiente registro: Los datos aislados rara vez producen información,

la cual se genera al relacionar un hecho con otro. El registro sucesor de otro es más fácil de obtener cuando los datos relacionados se conservan físicamente juntos. Inserción de registros: Consiste en agregar un nuevo registro a un archivo. Es más

costoso agregar que leer un registro. Si es posible colocar el registro al final del archivo, insertarlo será fácil; si por el contrario es necesario seguir un orden, será necesario recorrer y acomodar el nuevo registro. Agregar registros: Inserción al final del archivo.

Actualización de un registro: Modificación de algunos de los campos que forman

el registro. En ocasiones no es posible la escritura en la posición que ocupaba anteriormente. Borrado de un registro: Eliminación del registro dentro del fichero; generalmente

volviendo a escribirlo con una marca llamada epitafio. Lectura de todo el archivo: Consiste en la lectura completa del archivo. En

aplicaciones que necesiten este tipo de operación es preferible el uso de ficheros densos (sin huecos entre registros). Reorganización de un archivo: Consiste en realizar de nuevo la escritura del archivo evitando la escritura de los registros borrados, recuperando así espacios para nuevos datos.

1.5. Apilo.

Es la organización más básica y rara vez utilizada. El orden de los registros suele ser cronológico, pueden ser registros de longitud variable y no tienen necesariamente conjuntos semejantes de datos.

En este tipo de organización un registro está formado por elementos datos y cada valor dato debe tener un identificador que se graba junto con el dato.

Ej.: Nombre = “Luis” altura = “1,95”

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

Al conjunto de las dos anotaciones anteriores se les denomina par atributo valor. Un registro está formado por un número variable de estos pares.

El uso de los apilos se limita a casos muy extremos cuando los datos son muy difíciles de organizar y no guardan demasiada relación entre sí.

Características del apilo.

Economía de almacenamiento: El tamaño de registro se ve aumentado por la

necesidad de guardar los nombres de los atributos junto con los datos (además del espacio que se utiliza para los separadores); en cambio no es necesario tener campos de datos vacíos. Recuperación de registros: El tiempo necesario para encontrar un registro en un apilo puede ser largo, al ser necesaria la lectura de todos los registros anteriores al buscado. Una solución a este problema puede ser organizar, si la aplicación lo permite, las recuperaciones de registros por lotes, disminuyendo así el tiempo total en la búsqueda de los registros.

Obtención del siguiente registro: Ya que en un apilo no se proporciona un ordenamiento de los registros, el siguiente registro (en orden) puede estar en cualquier lugar del archivo, por tanto no sería posible a no ser que se conozca la secuencia de claves.

Inserción de un registro: Debido a la falta de estructura dentro de un apilo, la inserción de un registro consistirá en agregar éste al final del fichero. Como se conoce la dirección de final de archivo, el nuevo registro simplemente se añade al final y se actualiza la dirección final del archivo.

Borrado de un registro. Consiste en marcarlo como borrado mediante una marca de epitafio. Por ejemplo: con un asterisco (*) en el primer carácter.

Actualizar un registro: Se da de baja el registro y se añade el nuevo al final. No se puede reescribir en el mismo lugar, porque podría no tener cabida.

Lectura de todo el apilo: La lectura de todo el apilo dependerá si se desea realizar atendiendo a algún orden o no. Si no se desea la lectura mediante una ordenación de un atributo, la lectura resulta rápida; en cambio si se desea la lectura mediante un atributo concreto ordenado sería más conveniente una clasificación anterior del archivo; con el aumento de dificultad que esto conlleva.

Reorganización de un apilo: La reorganización del apilo es necesaria cuando se han producido muchas eliminaciones de registros (marcas de epitafio); esto se logra copiando de nuevo el fichero y eliminando estos registros marcados.

1.6. Organización secuencial.

Una mejora respecto al tipo anterior es que los registros se ordenan en una secuencia especifica ocupando posiciones de almacenamiento físicamente contiguas y además los

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

registros tienen una estructura predefinida, por lo que no es necesario almacenar pares de nombre atributo-valor, con el consiguiente ahorro de espacio.

Como acabamos de comentar, un archivo secuencial está formando por un conjunto predeterminado de atributos, si se desea añadir un nuevo atributo sería necesario una reorganización completa del fichero, ya que hay que reservar espacio para el nuevo atributo introducido. Si se prevé que pueden existir nuevos atributos es posible dejar espacio libre que será definido posteriormente.

Para proporcionar una secuencia para los registros, se define un campo como clave, este campo identificará a cada registro y los registros se almacenaran en orden del atributo clave. Es necesario que el atributo clave identifique unívocamente al registro que representa; si esto no fuera así, se escogerían atributos clave secundarios hasta que el registro sea identificado de forma unívoca.

También es posible escoger como atributo clave un campo artificial, que no representa ningún dato de la entidad que describe.

El problema más importante con este tipo de ficheros se plantea a la hora de realizar nuevas inserciones o modificaciones que afecten al campo clave.

También sería posible almacenar los registros correspondientes a un fichero secuencial sin orden ninguno, respetando únicamente el orden cronológico en el que son introducidos; pero esto nos haría perder todas las ventajas que posee la organización secuencial, que serán vistas posteriormente.

El tipo de archivo secuencial se utiliza en aplicaciones comerciales orientadas al manejo por lotes o aplicaciones cíclicas donde la actividad del fichero ronde el 70% o

incluso más (operaciones de facturación mensual, nóminas,

etc. ...

) y donde no es

demasiado importante el tiempo de acceso a un registro determinado. Para combinar varios archivos secuenciales, todos deben estar clasificados por la misma clave, ya que el archivo secuencial sólo puede estar ordenado por una clave. Podemos resumir diciendo que los archivos secuenciales pueden ser excelentes para algunas aplicaciones; pero imposibles para otras.

Características de los archivos secuenciales.

Economía de almacenamiento: La descripción de los atributos aparece una sola vez o incluso ninguna, ya que aparece únicamente en las definiciones del programa que lo usa. El tamaño del registro es un número fijo, la suma del tamaño de cada uno de los campos.

Si muchos de los campos pueden estar vacíos la densidad del archivo será baja y se trata de un archivo disperso; en cambio si todos los campos están ocupados estamos hablando de un archivo denso.

Recuperación de registros en archivos secuenciales: Para recuperar un registro dentro de esta organización consiste en la búsqueda secuencial a través de él;

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

distinguiendo si la búsqueda se realiza a través del campo clave por el que está ordenado o si por el contrario la búsqueda se realiza por cualquier otro campo. En este último caso, la búsqueda es siempre secuencial y será necesario, como promedio, la lectura de la mitad del archivo.

Si la búsqueda se realiza mediante el campo clave y se dispone de un dispositivo de acceso directo se puede utilizar una búsqueda dicotómica o binaria dentro del fichero; esto implicaría una reducción en el tiempo de localización del registro. Las búsquedas dicotómicas consisten en comenzar leyendo un registro central del archivo, hacer una comparación y dependiendo del resultado se realiza una nueva búsqueda dicotómica en una de las dos mitades, así sucesivamente hasta encontrar el registro buscado o quedarnos sin registros donde buscar.

Obtención del siguiente registro en un archivo secuencial: En este caso el registro sucesor es inmediatamente accesible e incluso puede estar en el mismo bloque, únicamente cuando no se dé esta situación será necesario acceder al siguiente bloque de disco para obtenerlo, con el consiguiente aumento de tiempo.

Inserción de un registro en un archivo secuencial: La inserción de un nuevo registro requiere la inserción en el lugar adecuado según la clave, si no, perderíamos todas las ventajas que nos ofrece esta organización. Para insertar un registro habría que localizar el lugar que le corresponde en secuencia, insertar el registro y reescribir todos los registros que se encuentran después. Este método es adecuado cuando se trata de aplicaciones donde rara vez se tiene que realizar una inserción.

Si por el contrario, las inserciones son una operación común dentro de la aplicación, será necesario crear un archivo de transacciones donde se irán guardando todas las altas para procesarlas por lotes cada cierto tiempo.

Actualización de un registro en un archivo secuencial: El nuevo registro se crea mediante datos recuperados del registro y nuevos valores de atributos.

Dentro de la actualización podemos distinguir aquellas en las que el valor del campo clave no cambia, por tanto el registro seguirá ocupando el mismo lugar; y aquellas actualizaciones donde el valor del campo clave cambia, y esto lleva consigo una baja del antiguo registro y una inserción de registro nuevo. Normalmente se anota en un fichero de transacciones el borrado del registro antiguo y la inserción del nuevo.

El borrado de un registro se puede considerar como una actualización donde no cambia el campo clave, marcando el campo de borrado como tal. También se pueden desplazar todos los registros hacia arriba para ocupar el hueco dejado.

Al igual que se utilizó anteriormente para las inserciones y actualizaciones el fichero de transacciones, también se puede utilizar este fichero para los borrados que se procesarán por lotes.

I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

Lectura de todo el archivo secuencial: Consiste en la lectura exhaustiva de todo el fichero. Están especialmente indicados para este tipo de procesos.

Reorganización de un archivo secuencial: La reorganización consiste en el enfrentamiento del fichero secuencial (maestro) y el de transacciones generando un maestro nuevo. Podría resumirse de la siguiente forma:

  • 1. Abrir los tres ficheros (el maestro, transacciones y el nuevo maestro que surgirá de la unión de los anteriores).

  • 2. Comparar el valor de las claves de los dos ficheros (ambos deben estar obligatoriamente ordenados por el mismo campo clave; si el de transacciones no está ordenado habrá que ordenarlo como paso previo).

    • - Claves iguales: se ha localizado el registro buscado y se efectúa el tratamiento indicado en el fichero de transacciones. Después se vuelve a leer del fichero de movimientos o transacciones.

    • - Clave del fichero de movimiento mayor que clave del fichero maestro: No se ha localizado el registro buscado, se copia el registro del fichero maestro y se vuelve a leer del fichero maestro.

    • - Clave del fichero de movimiento menor que clave del fichero maestro: El registro buscado no existe, si es una actualización se trata de un error, mientras que si es una inserción se realiza. Se vuelve a leer del fichero de transacciones.

  • 3. El proceso concluye cuando uno de los dos ficheros acaba. Si se acaba el de movimientos se copia el resto del maestro al nuevo maestro. Si se acaba el maestro el resto de los registros del fichero de transacciones se procesan como errores en el caso que no se traten de altas que sigan la secuencia.

  • 4. Al final del proceso el fichero de movimientos y el antiguo maestro desaparecerán y el nuevo maestro se renombra como fichero secuencial.

  • 1.7. Organización secuencial indexada.

    La organización secuencial indexada pretende conservar las ventajas de la organización secuencial, venciendo a su vez los inconvenientes que presenta a la hora del acceso aleatorio a los registros. Se utilizan cuando es necesario realizar consultas rápidas por determinado campo, cuando los archivos deben estar continuamente actualizados y a su vez es necesario un acceso secuencial.

    Un archivo secuencial indexado se compone de tres partes:

    Area de datos. Se trata de un archivo secuencial ordenado por un campo clave.

    Indice. Se trata de un archivo de punteros para proporcionar acceso aleatorio al

    área de datos. Area de excedentes (desborde, overflow o derrama) donde se incluyen las inserciones que se pueden producir en un futuro y que no tienen cabida en el área de datos.

    El Area de datos.

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    En el área de datos o primaria se escriben los registros cuando el fichero se crea por vez primera o cuando se reorganiza. También se escriben las inserciones siempre que tengan cabida. En el área de datos los registros siempre se encuentran en secuencia de clave.

    En la mayoría de los S.O. sólo se permiten registros de longitud fija. Aunque algunos sistemas admiten de longitud variable.

    El índice.

    El índice consiste en una anotación por cada registro de datos (veremos como no siempre es así), que contiene el valor de un atributo clave de un registro y un puntero que permite el acceso directo a ese registro. El índice debe estar ordenado por el atributo clave para que la búsqueda pueda realizarse de forma rápida. Con objeto de aumentar la rapidez en la búsqueda dentro de los índices suele utilizarse una búsqueda binaria.

    Los archivos de índice pueden ser exhaustivos o selectivos:

    Indice exhaustivo o denso: Existe un registro índice por cada valor del campo clave en el archivo de datos. Es comúnmente utilizado en organizaciones indexadas “puras”.

    Indice selectivo o escaso: Se crean registros índices para algunos de los registros del campo clave en el archivo de datos. Para ello se agrupan los registros del área de datos, los tamaños de los grupos normalmente dependen del hardware de almacenamiento, se indexa por grupos y se realiza una búsqueda secuencial dentro del grupo indexado.

    Por ejemplo, se puede utilizar anclas de bloque, que consiste en indexar únicamente el valor de clave mayor de cada bloque (registro físico), esto permite el rápido acceso a un bloque y el registro individual (registro lógico) puede encontrarse realizando una búsqueda dentro del bloque. Al registro que corresponde la referencia se denomina punto de ancla. Los puntos de ancla se pueden basar en bloques, pistas o cilindros. El costo de buscar un registro dentro de un bloque es mínimo, ya que en cada lectura se trae todo el bloque a memoria; el único inconveniente es la falta de seguridad de la existencia del registro buscado.

    Es más rápido localizar un registro con un índice denso que con uno escaso. Sin embargo, los índices escasos ocupan menos espacio y necesitan menos mantenimiento cuando se realizan inserciones o eliminaciones.

    Si el índice es muy grande se puede volver a indexar, creándose así índices de niveles múltiples. Los niveles más altos del índice se vuelven cada vez más pequeños, hasta que quede un índice lo suficientemente pequeño como para mantenerlo siempre en memoria principal.

    El índice puede ser estático o dinámico, se considera estáticos cuando no varían a lo largo de la utilización del fichero, y dinámicos, como los árboles B, cuando

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    varían a lo largo de la utilización del fichero. Estos últimos, se utilizan en organizaciones indexadas “puras”.

    Para comprender el funcionamiento de un índice, veremos un ejemplo de un

    índice selectivo y estático de niveles múltiples:

    En la figura siguiente se muestra un índice de dos niveles. Veamos como actúa el sistema para localizar el registro de clave Luis: se busca en el índice de segundo nivel “el primer valor igual o mayor” al de la clave buscada Luis, en nuestro caso, Rosa. Este registro apunta al bloque del índice de primer nivel con dirección 4. Dentro de este bloque se busca de nuevo “el primer valor superior o igual” al buscado, en nuestro caso, Manuel. Este registro apunta al bloque del área de datos con dirección 13. Se accede a dicho bloque y se rastrea secuencialmente hasta encontrarlo. En caso de no estar el registro buscado (por ejemplo el registro con clave Lourdes, que debería estar en el mismo grupo de datos) una vez leído el registro Manuel el sistema deja de buscarlo.

    Area de datos

    Dirección

    Relativa

    1

    2

    3

    4

    5

    6

    Indice de primer nivel

    Dirección

    1

    2

    3

    Clave Puntero Belén David Federic o Yolanda
    Clave
    Puntero
    Belén
    David
    Federic
    o
    Yolanda

    Indice de segundo nivel

    clave

    Puntero

    Federico

    Rosa

    Yolanda

    • 1 Diana

    7

    • 4 Emilio

    8

    • 7 Federico

    9

    • 1 Irene

    4

    • 10 Fernando

    10

    • 4 Manuel

    5

    • 13 Gabriel

    11

    12

    • 7 Rosa

    6

    7

    • 16 Irene

    • 19 Julia

    13

    14

    15

    16

    17

    18

    19

    20

    21

    Area de desborde, excedentes o derrama.

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    Es el espacio que se reserva para posibles inserciones que pueden tener lugar en un futuro. Cada registro del área de datos tiene un puntero que apunta a su sucesor dentro del área de desborde. Los registros del área de desborde poseen a su vez, punteros con el fin de encadenar desbordes que empiecen en una misma fuente (registro); formando así cadenas de desborde, que en el caso de que sean demasiado largas ralentiza aún más el acceso a registro. La técnica para la reserva de espacio puede ser muy variada, destacando:

    • a) Area de excedentes única e independiente: Colocando las inserciones en un archivo separado; lo que implica un acceso por separado cada vez que haya que buscar en el área de desborde. Es adecuado cuando la distribución de excedentes no es uniforme, o cuando se prevén pocos excedentes.

    • b) Area de excedentes por cilindros: Consiste en dejar espacio reservado en cada cilindro, utilizado por ISAM de IBM. La localización de un registro de desborde requiere menos tiempo que si se utiliza un archivo separado. Es adecuado cuando se prevé una distribución uniforme de los excedentes. Tiene el inconveniente que si se llena totalmente el área de excedentes de uno de los cilindros nos obliga a reorganizar todo el fichero.

    Cilindro 0 Indice de pistas Cilindro 1 Indice de pistas Cilindro 2 Indice de pistas Cilindro
    Cilindro 0
    Indice de pistas
    Cilindro 1
    Indice de pistas
    Cilindro 2
    Indice de pistas
    Cilindro 3
    Indice de pistas
    Cilindro 4
    Indice de pistas
    Area primaria
    Area de
    Area de
    Area de
    Area de
    Area de
    excedentes
    excedentes
    excedentes
    excedentes
    excedentes
    Cilindro 0
    Indice de pistas
    Cilindro 1
    Indice de pistas
    Cilindro 2
    Indice de pistas
    Cilindro x
    Cilindro y
    Area de
    Area primaria
    excedentes
    independiente
    Area de
    Area de
    Area de
    excedentes
    excedentes
    excedentes

    El uso de áreas de desborde aumenta el tiempo de acceso para leer los registros insertados. Una solución alternativa, se basa en el uso de espacios libres distribuidos. Los registros lógicos se disponen en grupos y se dejan espacios libres en cada grupo.

    Existen dos formas de direccionar el área de excedentes:

    • a) Utilizando un puntero por registro del área de datos.

    • b) Utilizando un puntero por bloque del área de datos: En este caso la inserción se realiza reordenando mediante la técnica de impulso a través; que consiste en que el nuevo registro se coloca en el lugar que le corresponde y el resto se

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    impulsa hacia el final del bloque, y los registros del final del bloque, llegado el caso, avanzan hacia el área de desborde. El inconveniente principal es que las cadenas de desborde serán más largas que si cada registro tuviera su propia cadena sucesora en el área de desborde

    Los archivos secuenciales indexados se deben reorganizar cuando se ha llenado completamente alguna de las áreas de desborde, o cuando las cadenas de desborde son demasiado largas ocasionando tiempos de acceso muy largos. Para la reorganización se lee el archivo completo y se escribe de nuevo, eliminado los registros marcados como eliminados, y se realiza de nuevo la creación de índices. Al leerse en secuencia de clave, el nuevo archivo creado no hace uso del área de desborde hasta futuras inserciones.

    En la siguiente figura se representa el área de datos, el índice y el área de excedentes de un archivo secuencial indexado. Se trata de un índice de dos niveles con ancla de bloque.

    Area de datos

    Dirección

    Relativa

    1

    2

    3

    4

    5

    6

    Indice de primer nivel

    Dirección

    1

    2

    3

    Indice de segundo nivel

    clave

    Puntero

    Federico

    Rosa

    Yolanda

    clave Puntero Belén David Federic o Yolanda
    clave
    Puntero
    Belén
    David
    Federic
    o
    Yolanda
    • 1 Diana

    7

    • 4 Emilio

    8

    • 7 Federico

    9

    • 1 Irene

    4

    • 10 Fernando

    10

    • 4 Manuel

    5

    • 13 Gabriel

    11

    12

    • 7 Rosa

    6

    7

    • 16 Irene

    • 19 Julia

    13

    14

    15

    16

    17

    18

    19

    20

    21

    Area de excedentes

    Dirección

    Clave + datos

    Puntero

    1

    2

    3

    4

    5

    6

    Punteros de desborde por bloques

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos Administración de Sistemas Informáticos TEMA 1:

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    ...

    Veamos el funcionamiento del área de excedentes si se utiliza la técnica de impulso a través. Si suponemos que queremos introducir a Eugenio, Federico sería desplazado al área de excedentes y Eugenio ocuparía su lugar:

     

    Area de datos

     
    • 4 Carlos

     
    • 5 Cristina

     

    Area de excedentes

     
    • 6 David

     

    Dirección

    Clave + datos

    Puntero

    • 7 Diana

     

    1

    Federico

    NULL

     
    • 8 Emilio

    2

       
    • 9 Eugenio

    1

    3

       
    • 10 Fernando

     

    4

       
    • 11 Gabriel

    5

       
    • 12 Irene

     

    6

       

    Si posteriormente quisiéramos introducir a Ernesto se produciría lo siguiente:

     

    Area de datos

     
    • 4 Carlos

     
    • 5 Cristina

     

    Area de excedentes

     
    • 6 David

     

    Dirección

    Clave + datos

    Puntero

    • 7 Diana

     

    1

    Federico

    NULL

     
    • 8 Emilio

    2

    Eugenio

    1

    • 9 Ernesto

    2

    3

       
    • 10 Fernando

     

    4

       
    • 11 Gabriel

    5

       
    • 12 Irene

     

    6

       

    El siguiente ejemplo se trata de una implementación real de un índice orientado al hardware multinivel. Los índices orientados al hardware multinivel utilizan varios niveles de índices. Un ejemplo de este tipo de índices es el método de acceso secuencial indexado de IBM, comúnmente llamado ISAM (Indexed Sequential Access Method). En ISAM, las direcciones de los punteros vienen expresadas en términos de pistas y cilindros. En ISAM una pista es equivalente a un bloque de datos.

    ISAM utiliza tres niveles de índices:

    Indice maestro: Puede considerarse que se encuentra en memoria principal. Puede estar dividido en varios niveles. Los punteros del nivel más bajo apuntan a un grupo de campos clave en el índice de cilindros y guardan la clave mayor de cada grupo.

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    Indice de cilindros: Se trata de un conjunto de registros que guardan la clave más alta de cada cilindro y cada puntero apunta al índice de pista de cada cilindro. Existe un único índice de cilindros para todo el fichero.

    Indice de pista: Es el nivel de índice más bajo. Se sitúa en la pista 0 de cada cilindro. Consta de dos clases de anotaciones:

    • a) Anotación normal: Guarda la clave más alta de cada pista y el número de pista (puntero a pista). Una vez en el área de datos se recorre la pista hasta encontrar el registro buscado.

    • b) Anotación de derrame: Si no se han producido derrames contiene el mayor valor de la clave de cada pista y un puntero a NULL. Cuando se producen derrames pasa a contener el mayor valor de clave de la cadena de derrame de esa pista, y los números de pista y registro del primer registro d e la cadena de derrame.

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos Administración de Sistemas Informáticos TEMA 1:

    Características de un fichero secuencial indexado.

    Es posible diseñar este tipo de organización de múltiples maneras; sin embargo, a la hora de su evaluación se utilizará un archivo secuencial indexado con anclas de bloque, el área de datos dispone de espacios libres distribuidos, el área de desborde se encuentra dentro del mismo cilindro y se utiliza la técnica del impulso a través. Los registros no se eliminan sino que se marcan con un epitafio

    Economía de almacenamiento: En el área de datos el registro requiere el espacio para valores de datos y para un posible epitafio, además uno de los registros del bloque debe disponer de un puntero al área de desborde. En el área de desborde cada

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    registro debe poseer un puntero para generar las cadenas de desborde. A todo esto hay que añadir el espacio ocupado por el índice.

    Recuperación de registros: Para recuperar un registro concreto se utiliza el índice; el

    • a) El registro actual se encuentra en el área primaria de datos y el registro sucesor

    índice maestro al encontrarse en memoria no necesita acceso a disco y se consideran que los restantes índices se encuentran en el mismo cilindro que los datos. Si el registro se encuentra en el área primaria de datos, será necesario una búsqueda en cada nivel de índice y una lectura del bloque de datos. Si el registro se encuentra en el área de desborde, el tiempo de acceso al registro dependerá de la longitud de la cadena de desborde e irá aumentando con la longitud de ésta. Obtención del siguiente registro: Para localizar el siguiente registro se ignora el

    índice y se empieza desde el último dato accedido. Puede ocurrir cualquiera de los casos siguientes:

    en la misma área y en el mismo bloque; avanzar un registro que se encuentra disponible en memoria.

    • b) El registro actual es el último del bloque, no hubo inserciones y el registro sucesor se encuentra en el siguiente bloque dentro del mismo cilindro; habrá que leer el próximo bloque y coger el primer registro.

    • c) El registro actual es el último del bloque, no hubo inserciones y el registro sucesor se encuentra en el siguiente bloque en otro cilindro; habrá que saltar al próximo cilindro, leer el primer bloque y tomar el primer registro.

    • d) El registro actual es el último del bloque, pero sí hubo inserciones; habrá que acceder al área de desborde y coger el registro.

    • e) El registro actual es un re gistro insertado y el siguiente también es un registro insertado; habrá que seguir la cadena de desborde.

    • f) El registro actual es un registro insertado, pero el siguiente no; habrá que regresar al área primaria de datos, leer el siguiente bloque y coger el primer registro.

    El tiempo de acceso a cada uno de los casos será diferente, siendo el más rápido el primero de ellos. Inserción de un registro: Agregar un registro, si no hay espacio libre en el área de

    datos, dará lugar a una adición a la cadena de desborde (impulso a través), o el nuevo registro seguirá a uno dentro de la cadena de desborde dependiendo del lugar que deba ocupar. Esta inserción da lugar a una lectura, para determinar el lugar que debe ocupar, la escritura del nuevo registro y el cambio de un puntero o más (si el nuevo registro no ocupa el último lugar en la cadena de desborde). Actualización de un registro: Un registro actualizado de igual tamaño e igual clave

    puede colocarse en su lugar original; por lo tanto sólo será necesario una recuperación y una escritura. Una baja puede tomarse de la misma manera, al ser una actualización con un cambio en el campo epitafio. Una actualización con cambio en la clave, puede tomarse como una baja y una nueva inserción. Lectura del archivo completo: Para leerlo en secuencia de clave habrá que leer de forma combinada el área primaria de datos con el área de desborde. Se leería secuencialmente el área primaria de datos, hasta encontrar un apuntador diferente de NULL que llevará al área de desborde, se continúa en esta área hasta encontrar un apuntador NULL siguiendo entonces en el siguiente registro del área primaria de datos.

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    Reorganización del archivo: Se realiza una lectura del archivo completo por secuencia de clave (ignorando los registros marcados por epitafio) y se va escribiendo en un archivo nuevo, esto ocasiona que el área de desborde pase al área primaria de datos del nuevo archivo y se construyan de nuevo los índices. El nuevo archivo tendrá el área de desborde vacía hasta que se produzcan nuevas inserciones.

    1.8. Organización indexada.

    Esta organización consta de dos partes:

    Area de datos: En ella se almacena la información en orden de llegada. Es

    decir, los datos no siguen una secuencia de clave como los archivos secuenciales indexados. Los registros pueden ser de longitud fija o variable. Indices: Un índice consiste en un conjunto de anotaciones, una para cada registro del área de datos (anclado en registros), que contiene el valor de un atributo clave de ese registro y un apuntador que permite el acceso inmediato a ese registro. El índice siempre se conserva en orden del atributo clave. Pueden existir tantos índices como atributos. El acceso a los registros se logra sólo mediante un índice.

    La siguiente figura representa una organización indexada:

    Indice de primer nivel

     

    Dirección

    Clave

    Puntero

    relativa

    1

    Ana

    4

    2

    Antonio

    20

    3

    Belén

    1

    4

    Carlos

    3

    5

    Cristina

    2

    Indice de segundo

    6

    David

    6

    Nivel

    7

    Diana

    21

    8

    Emilio

    18

    clave

    Puntero

    9

    Federico

    11

    Belén

     
    • 1 Fernando

    10

     

    8

    David

     
    • 4 Gabriel

    11

     

    7

    Federic

     

    12

    • 7 Irene

     

    10

    o

    Irene

     
    • 10 Julia

    13

     

    9

    Manuel

     
    • 13 Luis

    14

     

    5

    Rosa

     
    • 16 Manuel

    15

     

    12

    Yolanda

     
    • 19 Nuria

    16

     

    13

       

    17

    Ramón

    19

       

    18

    Rosa

    15

     

    19

    Susana

    16

    20

    Verónica

    14

    Area de datos

    Dirección

    Clave + datos

    relativa

    1

    Belén

    2

    Cristina

    3

    Carlos

    4

    Ana

    5

    Luis

    6

    David

    7

    Gabriel

    8

    Fernando

    9

    Julia

    10

    Irene

    11

    Federico

    12

    Manuel

    13

    Nuria

    14

    Verónica

    15

    Rosa

    16

    Susana

    17

    Yolanda

    18

    Emilio

    19

    Ramón

    20

    Antonio

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    21 Yolanda

    17

    • 21 Diana

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos Administración de Sistemas Informáticos TEMA 1:

    Comparando la figura anterior con la organización secuencial-indexada, podemos observar las siguientes diferencias: el área de datos no se encuentra ordenada por secuencia de clave, sino por orden de llegada. Además, el índice de primer nivel es exhaustivo.

    En la figura anterior sólo hemos representado un índice por el campo clave nombre, pero puede haber tantos índi ces como atributos. A un fichero para el que se han creado índices sólo para algunos atributos se le denomina fichero parcialmente invertido. Si existe un índice para cada atributo del registro, se dice que el fichero está totalmente invertido.

    Los archivos indexados se utilizan cuando es muy importante una respuesta rápida y la indexación múltiple de la información, que hace posible encontrar los mismos datos por distintos campos.

    Lo habitual en ficheros indexados puros es que se utilicen índices dinámicos del tipo Arbol B. Veamos brevemente su funcionamiento:

    Primero veremos el funcionamiento básico de un árbol B+: Se trata de índices dinámicos que varían al añadir o eliminar datos en el fichero. Los registros de índices se agrupan en bloques, éstos disponen de espacio para nuevas inserciones y sólo cuando el bloque está lleno se crea otro. La mitad de los registros provenientes del bloque lleno se distribuyen en el nuevo bloque y se crea una nueva anotación en el bloque de nivel superior. A su vez, este bloque superior puede llenarse y requerir una división. Si el bloque raíz está lleno, se dividirá y se creará un nuevo bloque raíz con dos anotaciones, una para cada una de las mitades del antiguo bloque raíz.

    Veámoslo con un ejemplo:

    Añadir A A
    Añadir A
    A
    Añadir R A R
    Añadir R
    A
    R
    Añadir L A L R
    Añadir L
    A
    L
    R

    Añadir J

    A J J R L R
    A
    J
    J
    R
    L
    R

    Añadir F

    A F J J R L R
    A
    F
    J
    J
    R
    L
    R

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    Añadir C

    A C C J F R J L R
    A
    C
    C
    J
    F
    R
    J
    L
    R

    Cuando se elimina una anotación de un bloque, puede quedarse con menos de la mitad de anotaciones posibles. En ese caso se revisa su compañero para intentar combinarlo, eliminando una anotación de nivel superior. Esta eliminación puede propagarse hasta llegar al bloque raíz.

    Los índices de árbol B son similares a los índices del árbol B+. La diferencia fundamental es que el árbol B elimina las anotaciones redundantes de las mayores claves de cada grupo, con lo cual los valores de las claves aparecen una sola vez en todo el árbol, ahorrando espacio de almacenamiento del índice. Además, a veces encontraremos la clave buscada antes de llegar a un nodo hoja.

    Cada anotación de un bloque “no hoja” dispone de dos punteros, uno que apunta al siguiente nodo y otro que apunta al registro correspondiente del área de datos. La gestión, y sobre todo las eliminaciones, en árboles B es más compleja que en árboles B+, y las ventajas apenas se notan, por lo que la mayoría de las veces se emplean árboles B+.

    A L R
    A
    L
    R
    A Añadir J J R L
    A
    Añadir J
    J
    R
    L

    Añadir F y C

    A C J F R L
    A
    C
    J
    F
    R
    L

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    Un ejemplo práctico de un archivo índice orientado a árbol B es el Método de acceso de almacenamiento virtual propuesto por IBM en 1972 (VSAM - Virtual Storage Access Method). El término virtual se debe sólo a que los programas utilizados para implantar VSAM dependían del direccionamiento virtual proporcionado por los IBM 370.

    Características de un fichero indexado.

    Economía de almacenamiento: No existe área de desborde por lo que el área de datos no requiere espacio para punteros de excedentes.

    Recuperación de registros: Al no existir áreas de desbor de el tiempo de recuperación suele ser inferior al de un fichero secuencial indexado, ya que la búsqueda se limita a través de los índices.

    Obtención del siguiente registro: La búsqueda del siguiente registro se basa en el seguimiento de un índice, de forma que sólo hay que acceder al registro direccionado por la siguiente anotación del índice. Lo normal es que el siguiente registro esté alejado físicamente del último registro tratado, por lo que los archivos indexados, ante procesos secuenciales, no se comportan tan bien como los secuenciales indexados.

    Inserciones de un nuevo registro: Para añadir un nuevo registro se coloca al final del área de datos y se actualizan todos los índices según vimos al tratar del funcionamiento de un Arbol B.

    Actualización de registros: Consiste en la búsqueda del registro, el cambio de los datos y los cambios necesarios en los índices afectados.

    Borrado de un registro: Suele hacerse por marca de epitafio y afecta a todos los índices del fichero.

    Lectura de un archivo indexado: La única forma de realizarlo es mediante la lectura de un índice.

    Reorganización de un archivo indexado: La reorganización de este tipo de archivos puede no ser necesaria, salvo para la recuperación de espacio de datos. Si el archivo se reorganiza se hace obligado una reindexación de todos los índices.

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    1.9. Organización relativa o directa.

    La organización directa intenta explotar la capacidad de acceso directo proporcionada por las unidades de discos magnéticos y dispositivos similares.

    El método de acceso directo es rápido, pero obliga a la localización de los datos únicamente por uno de los campos del registro (atributo clave).

    Para el cálculo de la dirección a partir de la clave del registro, se pueden utilizar dos métodos:

    • 1. Dirección directa: Consiste en amoldar la clave a las direcciones físicas del disco. Existen problemas al utilizar direcciones reales en términos de continuidad numérica y respuesta a cambios del sistema. No sería muy lógico, ni cómodo adaptar una clave del siguiente modo:

    30 07 85

    Cilindro 30 Pista 07
    Cilindro 30
    Pista 07
    Bloque 8 Registro 5
    Bloque 8
    Registro 5
    • 2. Transformación de clave a dirección relativa: Como solución al problema que plantea el anterior direccionamiento, se puede transformar cada clave en una dirección relativa numerada de 0 a N, desde la dirección de inicio del fichero. La dirección física la obtiene el sistema aplicando un cálculo muy simple:

    Dirección de inicio + (dirección relativa * tamaño del registro)

    Para obtener una dirección relativa a partir de una clave se emplea un algoritmo diseñado para tal fin, denominado función de hashing. Cada dirección relativa que se obtenga deberá identificar a un sólo registro y para el caso de inserciones deberá designar un espacio libre donde almacenar dicho registro. Dentro de los procedimientos de transformación de clave a dirección puede distinguirse dos tipos:

    • a) Procedimientos determinísticos: Toman todo el conjunto de valores de la clave y les calculan una dirección única para cada uno. Por ejemplo, un fichero que contenga un registro por cada día de un año. La clave podría ser la fecha compuesta por mes y día. En el registro 1 se almacenaría los datos correspondientes al día 1 del mes 1, en el registro 2, los correspondientes al día 2 mes 1, así sucesivamente hasta el registro 372 (31*12) que almacenaría los datos del día 31 del mes 12. La función hash podría ser la siguiente:

    Dirección relativa = (31 * (nºmes – 1)) + nºdía

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    Algunos registro no estarían ocupados, ya que todos lo meses no tiene 31 días, pero el desperdicio es inapreciable.

    • b) Procedimientos aleatorios: Calculan el valor de la dirección a través de la clave, pero no asegura una dirección única para cada clave. Cuando para dos claves distintas se obtiene la misma dirección se dice que se ha producido una colisión; y habrá que determinar otra ubicación para el registro que colisiona. Llamamos sinónimos a los registros a los que la fórmula asigna la misma posición en el fichero.

    A la hora de aplicar esta técnica hay que analizar cuatro parámetros:

    • a) El tamaño de los cubos.

    • b) El número de cubos para el fichero.

    • c) La función de hashing.

    • d) El tratamiento de colisiones.

    • a) Tamaño de los cubos: Se denominan cubos a los espacios de dirección que se ponen a disposición del mecanismo de direccionamiento. En un cubo tiene cabida uno o más registros, en el caso de admitir más de un registro, serán registros sinónimos. La función de hashing nos devolvería la dirección de un cubo. Dentro de un cubo con más de un registro se localizará el registro buscado leyendo secuencialmente.

    • b) Número de cubos: El número de los cubos deberá elegirse en función del tamaño de los mismos y del número de registros esperados.

    • c) La función de hashing: El algoritmo de la función debe cumplir dos objetivos:

      • 1. Cada clave dentro del rango original deberá aleatorizarse dentro del rango permitido (es habitual sobredimensionar el tamaño del fichero con objeto de disminuir las colisiones). Por ejemplo, si utilizamos como clave de un fichero de personal el DNI y la empresa dispone de 250 empleados. El rango original de los DNI’s oscilaría entre los 20 y los 30 millones y el rango permitido podría oscilar entre 1 y 300 si sobredimensionamos el fichero en un 20%.

      • 2. Las direcciones deberán distribuirse uniformemente dentro del rango previsto, de forma que existan pocos sinónimos y pocos huecos.

    Los métodos más frecuentes para calcular las direcciones a través de las claves son:

    • - Resto de la división: la dirección relativa se obtiene de dividir la clave entre un número primo cercano al tamaño del fichero.

    • - Doblar y sumar: la clave se divide en partes y se suman, la suma nos daría la dirección relativa. Por ejemplo: para la clave 746298

    Partida por la mitad: 746 + 298 = 1044 Partida en tres: 74 + 62 + 98 = 234 Dígitos alternos: 769 + 428 = 1197

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    • - Método del centro del cuadrado: La clave se eleva al cuadrado y se toman los dígitos centrales, operando con ellos para que caigan dentro del rango permitido. Por ejemplo, para obtener la dirección relativa de la clave 6850 en un archivo de 300 registros: 6850 * 6850 = 46922500, tomando los dígitos centrales 922 y se multiplican por un factor constante 0.3 para que se generen números dentro del rango permitido. 922 * 0.3 = 276 dirección relativa.

    • d) Tratamiento de colisiones: Si se va a realizar una inserción una vez calculada la dirección a través de su clave, se lee esta dirección y se comprueba que realmente está vacía (no se ha producido colisión), para ello el campo que se utiliza como campo clave está igualado a NULL. Si la dirección está ocupada se ha producido una colisión que se ha de resolver.

    Para resolver las colisiones se utilizan los siguientes métodos:

    Búsqueda lineal: cuando ocurre una colisión se busca en el siguiente hueco libre

    en orden secuencial. Rehashing o realeatorización: calcular una nueva dirección para el registro,

    bien utilizando otro campo para el cálculo o utilizando un algoritmo distinto. Esta realeatorización puede ser necesaria repetirla varias veces. Utilizar un área de colisiones independiente: Se utiliza un área separada del archivo principal donde van a almacenarse todas las colisiones que se produzcan. Puede ocurrir que el área de colisiones se llene mientras que aún queda espacio libre en el área principal.

    Características de un fichero directo.

    Economía de almacenamiento: Generalmente los archivos directos utilizan una estructura de registro fija, a lo que habría que añadir el espacio que hay que reservar para las posibles colisiones y el espacio de sobredimensionado.

    Recuperación de un registro: Para recuperar un registro es necesario ejecutar la función hashing sobre la clave, el tiempo para acceder a la dirección que nos devuelve es muy pequeño, y sólo se verá afectado por el tratamiento elegido en caso de colisión.

    Obtención del siguiente registro: No será posible localizar al siguiente registro a no ser que se conozca la siguiente clave en secuencia

    Inserción de un registro: Este proceso conlleva la transformación de la clave en dirección, el acceso a la dirección señalada y la verificación de que no está ya ocupada. Si no está ocupada se almacena el registro, y si lo está, se procede al tratamiento de la colisión según el método utilizado para resolver colisiones.

    I.E.S. Miguel Romero Esteo Sistemas Gestores de Bases de Datos

    Administración de Sistemas Informáticos TEMA 1: Sistemas clásicos de gestión de ficheros

    Actualización de un registro: Consiste en encontrar un registro y volverlo a escribir, si se produce un cambio de clave habría que realizar una eliminación y una inserción.

    Borrado de un registro: Se puede liberar el espacio ocupado poniendo a NULL el valor del campo clave, de forma que pueda ser utilizado por otro registro en caso de colisión.

    Lectura del archivo completo: Sólo es posible efectuando una lectura de todo el espacio asignado al archivo.

    Reorganización del archivo: Para que se pueda producir es necesario reescribir el proceso de aleatorización utilizado.