Organización Secuencial Es la organización más simple y la primera en aparecer, ya que era la única posible cuando los únicos dispositivos de almacenamiento permanente eran las cintas magnéticas. • Se basa en el acceso secuencial pero también pueden optimizarse utilizando acceso relativo. • La organización de los registros varía según sean de longitud fija o variable, y en caso de que sean de longitud variable, según se requiera actualizarlos o no: los registros de longitud variable actualizables se organizan en bloques; el resto no. • Las primitivas varían según los registros se dispongan ordenados por un identificador o desordenados, y según se requiera actualizarlos o no (en muchos archivos transaccionales sólo se hacen altas al final del archivo y nunca se actualizan registros). • Organizaciones Secuenciales Variantes de organización según los registros sean actualizables o no, según sean de longitud fija o de longitud variable, y según se dispongan desordenados u ordenados por una clave de identificación 1 ODD - Curso Servetto FIUBA 2 Registros Ordenados por Identificador Ventajas → Permite optimizar búsquedas: elimina necesidad de leer todo el archivo → Permite procesamiento coordinado con otros archivos → Permite cortes de control con un único recorrido 3 FIUBA Casos de Archivos Secuenciales Desventajas Archivos maestros con pocos registros y pocas → Problemas de inserción: altas actualizaciones implican reconstrucción del archivo o deben diferirse → Bajas costosas: bajas lógicas con necesidad de reestructuración, o bajas físicas con reconstrucción del archivo o diferidas ODD - Curso Servetto ODD - Curso Servetto FIUBA Archivos de trabajo → Reordenación de transacciones para totalizaciones parciales (cortes de control –p.e. ordenación de líneas de facturas por identificación de producto, para totalizar ventas por producto) → Resultados parciales (persistencia de operaciones no terminadas p.e. consumos en mesas abiertas en un restaurante) 4 ODD - Curso Servetto Registros Sin Ordenar Registros Sin Ordenar Creación: creación y carga sin validación de unicidad ni búsqueda de espacio libre Actualización de Registros FIUBA → Inserción: se intenta recuperar un registro con el mismo identificador que el del registro a insertar si se quiere validar unicidad; se graba el nuevo registro buscando espacio libre → Creación para escribir → Modificación: se recupera el registro por el identificador, se actualiza, se vuelve al comienzo de la unidad recién leída (registro o bloque) y se escribe la unidad modificada (en bloques el registro modificado queda al final y puede haber relocalización) → Carga de registros en una única operación cíclica o por importación desde archivo de texto, con el archivo recién abierto o con posicionamiento previo al final del archivo – buffering de bloques (rrlv) → Eliminación: para rrlf se recupera el registro a eliminar por el identificador y se toma su posición, luego se lee el último registro del archivo, se copia el último registro en la posición del registro a eliminar, se posiciona sobre el último registro que se acaba de copiar y luego se trunca el archivo; para rrlv se compacta el bloque donde se encontró el registro, se actualiza el espacio libre del bloque y se reescribe el bloque Recuperación de Registros (consulta o recuperación unitaria) → Posicionamiento al inicio del archivo y lectura secuencial de registros hasta encontrar el buscado o llegar al final del archivo – primero y siguiente (rrlv) Mantenimiento → Copias de respaldo con comandos del sistema operativo 5 ODD - Curso Servetto FIUBA 6 ODD - Curso Servetto FIUBA 1 Registros Ordenados Registros Ordenados Creación: creación y carga sin validación de unicidad (los registros a cargar ya están validados y ordenados por identificador) u ordenamiento externo de un archivo desordenado Actualización de Registros → Inserción: se debe crear un archivo nuevo, copiar los registros con identificadores menores al del registro a insertar, agregar el registro nuevo, copiar el resto de los registros con identificadores mayores, borrar el archivo viejo y renombrar el archivo nuevo con el nombre del viejo → Creación para escribir → Carga de registros ordenados en una única operación cíclica o por importación desde un archivo de texto También se puede diferir las inserciones manteniendo ordenados los registros a agregar, y luego insertarlos por fusión (encarece recuperaciones por necesidad de consultar el archivo principal y el de inserciones) Recuperación de Registros: consulta o recuperación unitaria y reporte o recuperación comprensiva → Modificación: se recupera el registro por el identificador, se actualiza, se vuelve al comienzo de la unidad con el registro y se reescribe (el identificador nunca se puede modificar) → Consulta unitaria: por aproximación lineal o binaria (no se leen todos los registros previos al buscado) – inicio de secuencias → Reporte o recuperación comprensiva: cortes de control (cuando los registros están ordenados por más de un campo, se puede realizar cálculos con secuencias de registros que tengan el mismo valor de uno o más campos –p.e. contar registros, promediar o sumar valores de otro campo, etc.) 7 ODD - Curso Servetto FIUBA También puede haber modificaciones por procesamiento coordinado (esquema maestro – detalles) 8 Registros Ordenados ODD - Curso Servetto Ordenamiento Externo Actualización de Registros (cont.) 1. Ordenamiento de porciones de un archivo desordenado en memoria, generando varios archivos de trabajo ordenados 2. Fusión de archivos ordenados → Eliminación: se puede realizar en forma análoga a la inserción (individual o en forma diferida) También se puede realizar en forma lógica marcando el registro (p.e. si los identificadores son positivos, cambiando el signo del identificador –costo de un bit por registro). No conviene agregar un campo para marcas de borrado (costo de un byte por registro) Mejoras – Mantenimiento → Copias de respaldo con comandos del sistema operativo – → Si se hacen eliminaciones lógicas, se puede requerir eliminar físicamente los registros marcados en forma periódica (compactación del archivo) 9 ODD - Curso Servetto FIUBA 10 Reemplazo de registros que salen ordenados por registros desordenados: archivos ordenados con más registros que la capacidad del buffer de ordenamiento Ordenamiento interno por montículos: menor movimiento de registros en el buffer de ordenamiento ODD - Curso Servetto Variantes Ordenamiento Externo Ordenamiento por Montículos Cuando no se puede incorporar un nuevo registro al buffer de ordenamiento (de tamaño para n registros) las opciones son: • Un montículo (heap) es un árbol binario perfecto representado implícitamente en un arreglo. nodo deben ser menores a los de cualesquiera de sus descendientes. • El árbol se representa en el arreglo sin punteros: los hijos de un nodo en la posición i están en las posiciones 2*i y 2*i+1. • Un árbol con n nodos se almacena en las posiciones 1 a n del arreglo. al registro con identificador menor al último que salió ordenado (replacement selection) → en promedio se ordenan 2*n registros – No se achica el buffer: se guarda el registro en un archivo temporal que no puede tener más registros que el buffer de ordenamiento (natural selection) → en promedio se ordenan e*n registros ODD - Curso Servetto FIUBA FIUBA • Para ordenar de menor a mayor, los identificadores en un – Se achica el buffer un registro y se usa el espacio para guardar 11 FIUBA 12 ODD - Curso Servetto FIUBA 2