33
IBD Clase 9

Clase 09 - Hashing II

Embed Size (px)

Citation preview

Page 1: Clase 09 - Hashing II

IBD

Clase 9

Page 2: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 92

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

Page 3: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 93

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.

Page 4: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 94

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

Page 5: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 95

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

Page 6: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 96

Hashing (Dispersión)

K: Nº registrosB: cant. de registros que caben en un compartimento o cubetaN: Nº de direcciones de memoria disponiblesDE (densidad de empaquetamiento) = K / B * N

Arch. sin compartimientos

Arch. con compartimientos

Nº registros 750 750

Nº direcciones 1000 500

Tamaño Compartimiento 1 2

DE 0.75 0.75

Proporcion entre registros y direcciones

0.75 1.5

Page 7: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 97

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

!

*)/()(

)/(

x

eNKxP

NKx

Page 8: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 98

Hashing (Dispersión)

Con compartimientos con tamaño 1, 1000 direcciones de memoria disponibles , 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.1328 + 2*0.0332+ 3*0.0062+ 4*0.0009+5*0.0001)= 222 (saturación del 29.6%)

Page 9: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 99

Hashing (Dispersión)

Con compartimientos con tamaño 2, 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.1255 + 2*0.0471+ 3*0.0141+ 4*0.0035+5*0.0008)= 140 (saturación del 18.7%)

Page 10: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 910

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)

Page 11: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 911

Hashing (Dispersión)DE 1 2 5 10 100

10% 4.8 0.6 0.0 0.0 0.0

20% 9.4 2.2 0.1 0.0 0.0

30% 13.6 4.5 0.4 0.0 0.0

40% 17.6 7.3 1.1 0.1 0.0

50% 21.3 10.4 2.5 0.4 0.0

60% 24.8 13.7 4.5 1.3 0.0

70% 28.1 17.0 7.1 2.9 0.0

75% 29.6 % 18.7 % 8.6 % 4.0 % 0.0

80% 31.2 20.4 10.3 5.3 0.1

90% 34.1 23.8 13.8 8.9 0.8

100% 36.8 27.1 17.6 12.5 4.0

Page 12: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 912

Hashing (Dispersión)

Aún con algoritmos de dispersión MB, 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

Page 13: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 913

Hashing (Dispersión)

Saturación Progresiva Cuando se completa una dirección de memoria se

busca en las siguientes direcciones en secuencia, 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, ó

• Si el archivo está lleno, la búsqueda vuelve a donde comenzó

Page 14: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 914

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,

por eso no es conveniente dejar direcciones vacías, que terminen la búsqueda por saturación en forma inapropiada

Page 15: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 915

Hashing (Dispersión)Saturación Progresiva

Eliminación:• Se marca el espacio liberado (por ej. 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

Page 16: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 916

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º, el cual se suma a la dirección original tantas veces como sea necesario hasta encontrar una dirección vacía (con espacio)

Page 17: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 917

Hashing (Dispersión)

Dispersión doble Características

• Se evita acumulamiento. • Los registros no quedan “locales” , tienden a

esparcirse en el archivo• Aumenta T.A.P. a los registros. • Se debería conseguir compartimientos de

saturación con dirección al mismo cilindro de disco, ya que el cambio de cilindro requiere un costoso movimiento de la cabeza lectora/grabadora.

Page 18: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 918

Hashing (Dispersión)

Saturación progresiva encadenada Es otra técnica para evitar los problemas

causados por la acumulación de registros. Funciona igual que la Saturación Progresiva,

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. El sgte. registro contiene a la vez un ptr al sgte registro con la misma dir base y así sucesivamente.

Page 19: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 919

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

Page 20: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 920

Hashing (Dispersión) Saturación progresiva encadenada:

Problemas: acceder a una dirección base ocupada con un registro que no es de ese lugar.

Ej. Gamma tiene dirección base 22, pero se inserta en 26, entonces cual es el siguiente del 22, el 24 ó el 26 ?

Dir. Base Clave Encadenado

22 Alfa 24

23 Epsilon

24 Delta 25

25 Beta -1

26

Page 21: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 921

Hashing (Dispersión)

Saturación progresiva encadenada: Solución: cargar el archivo en 2 pasos

1) Sólo cargar los registros con direcciones Base. Los registros (duplicados) que no son base se guardarán en un archivo separado se garantiza que ninguna dir. base estará ocupada por registros en saturación.

2) Cargar los repetidos en direcciones libres

Aunque esta solución no garantiza que las eliminaciones y/o inserciones posteriores no tendrán problemas

Page 22: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 922

Hashing (Dispersión)

Saturación Progresiva con encadenamiento en áreas separadas

Al conjunto de direcciones base se le llama área ppal. 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. Base se almacena allí, 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

Page 23: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 923

Hashing (Dispersión) Saturación Progresiva con encadenamiento

en áreas separadas Ej. 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, toda búsqueda de reg en saturación implicará un mov de cabeza muy costoso.

Cuándo usarse ?• Cuando la DE > 1 (hay más reg que las direcciones

base)

Page 24: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 924

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.

Page 25: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 925

Hashing (Dispersión)

• Buen método de recuperación, un acceso, 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.

Page 26: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 926

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

Page 27: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 927

Hashing (Dispersión)

Técnica buena, necesitamos número de direcciones fijas, virtualmente imposible

Archivo se llena Saturación excesiva Redispersar, nueva función, muchos cambios

Solución Reorganizar tablas sin mover muchos

registros Técnicas que asumen bloques físicos,

pueden utilizarse o liberarse.

Page 28: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 928

Hashing (Dispersión)

C/Técnica, tiene solución con problemasPartir la cubeta cuando se llenaReacomodar registros entre cubeta

vieja y nuevaMinimizar accesos a cubetas durante

la recuperaciónBorrar registros del archivo

Page 29: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 929

Hashing (Dispersión) Varias posibilidades

Hash virtual Hash dinámico Hash Extensible (veremos)

Hash Extensible Adapta el resultado de la función de hash de

acuerdo al número de registros que tenga el archivo, y de las cubetas necesitadas para su almacenamiento.

Función: Genera secuencia de bits (normalmente 32)

Evita mantener áreas de desbordamiento y hacer búsquedas con dos lecturas

Page 30: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 930

Hashing (Dispersión)

Hash Extensible Como trabaja: Se utilizan solo los bits necesarios de

acuerdo a cada instancia del archivo. 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, para ello se toma un bit más.

La tabla tendrá tantas entradas (direcciones de cubetas) como 2i, siendo i el número de bits actuales para el sistema.

Page 31: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 931

Elección de organización

ArchivosAcomodar datos para satisfacer

rápidamente requerimientosAccesos: resumen

Organización Un registro Todos los reg.

Ninguna Lento Lento

Secuencial Lento Rápido

Index sec. (B+) Buena Rápida

Hash Rápido lento

Page 32: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 932

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, tamaño de registros

• Requerimientos de usuario• Tipos de operaciones, número de accesos a

archivos

• Características del hard• Tamaño de sectores, bloques, pistas,

cilíndros, etc.

Page 33: Clase 09 - Hashing II

UNLP - Facultad de InformáticaIBD - CLASE 933

Elección de organización

Parámetros• Tiempo (necesario para desarrollar y

mantener el soft, para procesar archivos)• Uso promedio (# reg. Usados/ #registros)