Final del 11/04/12 (Bases de Datos)
De Cuba-Wiki
Criterio de aprobación: Se aprueba con 12/18.5 puntos, y sin errores conceptuales.
Preguntas
- Defina la durabilidad de una transacción y de un ejemplo donde se aplique esta propiedad (1 punto)
- Defina grafo de precedencia y enuncie el teorema de serializabilidad. Por qué es importante este teorema en el control de concurrencia?(2.5 puntos)
- Indique y explique dos diferencias entre el lockeo binario y el shared-lock ( o lockeo ternario).(2 puntos)
- Defina la clausura de un atributo. Escriba la definición de clave candidata en función de la clausura.(1.5 puntos)
- Dada la siguiente relación {NROPEDIDO; CODART, NOMART, CANTPEDIDA, PRECIO, CODEMP. NOMEMP., FECHA}. Indicar: (1.5 puntos)
- Una dependencia funcional completa
- Una dependencia funcional parcial.
- Una dependencia funcional transitiva.
- Cuál es la diferencia entre una clave primaria y un índice único? (1 punto)
- Indique los tres niveles que tiene la arquitectura de una base de datos. Ejemplifique (1.5 puntos).
- Mencione dos reglas del álgebra relacional que toma en cuenta la optimización por reglas. Ejemplifique su uso (2 puntos)
- De un ejemplo de cómo funciona el recovery en el caso de una caída abrupta de la base de datos por un corte de luz si la misma utiliza redo logging? (2 puntos).
- Detalle el uso que el DBMS le da al system catalog en el momento de crear una tabla (1 punto)
- ¿Por qué es necesario para un DBA conocer la cantidad de registros que inicialmente va a tener una tabla? (1 punto)
- ¿Cuándo una entidad se considera débil? De un ejemplo (1.5 puntos)
Respuestas
- Hace referencia a que una vez commiteados los cambios de una transacción estos cambios no deben ser perdidos incluso ante fallas posteriores (cortes de corriente, crasheos, tuviejas, etc).
- El grafo de precedencia para una historia H sobre un conjunto T de transacciones (T={t_1, t_2, ..., t_n}) es el grafo digido SG = (V,E) que tiene como nodos a las transacciones y donde existe una arista (u,v) si alguna operación de T_u precede y conflictua con alguna operación de T_v en H. El teorema de serializabilidad consiste en que la historia H es serializable si y solo si su grafo de precedencia es acíclico.
-
- El lockeo binario tiene dos estados mientars que el ternario tiene 3.
- El lockeo binario fuerza exclusión mutua tanto para lectura como para escritura mientras que el ternario lo fuerza sólo para escritores (permite acceso a múltiples lectores).
- El lockeo ternario puede sufrir starving de escritores mientras que el binario no.
- La clausura de un atributo X bajo una serie de dependencias funcionales F es el conjunto X+ de atributos que estan determinados funcionalmente por X aplicando las reglas de inferencia a las dependencias funcionales F. Una clave candidata es un conjunto de atributos tal que su clausura contiene a todos los atributos de la relación.
-
- Dependencia funcional completa: CODART -> NOMART
- Dependencia funcional parcial: CODART, NOMART, CANTPEDIDA -> PRECIO
- Dependencia funcional transitiva: NROPEDIDO -> NOMEMP
- Para una tabla puede haber mas de un índice único pero solo una clave primaria.
-
- Esquema conceptual: Las tablas y los atributos que las forman corresponden al esquema conceptual, asi como el lenguaje utilizado para realizar queries a la base de datos.
- Esquema interno: Corresponde a la estructura de los archivos y como se almacenan los datos en los mismos (sorted, heap). Tambien incluye elementos como los índices que tenga la tabla.
- Esquema externo: Corresponde a las vistas para usuarios, que dan una porción de interés del esquema conceptual para esconder el resto a los usuarios que no les concierne.
-
- Conmutatividad de selects: Permite elegir el select menos selectivo para disminuir rapidamente la cantidad de tuplas, lo cual disminuye la cantidad de bloques que hay que leer y escribir a disco para mantener los buffers.
- Conmutatividad de la junta: Permite, al realizar un block nested loop join, elegir la menor de las relaciones para tener en memoria para disminuir el uso de bloques de disco y por lo tanto disminuir la cantidad de lecturas necesarias para poder realizar el escaneo.
- En primer lugar se restaura la base de datos a un punto consistente si la misma resulto dañada. Posteriormente, asumiendo que no se utiliza checkpointing, se comienza desde el inicio del log hacia abajo, rehaciendo todas las operaciones de las transacciones que commitearon. Por ultimo, se escribe abort para las transacciones que no commitearon y se flushea el log a disco.
- Al crear una tabla, el DBMS debe revisar que la definicion sea consistente (por ejemplo revisando que no haya una tabla con el mismo nombre en la base de datos, y que las foreign keys y constraints referencien tablas correctas y existentes). Posteriormente de validar la definición de la tabla, escribe los metadatos de la misma al system catalog para posterior referencia en comandos usando el DDL y DML.
- Para saber en cuantos shards debe dividir la tabla para poder escalar acordemente. Por ejemplo, si se sabe que la cantidad de datos excede el tamaño que permite tolerar una máquina sera necesario dividirlos en varias máquinas.
- Una entidad se considera débil si no tiene atributos clave propios: derivan su existencia de otra entidad y necesitan de su identificación para distinguirse de otras. Ejemplo: Hotel -- Habitación.