You are on page 1of 33

IBD

Clase 9

Hashing (Dispersión)

Los árboles B y B+ consiguen localizar datos en tiempo óptimo O(logm n) siendo m el orden del árbol La idea de los archivos dispersos es reducir este tiempo a O(1), utilizando las técnicas de dispersión o hashing

Esto es interesante en aplicaciones con una frecuencia de búsquedas muy alta y donde el tiempo de búsqueda sea crítico
2
IBD - CLASE 9 UNLP - Facultad de Informática

Hashing (Dispersión)

Los archivos dispersos localizan la información utilizando una función hash h, tal que h(k)=x, siendo k el valor de la clave de un registro y x la posición donde se alberga en el archivo Cuando ocurre que h(k1)=h(k2), k1≠k2, decimos que k1 y k2 son sinónimos y se ha producido una colisión.

3

IBD - CLASE 9

UNLP - Facultad de Informática

Hashing (Dispersión)  El objetivo de todo archivo disperso consiste en encontrar funciones hash que distribuyan lo mejor posible los datos. minimizando el número de colisiones Para evitar colisiones progresivas resulta bastante eficiente considerar una posición x como una cubeta o compartimento con espacio para más de un registro  4 IBD .Facultad de Informática .CLASE 9 UNLP .

Hashing (Dispersión)  Cuando ocurre que h(k1)=h(k2). k1≠k2. ambos datos se albergan en el mismo compartimento Una colisión se produce cuando un compartimento está lleno  5 IBD .Facultad de Informática .CLASE 9 UNLP .

Hashing (Dispersión) K: Nº registros B: cant.CLASE 9 2 0.Facultad de Informática .5 UNLP .75 1. con compartimientos 750 500 Tamaño Compartimiento DE Proporcion entre registros y direcciones 6 1 0.75 IBD .75 0. de registros que caben en un compartimento o cubeta N: Nº de direcciones de memoria disponibles DE (densidad de empaquetamiento) = K / B * N Arch. sin compartimientos Nº registros Nº direcciones 750 1000 Arch.

Hashing (Dispersión) Para determinar el Nº esperado de registros en saturación usando una función de dispersión aleatoria. la función de Poisson da la proporción esperada de direcciones asignadas con x registros (K / N ) * e P( x)  x! 7 IBD .CLASE 9 x ( K / N ) UNLP .Facultad de Informática .

