1 / 22

IBD Plan 2003

IBD Plan 2003. Clase 4. 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)

myra-chaney
Download Presentation

IBD Plan 2003

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 Plan 2003 Clase 4

  2. 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. IBD - CLASE 4

  3. 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. IBD - CLASE 4

  4. 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 mientras devuelve ( ‘no esta’ ) IBD - CLASE 4

  5. 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. IBD - CLASE 4

  6. 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) IBD - CLASE 4

  7. Archivos - Clasificación • Segunda posibilidad de clasificación • No 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?? IBD - CLASE 4

  8. Archivo - Clasificación • Tercera solución • El archivo de datos no cabe en RAM • Las claves del archivo tampoco caben en RAM • La clasificación debe hacerse de otra forma • Partir el archivo • Ordenar cada parte • Juntar las partes ordenadas IBD - CLASE 4

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

  10. 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 IBD - CLASE 4

  11. 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 IBD - CLASE 4

  12. 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 doble • Leer M registros desordenados • Obtener clave menor • Pasar la clave menor al archivo de salida • Reemplazar por otro, si tiene clave menor a la pasada al arch. de salida dormirlo. • Repetir dos hasta que todos los registros en la entrada estén dormidos. • Comenzar con una nueva partición despertando todos los dormidos, desde el paso 2 y hasta terminar el archivo original IBD - CLASE 4

  13. Algoritmo N {# de registros} buffer {reg. entrada} escrito {reg. ya escritos} dormido {reg. dormidos} ult_llave {ult.clave pasada} for i:=1 to M escrito[i] := true i := 0 repetir i:=i + 1 leer buffer[i] de entrada escrito[i] := falso hasta (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 end end Archivos - Clasificación IBD - CLASE 4

  14. 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. IBD - CLASE 4

  15. Algoritmo M,M’ {# reg. y reserva exter.} buffer, escrito, dormido reserva {#reg. actual en reserva} sin_espacio {flag de reserva} ult_llave {idem} {seteo estado inicial} for i:= 1 to M escrito[i]:= true i := 0 Repetir i:=i + 1 leer buffer[i] de entrada escrito[i]:= falso hasta eof(entrada) or i = M repetir 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 buffer hasta escrito este todo en true Archivos - Clasificación IBD - CLASE 4

  16. 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. IBD - CLASE 4

  17. Archivos - Clasificación • Intercalación en más de un paso • Solución: agregar pasos intermedios con archivos temporales para mejorar la eficiencia • Ejemplo • Conclusiones • 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. IBD - CLASE 4

  18. 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 IBD - CLASE 4

  19. 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étodo • C/partición (con M elementos) se acomoda en un archivo de entrada • Merge entre archivos de entrada produciendo archivos de salida (con M2 registros ordenados) • Continuar dos hasta terminar los archivos de entrada • Convertir archivos de E en arch de S y viceversa • Repetir 2 hasta formar una partición con todos los elementos ordenados. IBD - CLASE 4

  20. Algoritmo N { 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 := false repetir {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 Archivos - Clasificación IBD - CLASE 4

  21. 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 IBD - CLASE 4

  22. Archivos - Clasificación IBD - CLASE 4

More Related