1 / 33

IBD

IBD . Clase 9. 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

samantha
Télécharger la présentation

IBD

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IBD Clase 9

  2. 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 IBD - 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), k1≠k2, decimos que k1 y k2 son sinónimos y se ha producido una colisión. IBD - 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 IBD - CLASE 9

  5. 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 IBD - 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 IBD - 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 IBD - 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.1328 + 2*0.0332+ 3*0.0062+ 4*0.0009+5*0.0001)= 222 (saturación del 29.6%) IBD - 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.1255 + 2*0.0471+ 3*0.0141+ 4*0.0035+5*0.0008)= 140 (saturación del 18.7%) IBD - 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) IBD - CLASE 9

  11. Hashing (Dispersión) IBD - 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 IBD - 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ó IBD - 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 IBD - 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 IBD - 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) IBD - 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. IBD - 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. IBD - 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 IBD - 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 ? IBD - 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 IBD - 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 IBD - 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) IBD - 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. IBD - 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. IBD - 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 IBD - 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. IBD - 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 IBD - 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 IBD - 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 2i, siendo i el número de bits actuales para el sistema. IBD - CLASE 9

  31. Elección de organización • Archivos • Acomodar datos para satisfacer rápidamente requerimientos • Accesos: resumen IBD - CLASE 9

  32. 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. IBD - 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) IBD - CLASE 9

More Related