Facultad de Informática . 1000 direcciones de memoria disponibles .0332+ 3*0. el Nº esperado de registros en saturación es: N * (1*p(2) + 2*p(3) + 3*p(4) + 4*p(5))  1000 * ( 1*0.CLASE 9 UNLP .Hashing (Dispersión) Con compartimientos con tamaño 1.6%) 8 IBD .0009+5*0.1328 + 2*0.0001)= 222 (saturación del 29.0062+ 4*0.

0008)= 140 (saturación del 18.CLASE 9 UNLP .0141+ 4*0.1255 + 2*0.Hashing (Dispersión) Con compartimientos con tamaño 2.Facultad de Informática . pero con 500 direcciones de memoria disponibles. el Nº esperado de registros en saturación es: N * (1*p(3) + 2*p(4) + 3*p(5) + 4*p(6))  500 * ( 1*0.0471+ 3*0.7%) 9 IBD .0035+5*0.

Facultad de Informática  10 .Hashing (Dispersión)  Cual debería ser el tamaño de compartimiento?  Depende del sistema (buffer SO. tiempo de acceso) Si es muy grande. la recuperación de un registro muy lenta (transferencia) IBD .CLASE 9 UNLP .

8 2.1 10 0.0 UNLP .Facultad de Informática .8 100% 11 36.8 9.5 4.2 34.0 0.7 % 20.1 8.3 0.1 0.0 18.1 29.7 0.1 IBD .6 2.8 7.4 13.0 0.1 2.0 30% 40% 50% 60% 13.9 4.Hashing (Dispersión) DE 10% 20% 1 4.CLASE 9 17.0 70% 75% 80% 90% 28.0 0.6 % 10.1 17.0 0.4 1.3 8.0 0.0 0.9 0.8 4.8 27.3 24.6 12.0 % 5.6 % 31.0 0.2 5 0.6 21.4 23.1 0.0 0.5 7.3 10.4 1.3 13.5 4.4 2 0.5 0.0 0.6 17.0 100 0.

Facultad de Informática 12 .CLASE 9 UNLP . ocurrirán colisiones  se debe incorporar algún método para tratar con los registros que no pueden entrar en su dirección base. Tratamiento de colisiones       Saturación Progresiva Dispersión doble Saturación Progresiva encadenada Saturación Progresiva encadenada (en áreas separadas) Hash Asistido por Tabla IBD .Hashing (Dispersión)  Aún con algoritmos de dispersión MB.

la búsqueda vuelve a donde comenzó  13 IBD .Facultad de Informática . hasta encontrar una vacía Búsqueda: • Comienza en la dirección base y continúa buscando en localidades sucesivas hasta encontrar (puede haber circularidad) • Si se encuentra una dirección vacía-> se puede suponer que la clave buscada no está en el archivo.CLASE 9 UNLP .Hashing (Dispersión)  Saturación Progresiva  Cuando se completa una dirección de memoria se busca en las siguientes direcciones en secuencia. ó • Si el archivo está lleno.

Hashing (Dispersión)  Saturación Progresiva  Eliminación: • No debe permitirse que el espacio liberado por la eliminación obstaculice las búsquedas posteriores • Al mismo tiempo que debe ser posible utilizar el espacio liberado para adiciones posteriores  Problemas: • La búsqueda finaliza al encontrar una dirección vacía.Facultad de Informática . que terminen la búsqueda por saturación en forma inapropiada 14 IBD .CLASE 9 UNLP . por eso no es conveniente dejar direcciones vacías.

Facultad de Informática 15 . con ####): • el espacio liberado no rompe la secuencia de búquedas • el espacio liberado está disponible y puede ser usado en adiciones posteriores • No es necesario marcar el espacio liberado si el registro siguiente está vacío • La saturación progresiva tiende a agrupar en zonas contiguas-> búsquedas largas con DE que tienden a 1 • Solución: almacenar los registros de overflow en zonas no relacionadas  La gran ventaja de la Saturación Progresiva es su simplicidad IBD .CLASE 9 UNLP .Hashing (Dispersión)  Saturación Progresiva Eliminación: • Se marca el espacio liberado (por ej.

Hashing (Dispersión)  Dispersión  doble Cuando sucede una colisión se aplica una segunda función de dispersión a la llave para producir un Nº.CLASE 9 UNLP . el cual se suma a la dirección original tantas veces como sea necesario hasta encontrar una dirección vacía (con espacio) 16 IBD .Facultad de Informática .

Hashing (Dispersión)  Dispersión doble  Características • Se evita acumulamiento. IBD . • Los registros no quedan “locales” . ya que el cambio de cilindro requiere un costoso movimiento de la cabeza lectora/grabadora. tienden a esparcirse en el archivo • Aumenta T. a los registros.A.Facultad de Informática 17 . • Se debería conseguir compartimientos de saturación con dirección al mismo cilindro de disco.CLASE 9 UNLP .P.

CLASE 9 UNLP . registro contiene a la vez un ptr al sgte registro con la misma dir base y así sucesivamente.Facultad de Informática 18 .Hashing (Dispersión)  Saturación progresiva encadenada    Es otra técnica para evitar los problemas causados por la acumulación de registros. excepto que las claves sinónimos se enlazan por apuntadores (no ocupando necesariamente posiciones contiguas) Cada dirección base contiene un número que indica el lugar del siguiente registro con la misma dirección base. IBD . El sgte. Funciona igual que la Saturación Progresiva.

Hashing (Dispersión)  Saturación progresiva encadenada  Ejemplo (comparando las 2 saturaciones) Ventaja: Solo se necesita acceder a los registros con llaves sinónimas • Mejora el Nº de accesos promedio   Desventaja: debe agregarse un campo de enlace a cada registro  requiere mayor espacio de almacenamiento IBD .Facultad de Informática 19 .CLASE 9 UNLP .

el 24 ó el 26 ? Dir.Facultad de Informática .CLASE 9 UNLP . Gamma tiene dirección base 22. Ej.Hashing (Dispersión)  Saturación progresiva encadenada:   Problemas: acceder a una dirección base ocupada con un registro que no es de ese lugar. Base 22 23 24 25 26 Clave Alfa Epsilon Delta Beta 25 -1 Encadenado 24 20 IBD . entonces cual es el siguiente del 22. pero se inserta en 26.

2) Cargar los repetidos en direcciones libres Aunque esta solución no garantiza que las eliminaciones y/o inserciones posteriores no tendrán problemas  21 IBD .Hashing (Dispersión)  Saturación progresiva encadenada:  Solución: cargar el archivo en 2 pasos 1) Sólo cargar los registros con direcciones Base. base estará ocupada por registros en saturación.Facultad de Informática .CLASE 9 UNLP . Los registros (duplicados) que no son base se guardarán en un archivo separado  se garantiza que ninguna dir.

