Pauta de Correccion C2 - Departamento de Informática

Anuncio
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE INFORMÁTICA
ALMACENAMIENTO Y RECUPERACIÓN DE INFORMACIÓN
CERTAMEN 2: Estructura Básicas de Archivos
Profesor: José Luis Martí L. – Wenceslao Palma M.
Ayudantes: Julio Araya C. - Pablo Baeza B. – Francisco Coca H. - Víctor Codocedo H.
Pregunta 1: (Archivos Directos)
Responder, verdadero o falso, justificando sólo éstas últimas; cada respuesta mala vale -1 punto.
a) Un archivo directo ocupa menos bloques de disco que un archivo secuencial, para el mismo
conjunto de datos.
R.: Falso, pues el archivo directo no necesariamente tiene llenos todos sus bloques de datos,
no así el secuencial que generalmente sí los tiene, por ende ocupa menos espacio.
b) Un archivo directo es ideal para claves secundarias.
R.: Falso, es conveniente para claves únicas.
c) Al contar con claves correlativas, el uso de un archivo relativo es adecuado.
R.: Verdadero.
d) Una técnica de hashing estático permite aprovechar mejor el espacio en disco que una con
expansión dinámica.
R.: Falso, pues hashing estático hace una reserva de bloques que no necesariamente se use
en su totalidad, mientras que la expansión dinámica permite
e) El costo de recuperación de un registro desde un archivo hashing con expansión dinámica
crece linealmente a medida que aumenta el volumen de datos del archivo.
R.: Falso, se mantiene prácticamente constante y cercano a un bloque.
f)
El directorio de un archivo dinámico siempre ocupa un bloque de disco.
R.: Falso, pues a medida que crece el número de registros del archivo, se requerirá un
directorio cada vez, ocupando un mayor número de bloques.
g) El costo de leer un registro desde un archivo hashing lineal puede ser superior a un bloque de
disco.
R.: Verdadero.
h) Cualquier archivo hashing es muy conveniente para generar reportes ordenados.
R.: Falso, pues por ejemplo el archivo hashing lineal no preserva ningún tipo de orden entre
los datos.
i)
Si el archivo hashing está organizado sobre cierto atributo, la única forma de encontrar
registros en base a otro atributo es mediante un recorrido lineal.
R.: Verdadero.
j)
El costo de ejecutar una búsqueda binaria sobre un archivo de tipo árbol B es más lento que la
búsqueda binaria que se realice sobre un archivo directo.
R.: Falso, pues sobre un archivo directo no se puede realizar búsquedas binarias, dado que
no preservan el orden.
(30 puntos)
Pregunta 2: (Archivos Secuenciales – Archivos organizados como Árboles B)
(a) Considere un archivo de 25000 páginas y un disco que posee una latencia de 5 ms, seek de
10 ms y es capaz de transferir 1 página por ms.
Ante la posibilidad de realizar consultas que requieren los datos ordenados, se ha decidido optar
por una estructura secuencial ordenada. Sin embargo, no es posible realizar un ordenamiento en
memoria principal de la totalidad de los registros de este archivo. Se sabe que se cuenta con un
espacio equivalente a 32 páginas en memoria principal (buffer) para tal operación. Ante esta situación
será necesario realizar un proceso de ordenamiento y mezcla. Cuanto tiempo requiere tal operación
si:
i) Se utiliza 4 buffers de entrada de 4 páginas y 4 buffers de salida de 4 páginas?
R.:
En cada paso del proceso de ordenamiento y mezcla se trabaja con las 25000 páginas.
Considerando 32 buffers, se generan 25000/32 = 782 runs
La cantidad de pasos necesaria para el ordenamiento y mezcla es log4782 = 4.8055124 ~= 5
tiempo_total = 5*(t_lectura + t_lectura)
t_lectura = (10 + 5 + (1*4))*(25000/4) = 118750 ms = 118.750 seg
t_escritura = t_lectura
Luego, el tiempo total requerido para ordenar y mezclar el archivo es:
tiempo_total = 5*(2*118.750) = 1187.5 seg
ii) Se utiliza 10 buffers de entrada de 2 páginas y 1 buffer de salida de 12 páginas?
Comente los resultados.
R.:
En cada paso del proceso de ordenamiento y mezcla se trabaja con las 25000 páginas.
Considerando 32 buffers, se generan 25000/32 = 782 runs
La cantidad de pasos necesaria para el ordenamiento y mezcla es log10782 = 2.8932068 ~= 3
tiempo_total = 3*(t_lectura + t_lectura)
t_lectura = (10 + 5 + (1*2))*(25000/2) = 212500 ms = 212.5 seg
t_escritura = (10 + 5 + (1*12))*(25000/12)= 56250 ms = 56.250 seg
Luego, el tiempo total requerido para ordenar y mezclar el archivo es:
tiempo_total = 3*(212.5 + 56.250) = 806.25 seg
La segunda opción mejora en aprox. un 20% el tiempo de respuesta de la opción 1. Lo cual se
debe en gran parte a que un buffer de salida de mayor tamaño se escribirá menos veces hacia
el disco.
(b) Considere un archivo de 1000000 de registros, de 100 bytes c/u, almacenado en un disco de
7200 RPM, seek de 8.9 ms, transferencia de 100 MB/seg y bloques de 4KB.
Se decide una organización para los registros basada en árbol B.
i) Cuanto es el tiempo máximo de recuperación de un registro?
R.:
Lo ideal es que un nodo del árbol se almacene en un bloque de disco. Si el árbol es de orden
p, entonces existirán p-1 registro de 100 bytes en cada nodo.
El puntero a nodo se puede obtener considerando que 1000000 de registros de 100 bytes
ocupan 25000 bloques. Luego son suficientes 2 bytes para apuntar a 25000 bloques.
Entonces el orden p de un nodo es:
2p + 100(p-1) <= 4096
p <= 41.137255
conviene p = 41
Si determinamos la cantidad necesaria de niveles del arbol para almacenar 1000000 de
registros tendremos la cantidad maxima de accesos a disco que se necesitan para recuperar
un registro.
1er nivel
2do nivel
3er nivel
4to nivel
Punteros
Registros
41
40
41*41
41*40
41*41*41
41*40*40
41*41*41*41 41*40*40*40
Con 4 niveles es suficiente, ahora el tiempo sera:
t_max = 4*(8.9+4.16+0.04) = 52.32 ms
ii) Cuál sería la diferencia en cuanto a tiempo de respuesta considerando una organización
basada en hashing dinámico?
Si consideramos una estructura basada en hashing dinámico, el tamaó de la estructura de
acceso puede ser almacenada en memoria y desde allí se puede alcanzar cualquier dato con
solo un acceso a disco, lo cual seria:
tiempo = (8.9+4.16+0.04) = 13.08 ms
(40 puntos)
Pregunta 3: (Criterios para la Selección de la Estructura de un Archivo)
Para apoyar la operación de una empresa, se cuenta con un archivo de clientes, el cual se definió de
la siguiente forma:
create table cliente
( RUT
razonSocial
direccion
telefono
primeraCompra
montoComprado
);
char(9),
varchar(30),
varchar(30),
varchar(10),
date,
numeric(8)
i)
Si el DBA decide estructurarlo como un archivo hashing, ¿cuál podría ser la razón?.
R.: Dado que un archivo hashing está pensado para búsquedas directas sobre claves únicas,
es probable que la razón sea tener una importante cantidad de consultas directas sobre el
RUT o la razón social, del tipo select ... from cliente where rut = ...;
ii)
Si se guarda como un archivo secuencial ordenado sobre la razón social, ¿qué podría pasar
con la volatilidad del archivo que justifica esta decisión?.
R.: Lo más probable que la volatilidad sea baja, por lo que el costo de mantener ordenado el
archivo no sea relevante para el sistema, en compensación a los ahorros que se tendría con
las búsquedas binarias que se hagan para responder las consultas.
iii)
Dado el constante y continuo aumento en el número de clientes, ¿qué debería determinar el
DBA para estructurar los datos del archivo?. Hacer uso de otro criterio para la justificación.
R.: No conviene un archivo secuencial ordenado por el costo de mantenerlo ordenado, ni un
hashing estático por el número fijo de bloques asigandos. Si se considera otro criterio como:
• Mayor parte de las consultas directas, sobre clave única  archivo hashing con
expansión dinámica, o bien un árbol B (en especial si los registros son de pequeño
tamaño).
• Mayor parte de las consultas directas, sobre clave no única  archivo secuencial
desordenado.
iv)
Considerando que se organiza en base al RUT, ¿qué tipo de consultas lo justifican? ¿y
cuáles son?. En ambos casos, dar un ejemplo.
R.: Consultas directas sobre dicho atributo lo justifican, porque el procesamiento de la
operación no implicaría un recorrido lineal (sería binario en un archivo de tipo árbol B, directo
en un archivo hashing). No lo justifican consultas basadas en otros atributos.
(30 puntos)
JLML-WPM/.
111005.
Descargar