La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IBD Clase 9.

Presentaciones similares


Presentación del tema: "IBD Clase 9."— Transcripción de la presentación:

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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º registros 750 Nº direcciones 1000 500 Tamaño Compartimiento 1 2 DE 0.75 Proporcion entre registros y direcciones 1.5 IBD - CLASE 9 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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%) IBD - CLASE 9 UNLP - Facultad de Informática

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%) IBD - CLASE 9 UNLP - 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 - Facultad de Informática

11 Hashing (Dispersión) DE 1 2 5 10 100 10% 4.8 0.6 0.0 20% 9.4 2.2 0.1
30% 13.6 4.5 0.4 40% 17.6 7.3 1.1 50% 21.3 10.4 2.5 60% 24.8 13.7 1.3 70% 28.1 17.0 7.1 2.9 75% 29.6 % 18.7 % 8.6 % 4.0 % 80% 31.2 20.4 10.3 5.3 90% 34.1 23.8 13.8 8.9 0.8 100% 36.8 27.1 12.5 4.0 IBD - CLASE 9 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

14 Hashing (Dispersión) Saturación Progresiva Eliminación: Problemas:
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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - 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. 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. Ejemplo de saturación progresiva encadenada: Sat. progresiva Dir Base Dir. Real Accesos Pepe Pipo Juan promedio Jose /6 = 3 Alfa Beta Saturación progresiva encadenada Dir. Real Encadenado Accesos 20 Pepe 21 Pipo 22 Juan promedio 23 Jose /6=2 24 Alfa 25 Beta IBD - CLASE 9 UNLP - Facultad de Informática

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 Ejemplo de saturación progresiva encadenada: Sat. progresiva Dir Base Dir. Real Accesos Pepe Pipo Juan promedio Jose /6 = 3 Alfa Beta Saturación progresiva encadenada Dir. Real Encadenado Accesos 20 Pepe 21 Pipo 22 Juan promedio 23 Jose /6=2 24 Alfa 25 Beta IBD - CLASE 9 UNLP - Facultad de Informática

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. Base Clave Encadenado 22 Alfa 24 23 Epsilon Delta 25 Beta -1 26 IBD - CLASE 9 UNLP - Facultad de Informática

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 UNLP - 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. 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 Ejemplo de encadenamiento en áreas separadas Dir Base Area Primaria de Datos Area de Saturacion alfa Pi beta Sigma (dir real 21) 2 gamma Mu (dir real 21) -1 delta IBD - CLASE 9 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

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 UNLP - Facultad de Informática

29 Hashing (Dispersión) Varias posibilidades Hash Extensible 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 UNLP - 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. 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 UNLP - Facultad de Informática

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

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

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 UNLP - Facultad de Informática


Descargar ppt "IBD Clase 9."

Presentaciones similares


Anuncios Google