Final del 06/08/13 (Bases de Datos)

De Cuba-Wiki

Plantilla:Back

Preguntas

  1. Qué es el system log? Para qué se utiliza?
  2. Explicar detalladamente el problema de falsa actualización (como fue una traducción espantosa dio la posibilidad de elegir entre lost update o dirty read)
  3. Cuando un schedule es recuperable?
  4. Enunciar las reglas adicionales de amstrong
  5. Cuando se dice que una descomposición es sin pérdida de información? Dar un ejemplo de descomposición con pérdida
  6. Definir la operación de proyección del álgebra relacional y dar 2 propiedades
  7. Qué es DML? Dar un ejemplo de instrucción SQL de esta categoría
  8. Dar 2 reglas de Álgebra relacional que involucren al JOIN que puedan usarse para optimización de consultas
  9. Qué permisos pueden asignarse en una tabla?
  10. El enunciado era muy largo pero esencialmente preguntaba sobre qué puede asegurarse si tenemos undo/redo, la base se cae y una transacción no hizo commit acerca de los datos en disco, si quedan los viejos, los nuevos, no puede asegurarse nada
  11. Qué instrucciones DDL actualizan el system catalog?
  12. Qué es clustering? Dar 2 ejemplos de uso donde pueda aplicarse
  13. Dar 2 ventajas y desventajas en el uso de stored procedures

Respuestas

  1. El system log es donde se almacena información sobre todas las operaciones que han realizado las transacciones y que afectan los items de la base de datos. Esta información se necesita para permitir recuperar ante fallas por parte de las transacciones.
  2. El problema de lost update consiste en que dos procesos concurrentemente modifican la misma variable, despues de ambos haberla leido. Como las escrituras se serializan, ambos leen un valor original, lo modifican y lo escriben. Cuando termina el primer proceso de escribir, el segundo escribe pero nunca comprueba si cambio el valor original, por lo que el primer cambio se pierde y el segundo hace de cuenta que nunca existio.
  3. El schedule de transacciones / una historia es recuperable cuando antes de commitear, todas las transacciones de las cual leyo commitean
  4. Las reglas de armstrong adicionales son: Union (X->Y, X->Z => X->YZ), pseudotransitividad (Si \forall W, X->Y y YW->Z => XW->Z) y Descomposicion (X->YZ => X->Y, X->Z)
  5. Una descomposicion se puede decir SPI cuando la clausura funcional de la clave da todos los atributos de la relacion univocamente identificados. Una descomposicion NO SPI puede ser R(ABCD), (AB) (CD) con (A->B, C->D), luego una tupla de ABCD a1b1c1d1, puede ser conformada como a1b1c2d2 o a2b2c1d1 o a1b1c1d1. Luego no es SPI.
  6. La proyeccion de AR es la funcion que dada una tupla, devuelve los elementos que coinciden con el predicado. Es equivalente a elegir las columnas de un select. PI_a(PI_b(X)) = PI_{a interseccion b}(X) y PI_L(R x S) = PI_L1(R) x PI_L2(S) si L=L1 U L2
  7. DML es Data Manipulation Language. Es el lenguaje que sirve para operar sobre el contenido de las relaciones (tablas), no para modificar su estructura. SELECT y INSERT INTO son de las funciones mas comunes. SELECT user FROM logs WHERE inserted_on < TODAY()
  8. Si es un JOIN Natural, R ⋈ S, entonces R⋈S = S⋈R. Esto permite definir cual es la tabla por la cual se recorre secuencialmente y cual se recorre por indices. Otra propiedad, Sigma_a(R⋈S) = Sigma_a(R)⋈Sigma_a(S) . Esto permite reducir la cantidad de registros que entran al join.
  9. A una tabla se le pueden asignar permisos de lectura y de escritura para los distintos usuarios.
  10. Si hay UNDO, pero no hay COMMIT, entonces tenemos que deshacer los datos del disco. Ahi aplicamos el mecanismo de recuperacion de UNDO, que es deshacer todos los cambios de esa transaccion (del ultimo al primero), y luego abortarla. Si hay REDO, sabemos que no hay nada grabado en la base, asi que no tenemos que hacer nada para la transaccion salvo agregarle el ABORT al final.
  11. DDL es Data Definition Language. Es el lenguaje que se usa para definir los objetos de la base de datos (usuarios, permisos, tablas, triggers, indices). La instruccion tipica es CREATE TABLE Productos( ID Integer, Name VARCHAR(30))
  12. Clustering en el sentido data mining, es una tecnica no supervisada de clasificacion, donde se busca obtener patrones de agrupamiento de distintos datos. Es un criterio para definir que datos son similares a otros y que datos son muy distintos (los distintos grupos). Clustering en el sentido de bases de datos es relativo a como estan puestos en las paginas los indices con respecto a los registros a los que apuntan.
  13. Los stored procedures sirven para encapsular la logica del negocio en procedimientos almacenados en el motor de bases de datos. Ventajas: Son caja negra para los usuarios, no necesitan saber como estan implementados. Reducen la necesidad de mover registros de la BD a una aplicacion y de vuelta a la BD, haciendolos a veces mucho mas eficientes. Pueden tener un control muy fino de privilegios, de quienes pueden ejecutarlo. Desventajas: Estan escritos en lenguajes propietarios de los motores, dificultando las migraciones. Muchas veces pueden ser procesos muy largos que usen recursos del motor de BD que los podria hacer un servidor aparte, creando un cuello de botella de CPU durante toda la ejecucion innecesariamentee, aumentando la latencia de todos los otros usuarios.