Facultad de Informática   22 .Hashing (Dispersión)  Saturación Progresiva con encadenamiento en áreas separadas  Al conjunto de direcciones base se le llama área ppal.CLASE 9 UNLP . Base se almacena allí. De datos Al conjunto de direcciones en saturación se le llama área de saturación Cuando se agrega un registro nuevo si hay lugar en dir. sino se mueve al archivo de saturación (en un área separada) donde se agrega a la lista enlazada que comienza en la dirección base IBD .

Cuándo usarse ? • Cuando la DE > 1 (hay más reg que las direcciones base) 23 IBD . toda búsqueda de reg en saturación implicará un mov de cabeza muy costoso. de encadenamiento en áreas separadas Se mejora el tratamiento de inserciones y eliminaciones Si el área de saturación separada está en un cilindro diferente del de la dir base.CLASE 9 UNLP .Facultad de Informática .Hashing (Dispersión)  Saturación Progresiva con encadenamiento en áreas separadas     Ej.

Hashing (Dispersión)  Variante del encadenamiento:  Tablas de dispersión – Hash asistido por Tabla • Tabla en memoria: • Una entrada por cada cubeta del archivo • Inserciones lentas • Recuperaciones rápidas • Llaves: convierte en dos elementos • Dirección de cubetas • Secuencia de K-Bits • Tabla: valor máximo de secuencia que estuvo en la cubeta (comienza en infinito) • Ejemplo.CLASE 9 UNLP .Facultad de Informática . 24 IBD .

CLASE 9 UNLP . sirve cuando se recupera más que se inserta • Inserciones: • Cubeta con lugar: queda el elemento • Cubeta llena: overflow. lista de inserción • Borrado: observar que sucede con la cubeta • Si estaba o no llena. un acceso.Facultad de Informática . 25 IBD .Hashing (Dispersión) • Buen método de recuperación.

Facultad de Informática .Hashing (Dispersión)  Tratamiento de colisiones      Saturación Progresiva Dispersión doble Saturación Progresiva encadenada Saturación Progresiva encadenada (en áreas separadas) Hash Asistido por Tabla 26 IBD .CLASE 9 UNLP .

IBD . nueva función.Facultad de Informática  Solución   27 . pueden utilizarse o liberarse. virtualmente imposible Archivo se llena   Saturación excesiva Redispersar.Hashing (Dispersión)   Técnica buena. necesitamos número de direcciones fijas.CLASE 9 UNLP . muchos cambios Reorganizar tablas sin mover muchos registros Técnicas que asumen bloques físicos.

Facultad de Informática .Hashing (Dispersión)  C/Técnica.CLASE 9 UNLP . tiene solución con problemas Partir la cubeta cuando se llena  Reacomodar registros entre cubeta vieja y nueva  Minimizar accesos a cubetas durante la recuperación  Borrar registros del archivo  28 IBD .

Facultad de Informática .CLASE 9 UNLP . y de las cubetas necesitadas para su almacenamiento.Hashing (Dispersión)  Varias posibilidades    Hash virtual Hash dinámico Hash Extensible (veremos)  Hash Extensible    29 Adapta el resultado de la función de hash de acuerdo al número de registros que tenga el archivo. Función: Genera secuencia de bits (normalmente 32) Evita mantener áreas de desbordamiento y hacer búsquedas con dos lecturas IBD .

Facultad de Informática 30 .Hashing (Dispersión)  Hash Extensible  Como trabaja:     Se utilizan solo los bits necesarios de acuerdo a cada instancia del archivo. La tabla tendrá tantas entradas (direcciones de cubetas) como 2i.CLASE 9 UNLP . Los bits tomados forman la dirección de la cubeta que se utilizará Si se intenta insertar a una cubeta llena deben reubicarse todos los registros allí contenidos entre la cubeta vieja y la nueva. siendo i el número de bits actuales para el sistema. para ello se toma un bit más. IBD .

(B+) Hash 31 Lento Buena Rápido IBD .Facultad de Informática .CLASE 9 Rápido Rápida lento UNLP . Lento Secuencial Index sec.Elección de organización  Archivos Acomodar datos para satisfacer rápidamente requerimientos  Accesos: resumen  Organización Ninguna Un registro Lento Todos los reg.

pistas. tamaño de registros • Requerimientos de usuario • Tipos de operaciones.Facultad de Informática .Elección de organización  Elección de organización   Captar los requerimientos de usuario Qué examinar • Características del archivo • Número de registros. bloques.CLASE 9 UNLP . número de accesos a archivos • Características del hard • Tamaño de sectores. cilíndros. 32 IBD . etc.

para procesar archivos) • Uso promedio (# reg.Facultad de Informática .CLASE 9 UNLP .Elección de organización  Parámetros • Tiempo (necesario para desarrollar y mantener el soft. Usados/ #registros) 33 IBD .