100 likes | 265 Views
Costos de Recuperación Unidades de Organización Funciones de Dispersión Organizaciones Estáticas – Primitivas y Organización de Colisiones y Desbordes Organizaciones Dinámicas - Versiones de Dispersión Extensible. Organizaciones Directas. Costos de Recuperación.
E N D
Costos de Recuperación Unidades de Organización Funciones de Dispersión Organizaciones Estáticas – Primitivas y Organización de Colisiones y Desbordes Organizaciones Dinámicas - Versiones de Dispersión Extensible Organizaciones Directas ODD - Curso Servetto
ODD - Curso Servetto Costos de Recuperación • Archivo con R registros en bloques con capacidad para B registros con densidad de carga C • Organización Secuencial (p.e. C=0,85 para registros de longitud variable) • Registros desordenados: techo((R/(C*B))/2) • Registros ordenados con búsqueda por aproximación lineal: desde 3 (lectura de bloques extremos y el de aproximación) • Registros ordenados con búsqueda binaria: techo(log2(R/(C*B))) • Organización B (en el peor de los casos C=0,5): 1+piso(logC*B+1(C*R+1)) • Organización B+ (en el peor de los casos C=0,5): 1+piso(logC*I+1(C*(R/(C*B))+1))+1 con I capac. nodos internos • Directa: 1 (dispersión estática) o 2 (extensible)
ODD - Curso Servetto Unidades de Organización • Para archivos con registros de longitud fija pueden tener capacidad para uno o muchos registros • Un registro: ranura (slot) • Muchos registros: bloque o cubo (bucket) • Para archivos con registros de longitud variable deben tener capacidad para muchos registros: cubos • Las ranuras deben tener un campo de control que indique si están vacías, ocupadas o con contenido eliminado • Los cubos deben tener un campo de control que indique la cantidad de registros que contiene, si son para registros de longitud fija, o el espacio libre que le queda, si son para registros de longitud variable
ODD - Curso Servetto Funciones de Dispersión • Transforman al identificador de un registro a una dirección de registro (sólo registros de longitud fija) o a una dirección de cubo (registros de longitud fija o variable) • Tienen como parámetro la cantidad total de registros o de bloques del archivo • Pueden transformar varios identificadores a una misma dirección: sinónimos • Para identificadores alfanuméricos deben transformar los caracteres a un número, y luego calcular el resto de dividir al número entre la cantidad total de unidades del archivo • Para identificadores numéricos pueden aplicar una transformación para aleatorizar resultados (plegado y suma de dígitos, corrimiento y suma de dígitos, dígitos centrales del cuadrado, …) y luego calcular el resto de la división entre la cantidad total de unidades del archivo
ODD - Curso Servetto Primitivas de Organizaciones Estáticas • Creación: se calcula la cantidad de unidades de organización (ranuras o cubos) necesarias para un 20 o 30% más de la máxima cantidad de registros que podría tener el archivo y se inicializan; se puede cargar inicialmente el archivo con una primitiva que no valide unicidad de registros. • Actualización de Registros: inserción con validación de unicidad, modificación y supresión → campo de control para no recorrer todo el archivo al validar unicidad (ranuras vacías vs ranuras borradas e indicadores de desborde de cubos); excepciones: inserción en ranura ocupada (colisión), o en cubo completo (desborde). • De Recuperación de Registros: consulta o recuperación unitaria de registros, y reporte o recuperación comprensiva de todos los registros (desordenados) por recorrido secuencial. • Mantenimiento: reestructuraciones por desorganización, y respaldo con reorganización a archivos secuenciales.
ODD - Curso Servetto Organización de Colisiones y Desbordes en Organizaciones Estáticas • En área de almacenamiento única • Saturación lineal: búsqueda secuencial circular a partir de la ranura o cubo siguiente; las ranuras pueden encadenarse, pero las cadenas deben comenzar en dirección original • Dispersión doble: segunda función determina longitud de saltos para buscar ranuras o cubos donde almacenar registro • En área exclusiva de colisiones o desbordes • Unidades de saturación lineal al final del archivo (se agregan al archivo según se necesite) • Unidades de saturación lineal intercaladas en el archivo (se inicializan al crear el archivo) • Encadenamiento de unidades para sinónimos de una unidad original, en otro archivo (unidades de menor capacidad)
ODD - Curso Servetto Dispersión Extensible • La función de dispersión se usa para acceder a una tabla (archivo) de direccionesde cubos • Cada vez que se desborda un cubo del archivo, se agrega uno nuevo y se balancea la carga del desbordado con el nuevo con la función de dispersión • De tanto en tanto, cuando se agrega un cubo al archivo la tabla de direcciones se duplica • Los cubos requieren campos de control para indicar la cantidad de registros (de longitud fija) o la cantidad de bytes libres (registros de longitud variable), y para indicar el tamaño de la tabla de direcciones al agregarse o balancearse por última vez el cubo
ODD - Curso Servetto Primitivas de Dispersión Etensible • Creación: se calcula la cantidad de cubos necesarias para un 20 o 30% más de la máxima cantidad de registros con los que se va a cargar inicialmente el archivo y se inicializa al tabla de direcciones para esa cantidad de cubos; se carga inicialmente el archivo con una primitiva que no valide unicidad de registros. • Actualización de Registros: inserción con validación de unicidad, modificación y supresión → se localiza el cubo donde insertar o encontrar el registro, accediendo a la tabla de direcciones con la función de dispersión. • De Recuperación de Registros: consulta o recuperación unitaria de registros, y reporte o recuperación comprensiva de todos los registros (desordenados) por recorrido secuencial del archivo de cubos. • Mantenimiento: respaldo con reorganización a archivo secuencial.
ODD - Curso Servetto Versiones de Dispersión Extensible • De Bits Sufijos o Modular: la función de dispersión es el resto de la división entre el tamaño de la tabla → cada cubo aparece direccionado ta/tc veces en la tabla cada tc registros, con ta tamaño actual de la tabla y tc tamaño de la tabla al agregarse o balancearse por última vez el cubo • De Bits Prefijos: la función de dispersión es el número conformado por los log2(tamaño de la tabla) bits más significativos del identificador → cada cubo aparece direccionado ta/tc veces en la tabla en direcciones consecutivas
ODD - Curso Servetto • De Bits Sufijos o Modular • Cubos con Capacidad para 6 Registros • td tamaño de dispersión del cubo • Tabla: • 2 0 4 3 2 0 1 5 • Bloques Libres: - • Claves de registros en Cubos: • 0: td 4, 63893 35641 51245 • 1: td 8, 34030 36150 40710 • 2: td 4, 59256 14588 55256 52980 • 3: td 8, 34163 31467 25067 35235 58043 • 4: td 8, 28378 23306 29002 16842 46698 51114 • 5: td 8, 35679 56255 55687 60567 De Bits Prefijos Cubos con Capacidad para 2 Registros td tamaño de dispersión del cubo Tabla: 0 0 0 0 1 2 3 3 Bloques Libres: - Claves (en binario) de registros en Cubos: 0: td 2, 0000 0010 1: td 8, 1000 1001 2: td 8, 1010 3: td 4, 1100 1110