La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IBD Clase 9. UNLP - Facultad de InformáticaIBD - CLASE 9 2 Hashing (Dispersión) Los árboles B y B+ consiguen localizar datos en tiempo óptimo O(log m.

Presentaciones similares


Presentación del tema: "IBD Clase 9. UNLP - Facultad de InformáticaIBD - CLASE 9 2 Hashing (Dispersión) Los árboles B y B+ consiguen localizar datos en tiempo óptimo O(log m."— Transcripción de la presentación:

1 IBD Clase 9

2 UNLP - Facultad de InformáticaIBD - CLASE 9 2 Hashing (Dispersión) Los árboles B y B+ consiguen localizar datos en tiempo óptimo O(log m 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

3 UNLP - Facultad de InformáticaIBD - CLASE 9 3 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), k1k2, decimos que k1 y k2 son sinónimos y se ha producido una colisión.

4 UNLP - Facultad de InformáticaIBD - CLASE 9 4 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

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

6 UNLP - Facultad de InformáticaIBD - CLASE 9 6 Hashing (Dispersión) K: Nº registros B: cant. 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 Arch. con compartimientos Nº registros750 Nº direcciones Tamaño Compartimiento12 DE0.75 Proporcion entre registros y direcciones

7 UNLP - Facultad de InformáticaIBD - CLASE 9 7 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

8 UNLP - Facultad de InformáticaIBD - CLASE 9 8 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.0001)= 222 (saturación del 29.6%)

9 UNLP - Facultad de InformáticaIBD - CLASE 9 9 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.0008)= 140 (saturación del 18.7%)

10 UNLP - Facultad de InformáticaIBD - CLASE 9 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)

11 UNLP - Facultad de InformáticaIBD - CLASE 9 11 Hashing (Dispersión) DE % % % % % % % %29.6 %18.7 %8.6 %4.0 %0.0 80% % %

12 UNLP - Facultad de InformáticaIBD - CLASE 9 12 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

13 UNLP - Facultad de InformáticaIBD - CLASE 9 13 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ó

14 UNLP - Facultad de InformáticaIBD - CLASE 9 14 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

15 UNLP - Facultad de InformáticaIBD - CLASE 9 15 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

16 UNLP - Facultad de InformáticaIBD - CLASE 9 16 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)

17 UNLP - Facultad de InformáticaIBD - CLASE 9 17 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.

18 UNLP - Facultad de InformáticaIBD - CLASE 9 18 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.

19 UNLP - Facultad de InformáticaIBD - CLASE 9 19 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

20 UNLP - Facultad de InformáticaIBD - CLASE 9 20 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. BaseClaveEncadenado 22Alfa24 23Epsilon 24Delta25 Beta 26

21 UNLP - Facultad de InformáticaIBD - CLASE 9 21 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

22 UNLP - Facultad de InformáticaIBD - CLASE 9 22 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

23 UNLP - Facultad de InformáticaIBD - CLASE 9 23 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)

24 UNLP - Facultad de InformáticaIBD - CLASE 9 24 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.

25 UNLP - Facultad de InformáticaIBD - CLASE 9 25 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.

26 UNLP - Facultad de InformáticaIBD - CLASE 9 26 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

27 UNLP - Facultad de InformáticaIBD - CLASE 9 27 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.

28 UNLP - Facultad de InformáticaIBD - CLASE 9 28 Hashing (Dispersión) C/Técnica, 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

29 UNLP - Facultad de InformáticaIBD - CLASE 9 29 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

30 UNLP - Facultad de InformáticaIBD - CLASE 9 30 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 2 i, siendo i el número de bits actuales para el sistema.

31 UNLP - Facultad de InformáticaIBD - CLASE 9 31 Elección de organización Archivos Acomodar datos para satisfacer rápidamente requerimientos Accesos: resumen OrganizaciónUn registroTodos los reg. NingunaLento SecuencialLentoRápido Index sec. (B+)BuenaRápida HashRápidolento

32 UNLP - Facultad de InformáticaIBD - CLASE 9 32 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.

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


Descargar ppt "IBD Clase 9. UNLP - Facultad de InformáticaIBD - CLASE 9 2 Hashing (Dispersión) Los árboles B y B+ consiguen localizar datos en tiempo óptimo O(log m."

Presentaciones similares


Anuncios Google