Departamento de Computación (Facultad de Ingenierı́a - Universidad de Buenos Aires) 1
Base de Datos (75.15 / 75.28 / 95.05)
Evaluación Integradora - 26 de julio de 2023
TEMA 20231C4 Padrón:
CRT Proc. NoSQL Apellido:
NoSQL CyT Rec. Nombre:
Cantidad de hojas:
Nota: □ Aprobado □ Insuficiente
Criterio de aprobación: El examen está compuesto por 6 ı́tems, cada uno de los cuales se corrige como B/B-
/Reg/Reg-/M. Se aprueba con nota mayor o igual a 4(cuatro), equivalente a desarrollar el 60% del examen
correctamente.
1. (Cálculo Relacional de Tuplas) Las siguientes tablas mantienen información sobre las selecciones
nacionales femeninas que históricamente han formado parte de la FIFA y las jugadoras que
han representado a dichas selecciones. Se quisiera conocer quiénes son las mayores goleadoras
de cada selección nacional femenina desde su existencia.
Selecciones(cod paı́s, nombre paı́s, a~
no creación)
// (‘ES’, ‘España’, 1983)
Jugadoras(cod jugadora, apellido, nombre, fecha nacimiento)
// (7142, ‘Pablos’, ‘Natalia’, 1985-10-15)
Representaciones(cod jugadora, cod paı́s, cant partidos jugados, cant goles)
// (7142, ‘ES’, 22, 13)
Escriba una consulta en Cálculo Relacional de Tuplas que encuentre para cada selección
su/s máxima/s goleadora/s histórica/s, indicando el nombre completo de la selección (p.ej.,
España) y el apellido y nombre de dicha/s jugadora/s.
Departamento de Computación (Facultad de Ingenierı́a - Universidad de Buenos Aires) 2
2. (Procesamiento de Consultas) La plataforma de juegos online Vapor quiere conocer información
de los usuarios que poseen juegos de al menos uno de los siguientes dos desarrolladores
argentinos: “GAME NEVER” y “4E INTERACTIVE”. Para ello, ejecutará la siguiente
consulta sobre las dos tablas, que le devolverá los ids de usuarios que poseen dichos juegos:
Juegos(id juego, nombre, categorı́a, desarrollador, fecha lanzamiento)
Librerı́as(id juego, id usuario, fecha compra)
Para encontrar a los usuarios que compraron alguno de esos juegos, se arma el siguiente plan
de consulta:
πid usuario,Juegos.id juego
▷◁id juego
σdesarrollador=“GAM EN EV ER′′
Librerı́as
∨desarrollador=“4EIN T ERACT IV E ′′
Juegos
Proponga un plan de ejecución eficiente que respete el plan de consulta anterior, indicando
el método utilizado para resolver cada etapa, y estimando su costo. Utilice la siguiente
información de catálogo que indica entre otros detalles cuáles son los ı́ndices existentes,
asumiendo que todos ellos son ı́ndices secundarios:
JUEGOS LIBRERIA
n(Juegos) = 1.000.000 n(Librerı́as) = 50.000.000
B(Juegos) = 100.000 B(Librerı́as) = 1.000.000
V(categorı́a, Juegos) = 50 V(id juego, Librerı́as) = 1.000.000
V(desarrollador, Juegos) = 10.000 V(id usuario, Librerı́as) = 500.000
H(I(id juego, Juegos)) = 5 H(I(id juego, Librerı́as)) = 6
H(I(categorı́a, Juegos)) = 4 H(I(id usuario, Librerı́as)) = 6
H(I(desarrollador, Juegos)) = 5
Departamento de Computación (Facultad de Ingenierı́a - Universidad de Buenos Aires) 3
3. (NoSQL) El siguiente diagrama muestra la información almacenada en el Sistema de Expedientes
de la Facultad, respecto a los movimientos que hace cada expediente a lo largo de su vida. Un
expediente es abierto por un usuario en especı́fico, que es quien realiza el movimiento ”0” del
mismo enviándolo a un primer sector. Luego, en movimientos subsiguientes realizados por
distintos usuarios el expediente se mueve de sector, hasta que en algún momento es cerrado.
El estado del expediente representa si el mismo se encuentra abierto o cerrado al dı́a de hoy.
Diseñe una familia de columnas en Cassandra que permita consultar un número de expediente
determinado y devolver su estado actual y el listado de saltos que hizo por distintos sectores
de la Facultad, indicando para cada paso el número de orden, el id del usuario que lo transfirió
en esa etapa, la fecha en que se hizo dicha transferencia y el código del sector al que llegó. La
familia de columnas también deberá permitir hallar fácilmente el estado del expediente, el
último sector en que se encuentra y la fecha en la que llegó a dicho sector. Indique claramente
cuáles serı́an la clave de partición, la clave de clustering y eventuales atributos estáticos de
la familia de columnas, ya sea dibujando el diagrama Chebotko o bien escribiendo el CREATE
TABLE de la misma.
4. (NoSQL) Explique qué problema resuelve el mecanismo de hashing consistente en Dynamo,
y qué ventajas presenta respecto a un hashing módulo N.
Departamento de Computación (Facultad de Ingenierı́a - Universidad de Buenos Aires) 4
5. (Concurrencia y Transacciones) Dado el siguiente par de transacciones:
T1 : bT1 ; RT1 (B); WT1 (B); RT1 (A); WT1 (B); cT1 ;
T2 : bT2 ; RT2 (A); RT2 (B); WT2 (B); RT2 (C); cT2 ;
Se pide:
(a) Coloque locks y unlocks a ambas transacciones de manera de respetar el Protocolo de
Lock de 2 Fases, intentando a la vez minimizar el tiempo que las transacciones mantienen
los locks sobre los recursos.
(b) Intente proponer un solapamiento que respete esos locks y tal que en algún momento
las transacciones queden en deadlock. Si considera que eso no es factible en este caso,
justifique por qué.
6. (Recuperación) El gestor de log de una base de datos utiliza un log de tipo REDO. Indique
si cada una de las siguientes afirmaciones sobre el funcionamiento del mismo es verdadera
(V) ó falsa (F), justificando su respuesta.
a) El registro de log correspondiente a un write item(X) debe ser volcado a disco después
de volcar el nuevo valor de X modificado por dicha instrucción a disco.
b) El registro de log correspondiente al commit de una transacción Ti debe ser volcado a
disco después de volcar el nuevo valor de todo ı́tem X modificado por Ti a disco.
c) Un checkpoint activo recién podrá terminarse (es decir, recién se podrá escribir el END
CKPT en el log) una vez que todas las transacciones que estaban activas al inicio del
checkpoint hayan terminado y sus datos hayan sido enviados a disco.
d) En caso de recuperación, si se debe abortar una transacción Ti que no habı́a terminado,
entonces antes de escribir el registro de log correspondiente al abort de Ti deberán
volcarse a disco los valores anteriores vold de cada ı́tem que habı́a sido modificado por
Ti .