Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modificación
Inserción (Se solucionan descomponiendo)
Eliminación
Z=X
Mientras Z cambie:
recorrer todos los Ri haciendo: Z = [ Z ∪ ((Z ∩ Ri)+ ∩ Ri) ]
Algoritmo:
Xc=X
Mientras Xc cambie,
para cada df (A→B), si A ⊆ Xc ⇒ Xc = Xc ∪ B
Formas Normales:
1FN ← 2FN ← 3FN ← FNBC ← 4FN ← FNPJ (5FN) Nos orientan a conseguir
descomposiciones que cumplan una serie de normas
Dependencias multivaluadas:
NOTA: Encontrar dmv‘s a un esquema puede generar NUEVAS df‘s al esquema (ver
axioma 5).
Axiomas dmv's:
Base de dependencias:
T=R-X
Mientras T cambie,
si ∃ V⊆T ^ Y→→Z ^ V∩Y=0 => V=[(V-Z),(V∩Z)]
Dmv's embebidas:
Son dmv‘s que no existen en un esquema original R, pero que son satisfechas en una
determinada descomposición del mismo.
Dependencias de Juntas:
?????
Son un caso mas general de las dmv‘s.
Existe un algoritmo derivado de la tableau de Chase para determinar si una dj
(dependencia de junta) es implicada por un conjunto determinado de otras dj.
Todo en memoria principal, un archivo por tabla, o todas las tablas en un archivo
los bloques de memoria contienen completar
Gestor de cache
Formas de indexado:
Costos de procesamiento:
Sin Indices:
o Secuencial(el mas lento de todos) Costo = Br + Mr.Bs
o Por bloques(se utiliza para tablas chicas sin indexar) Costo = Br + Bs
o Sort-Merge(leo cada bloque solo una vez, sin importar el tamaño de las
tablas) Costo = Br + Bs + Bs.Log2Bs
Con Indices:
o Indice normal (Accedo solo a los bloques indicados por el índice) Costo
= Mr.Ms/v(A,S) + Br
o de agrupamiento (Accedo solo a los bloques indicados por el índice, pero
ademas las tuplas buscadas se concentran en estos bloques)
Costo=Br+Mr.Bs/v(A,S)
Método simple de Hash
Método Grace (genera un nuevo archivo ordenando cada tupla por su hash)
Costo=3(Br+Bs)
Método de índice de juntas con mapas de Bits
Comentar algo...
Pipelines:
Serialización
Protocolos de cierre:
Candados simple
o Un solo tipo de candado para lectura y escritura; no se comparten.
Candados de lectura y escritura
o Existen 2 tipos de candados (lectura y escritura) Se permite compartir un
cierre para lectura.
o Se necesita un grafo de precedencia para asegurar la seriabilidad
Cierre de dos fases
o Solo se comienzan a liberar los cierres luego de haber obtenido el control
de todos los datos necesarios.
o Si es respetado, nos garantiza que la ejecución sera siempre serializable
Protocolo de Arbol
o Cierro en modo inicial un nodo cualquiera del arbol
o A partir de aca, puedo cerrar un nodo solo si poseo el cierre del nodo
padre
o Libero los nodos padre a medida que dejan de ser necesarios
o Una vez que comienzo a liberar nodos, no puedo cerrar ningun otro
Locks de update ???
Locks de Incremento ???
Tablas de Locks ???
Niveles de Aislamiento:
(y los fenomenos que pueden aparecer)
Fenómenos:
Lectura Sucia: Lectura de un atributo grabado por una transacción que todavia
no hizo Commit
Lectura no Repetible: Una transacción lee 2 veces un atributo, pero este es
modificado entre lecturas
Fantasma: Una transacción lee una tabla con X elementos, y en una segunda
lectura esa cantidad fue cambiada por otra transacción.
Gestor de Recuperación:
Abort: Restaura los valores de los datos modificados por la transacción abortada
Commit: Graba a memoria estable los cambios (en el LOG) que hizo la
transacción.
Reiniciar: Aborta todas las transacciones que se estan ejecutando desde la ultima
hasta la primera antes del ultimo checkpoint (UNDO) y luego graba a la BD la
información actualizada por transacciones que llegaron a ejecutar commit
(REDO). Reiniciar es Idempotente ya que debe ser equivalente ejecutarlo una
vez, completamente, que varias veces en forma parcial y finalmente una ultima
vez en forma completa.
Protocolos:
Write Ahead Log (WAL) Consiste en grabar siempre las actualizaciones primero
en el Log y luego en la BD
Force Log at Commit (FLC) Consiste en grabar al Log las actualizaciones
hachas por una transacción antes de concluir el Commit
Recuperación de Medios:
Se utlizan copias de respaldo en unidades de cinta, pero demanda mucho tiempo. Mas
reciente es la utilizacion de RAID replicando discos uno a uno o en conjuntos de mas de
3 utilizando paridad de datos. Si un disco dejara de funcionar, la BD puede seguir
funcionando, mientras se le reemplaza el disco dañado por uno nuevo y se reconstruye
la paridad en background