miércoles, 12 de octubre de 2011

Ficheros con organización aleatoria o indirecta

Ficheros con organización aleatoria o indirecta

  • Son ficheros con organización relativa y clave alfanumérica, que hay que transformar para conseguir un valor numérico entero que facilite la correspondencia directa entre la clave y  la dirección de memoria.
  • En este caso las claves no coinciden con la dirección física, que son las posiciones de cada registro.
  • Para transformar dicha clave alfanumérica y obtener la dirección física usamos las siguientes fórmulas:
   f(clave) = clave / 2 (división entera), tendremos que los registros con clave 500 y 501 intentarán ocupar la misma dirección física: la 250. Es responsabilidad del programador evitar estas colisiones.
  • Otras funciones hash, como la ya vista f(clave) = clave x 2, no producen colisiones, pero en cambio provocan que muchas direcciones físicas no sean utilizadas, con lo que se desaprovecha el espacio de almacenamiento.
Ventajas
  • Acceso inmediato a los registros mediante su clave.
  • No es necesario ordenar el fichero.
  • Se pueden realizar operaciones de escritura y lectura a la vez.
  • Son muy rápidos en el tratamiento individual de registros.
  • Se pueden realizar accesos secuenciales.

Inconvenientes
  • El fichero contiene gran cantidad de huecos o espacios.
  • El algoritmo para la conversión de las claves y el algoritmo necesario para el almacenamiento y tratamiento de sinónimos han de ser creados de modo que dejen el menor número de huecos libres y se genere el menor número de sinónimos.
  
      Inserción y Lectura de registro
Dir. de memoria
Clave
Datos
100
50
Registro A
101
-
Registro B
102
51
Registro C
103
-
Registro D
104
52
Registro E
105
-
Registro F 
  • Para insertar el registro A usamos el siguiente algoritmo f(clave) = clave x 2    
  • 50x2 = 100 Corresponde con la dirección de memoria 100. 









  • Al calcular la dirección de memoria puede ser que una clave diferente nos de cómo resultado la misma dirección de memoria, ese registro iría a la zona de overflow 








Borrado de registro
  • Para el borrado, borramos el registro y queda el hueco libre para poder poner un nuevo registro.

No hay comentarios:

Publicar un comentario