ibd plan 2003 clase 4. unlp - facultad de informáticaibd - clase 4 2 archivos - búsqueda búsqueda...
TRANSCRIPT
IBD Plan 2003
Clase 4
UNLP - Facultad de InformáticaIBD - CLASE 42
Archivos - Búsqueda
Búsqueda de información (costo) # de comparaciones (operaciones en
memoria)• Se pueden mejorar con algoritmos más eficientes.
# de accesos (operaciones en disco) Buscar un registro
+ rápido si conocemos el NRR (directo) Secuencia debe buscarse desde el principio Trataremos de incorporar el uso de claves o
llaves.
UNLP - Facultad de InformáticaIBD - CLASE 43
Archivos - Búsqueda
Búsqueda binaria Supongamos
• Archivo ordenado por clave• Registros de longitud fija
Búsqueda, partir el archivo a la mitad y comparar la clave, puedo acceder al medio por tener long. Fija
Si N es el # de registros, la performance será del orden de Log2 N (teniendo en cuenta los accesos)
Se mejora la performance de la búsqueda secuencial.
UNLP - Facultad de InformáticaIBD - CLASE 44
Archivos - Búsqueda
Algoritmo de búsqueda secuencia tener en cuenta que es un pseudocódigo NO estructurado
Function Busqueda_Bin ( entrada, llave, #reg) menor := 1 mayor := #reg mientras ( menor <= mayor ) intento :=[(mayor+menor )/2] leo un reg con NRR = intento armo llave canónica del reg. leído en llave_c If llave < llave_c entonces mayor:=intento+1 sino if llave > llave_c entonces menor:=intento+1
sino devuelve (registro) fin mientrasdevuelve ( ‘no esta’ )
UNLP - Facultad de InformáticaIBD - CLASE 45
Archivos - Clasificación
La búsqueda binaria acota el espacio para encontrar información tiene un costo mantener ordenado el archivo
Primera solución Llevar el archivo a RAM (vector) y ordenar Por que RAM y no disco directamente
• El número de corrimientos implica accesos a disco, muy costoso.
• Primer paso, llevar las llaves a forma canónica• Algoritmos de ordenación se pueden encontrar en
bibliografía, aparece una variante interesante.
UNLP - Facultad de InformáticaIBD - CLASE 46
Archivos - Clasificación
Algunas conclusiones Búsqueda binaria mejora la secuencial Problemas
• # accesos baja pero no llega a uno• Acceder por el NRR requiere una lectura
• Costo de mantener el orden• Análisis costo beneficio entre costo del orden o costo de
la búsqueda
• Clasificación en RAM solo para archivos pequeños Mejorar el método de ordenación
• No reordenando TODO el archivo• Reorganizando con métodos más eficientes (árboles)
UNLP - Facultad de InformáticaIBD - CLASE 47
Archivos - Clasificación
Segunda posibilidad de clasificaciónNo llevar todo el archivo a RAM solo
llevar la llave o clave • Esto permite clasificar archivos más
grandes• Algoritmos en la bibliografía
Se obtienen mejoras o es la solución esperada??
UNLP - Facultad de InformáticaIBD - CLASE 48
Archivo - Clasificación
Tercera soluciónEl archivo de datos no cabe en RAMLas claves del archivo tampoco caben
en RAMLa clasificación debe hacerse de otra
forma• Partir el archivo• Ordenar cada parte• Juntar las partes ordenadas
UNLP - Facultad de InformáticaIBD - CLASE 49
Archivos – Clasificación
Primer paso: establecer las particiones
• Ventajas • Permite clasificar archivos grandes (aumenta
el número de particiones)• Lectura de cada partición es siempre
secuencial• Lectura de cada partición en orden, escritura
en un nuevo archivo (ambas secuenciales)
• Como determinar el tamaño• Lo que quepa en memoria RAM
UNLP - Facultad de InformáticaIBD - CLASE 410
Archivos – Clasificación
Ejemplo del método • Formamos 40 particiones, 1/40 parte del archivo
original. • Ordena cada parte• Juntamos las partes• Estudio numérico
Registros desordenados
Registros ordenados
Partir
Ordenar
Juntar
UNLP - Facultad de InformáticaIBD - CLASE 411
Archivos – Clasificación
Como mejorar la performance• Achicar el número de particiones• Intercalar de otra forma (por ej. en más
de un paso, o por otro método de merge)Particiones
• El tamaño está dado por lo que cabe en RAM
• Tres posibilidades• Sort interno• Selección por reemplazo• Selección natural
UNLP - Facultad de InformáticaIBD - CLASE 412
Archivos - Clasificación
• Sort interno: mecanismo ya visto, M registros que caben en RAM y se genera un archivo de salida ordenado.
• Selección por reemplazo:• Aumenta el tamaño de las particiones en
promedio al doble1. Leer M registros desordenados2. Obtener clave menor3. Pasar la clave menor al archivo de salida4. Reemplazar por otro, si tiene clave menor a la
pasada al arch. de salida dormirlo.5. Repetir dos hasta que todos los registros en la
entrada estén dormidos.6. Comenzar con una nueva partición despertando
todos los dormidos, desde el paso 2 y hasta terminar el archivo original
UNLP - Facultad de InformáticaIBD - CLASE 413
Archivos - Clasificación
AlgoritmoN {# de registros}buffer {reg. entrada}escrito {reg. ya escritos}dormido {reg. dormidos}ult_llave {ult.clave pasada}for i:=1 to M escrito[i] := truei := 0repetir i:=i + 1 leer buffer[i] de entrada escrito[i] := falsohasta (eof(entrada)) o (i = M)
mientras not( eof( entrada ) ) for i := 1 to M if not escrito[i] then dormido[i]:= false mientras (haya reg.despiertos) encontrar clave menor de buffer y que este despierto
ult_llave:=llave buffer[s] escrito[s]:= true dormido[s]:= true if not eof(entrada)
then leer buffer[s] de entr. escrito[s]:= false
if ult_llave < buffer[s] then dormido[s]:=true
endend
UNLP - Facultad de InformáticaIBD - CLASE 414
Archivos - Clasificación
• Algunos datos de selección por reemplazo• Aumenta el tamaño de cada partición• Los registros se deben leer de a uno esto es
imposible, se utilizan buffers que ocupan parte de la RAM
• Selección natural• Aprovecha el espacio de memoria, necesitamos
algún buffer más pero ahorra memoria• Los dormidos se pasan a un buffer secundario, y
permiten que entren nuevos elementos del archivo de entrada, cuando el buffer secundario se llena se termina de dormir elementos.
• Particiones quedan con más elementos.
UNLP - Facultad de InformáticaIBD - CLASE 415
Archivos - Clasificación
AlgoritmoM,M’ {# reg. y reserva exter.}buffer, escrito, dormidoreserva {#reg. actual en reserva}sin_espacio {flag de reserva}ult_llave {idem}{seteo estado inicial}for i:= 1 to M escrito[i]:= truei := 0Repetir i:=i + 1 leer buffer[i] de entrada escrito[i]:= falsohasta eof(entrada) or i = Mrepetir reserva := 0 sin_espacio := falso repetir obtener clave menor y escribirla en
buffer[s] ult_llave := buffer[s] escrito[s]:= true
if not eof(entrada) then listo:=falso repetir if llave reg siguiente >= ult_llave then escrito[s]:=false listo:= true
buffer[s]:=new elem. else if reserva < M’ then nueva entrada pasa al reservorio reserva:=reserva+1 else sin_espacio := true hasta listo or sin_espacio hasta eof(entrada) or sin_espacio sacar los elementos no escritos de buffer
en orden, poner escrito en true {preparar buffer para la nueva partición} if reserva > 0 then mover a buffer reg. del reservorio y actualizar escrito y reserva. if buffer no lleno y not eof(entrada) then completar bufferhasta escrito este todo en true
UNLP - Facultad de InformáticaIBD - CLASE 416
Archivos - Clasificación
Conclusiones Ventajas
• Interno: particiones del mismo tamaño• Natural: tiende a producir particiones mayores• Interno y selección: costo de acceso menor
Desventajas• Natural: mayor costo en acceso (generar el
archivo intermedio)• Selección: tiende a generar muchos registros
dormidos.
UNLP - Facultad de InformáticaIBD - CLASE 417
Archivos - Clasificación
Intercalación en más de un pasoSolución: agregar pasos intermedios con
archivos temporales para mejorar la eficiencia
EjemploConclusiones
• Intercalando más de 5 porciones hacer dos pasos
• El método mejora si se disponen de varios discos o con varias cabezas lectoras grabadoras.
UNLP - Facultad de InformáticaIBD - CLASE 418
Archivos - Clasificación
Otros métodos de intercalación• Balanceado de n caminos• Óptimo• Multifase
Que estudiaremos• Eficiencia medida como:
# total de registros leídos
# total de registros ordenados
UNLP - Facultad de InformáticaIBD - CLASE 419
Archivos - Clasificación
Balanceado de N caminos• Dos conjuntos de buffer
• Entrada• Salida
• #archivos, divididos proporcionalmente en los buffer de entrada asignado por el SO.
• Método1. C/partición (con M elementos) se acomoda en un
archivo de entrada2. Merge entre archivos de entrada produciendo
archivos de salida (con M2 registros ordenados)3. Continuar dos hasta terminar los archivos de
entrada4. Convertir archivos de E en arch de S y viceversa5. Repetir 2 hasta formar una partición con todos los
elementos ordenados.
UNLP - Facultad de InformáticaIBD - CLASE 420
Archivos - Clasificación
AlgoritmoN { tamaño de c/set }set_entrada { flag indica cual EoS base tam. set de salida }num_arc_salida { # arc. de salida }num_particion { # part. Generada }
N := F div 2 { # arch. de E y S }set_entrada := falserepetir {preparar los archivos} cambiar valor de set_entrada if set_entrada then abrir arch 1 a N Entrada abrir arch N+1 a F Salida tam_set_salida := F – N base := N + 1 else abrir arch 1 a N Salida abrir arch N+1 a F Entrada tam_set_salida := N base := 1
{fase del método} num_arc_salida := 0 num_particion := 0 repetir merge partición de c/arch.Entr.
dentro del arch. numerado (base + num_arc_salida) num_particion:=num_particion+1 num_arc_salida:=(num_arc_salida +1) mod tam_set_salida hasta terminen los arch. de E hasta num_particion = 1 if set_entrada then archivo ordenado N+1 else archivo ordenado 1
UNLP - Facultad de InformáticaIBD - CLASE 421
Archivos - Clasificación
Merge óptimo• 1 archivo de salida, el resto de entrada• Se hace el merge entre las particiones de entrada
y genera una de salida esto se repite hasta generar una partición con todos los datos
Merge multifase• Mayor complejidad inicial en distribuir las
particiones• Varios conceptos:
• Fibonacci• Particiones dummy• # de particiones no se adecua con el # de Fibonacci
UNLP - Facultad de InformáticaIBD - CLASE 422
Archivos - Clasificación
método # Reg. Leídos
Tamaño partición
# partición
# desplazamientos
Patron intercalación
# desp. Intercalacion
Tot. Desplazamiento
40 clasif. En RAM + por intercala-ción en 40 forma
10000 10000 40 40 40 1600 1640
40 clasif. + inter-calación en varios pasos
10000 10000 40 40 8:8:8:8:8 520 560
Selec por reem-plazo + interca-lación en pasos
2500 15000 27 160 5:5:5:5:5 423 583
Idem anterior reg. Parcialmente ordenados
2500 40000 10 160 3:3:4 256 416