ibd clase 9. unlp - facultad de informáticaibd - clase 9 2 hashing (dispersión) los árboles b y...
TRANSCRIPT
IBD
Clase 9
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
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.
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
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
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
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
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%)
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%)
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)
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
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
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ó
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
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
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)
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.
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.
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
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
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
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
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)
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.
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.
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
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.
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
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
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.
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
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.
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)