Transacciones Flashcards

1
Q

Explicar las características ACID de las transacciones.

A

Las transacciones deben ser ACID:
- Atómicas
- Consistentes: garantía de que la base de estados siempre estará en un estado válido, respetando reglas de integridad
- Aisladas: las transacciones no deben interferir entre sí. Si lo hacen, se conocen como transacciones anidadas, y no son durables.
- Durables: una vez que se commitean los cambios realizados, son perdurables en el tiempo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Explicar la implementación de private workspace para las transacciones. Dar pros y contras.

A

La implementación de private workspace implica duplicar todos los archivos y objetos con los que la transacción va a interactuar. A lo largo de su ejecución, los archivos modificados son las copias, no los originales. A la hora de commitear, si se detecta que alguno de los archivos originales fue modificado, se aborta la transacción; si no, se modifican los archivos originales y se descartan las copias.

La ventaja es que commitear es una tarea sencilla, así como el rollback en caso de error (con eliminar las copias es suficiente). La desventaja es que es muy costoso a nivel memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Explicar la implementación de write ahead log para las transacciones. Dar pros y contras.

A

La implementación de write ahead log implica mantener un historial con los cambios que se van realizando, e ir modificando los archivos originales inplace. A la hora de commitear, si se detecta que otra transacción modificó los mismos archivos que ésta, se hace un rollback, deshaciendo cambio por cambio, de abajo hacia arriba, los logs del historial. Si no hay conflictos, se commitea.

La ventaja es que a nivel memoria y complejidad, es menos exigente que private workspace, ya que se modifican siempre los archivos originales. La desventaja es que si hay un error, la ejecución del rollback es costosa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explicar la implementación de commit en dos fases para las transacciones. Dar pros y contras.

A

La implementación de commit de dos fases se divide, justamente, en dos fases:
Fase 1
- El coordinador (que es el que ejecuta la transacción) le pide permiso a todos los demás procesos, enviándoles un mensaje de tipo PREPARE y escribiendo el prepare en el log.
- Los demás procesos reciben el pedido del coordinador, escriben READY en el log y le envían el mensaje al coordinador.

Fase 2
- El coordinador recibe el READY de todos los procesos, ejecuta los cambios, y envía un mensaje de tipo COMMIT a todos los procesos
- Los procesos reciben el COMMIT del coordinador, lo agregan al log, y envían FINISHED al coordinador.

Chamuyo mío:
La ventaja es que no hay rollbacks, ya que para ejecutar la acción, se recibió el permiso de todos los procesos involucrados. La desventaja es que el proceso de recolectar todos los permisos puede ser lento, más que simplemente modificar el archivo directamente como en private workspace o en write log ahead.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explicar el algoritmo de two-phase locking de control de concurrencia. Dar pros y contras.

A

El algoritmo tiene tres etapas:
- Etapa de expansión: a principios de la transacción, donde se lockean todos los recursos.
- Etapa intermedia: donde se ejecuta el código en sí, utilizando los recursos lockeados.
- Etapa de contracción: donde se liberan todos los recursos

Ventajas:
- Garantiza la seriabilidad de las transacciones: sólo puede ejecutarse una a la vez, si comparten recursos.

Desventajas:
- Convierte lo concurrente en serializable, no fomenta el paralelismo
- Pueden ocurrir deadlocks, dependiendo del orden en que se toman los locks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Explicar el algoritmo de concurrencia optimista de control de concurrencia. Dar pros y contras.

A

En este algoritmo, las transacciones se ejecutan sin control de concurrencia, modificando y accediendo a los archivos y objetos que le corresponde, sin utilizar locks. Al commitear, se verifica si ocurrió un error, como race conditions o estados inválidos. En ese caso, se aborta la transacción.

Ventajas:
- Algoritmo libre de deadlocks, al no usar locks
- Fomenta el paralelismo, al permitir que todas las transacciones se ejecuten en paralelo

Desventajas:
- No hay control de cambios, por lo que si hay un error, se debe hacer un rollback y potencialmente rehacer toda la transacción, lo cual es sumamente costoso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Explicar el algoritmo de timestamps de control de concurrencia. Dar pros y contras.

A

El algoritmo de timestamps presume que todas las transacciones tienen un timestamp único y sincronizado, lo cual se puede obtener con el algoritmo de Lamport.

Cada archivo tiene un timestamp de última lectura y modificación. Cuando una transacción quiere acceder a un archivo, compara su timestamp con el correspondiente del archivo:
- Si el timestamp_archivo > timestamp_transacción –> la transacción es anterior a la modificación del archivo, lo que quiere decir que se modificó el archivo luego de que comenzó a ejecutarse la transacción. Esto implica un estado inválido del archivo, ya que el sistema no es invariante. Se aborta la transacción.
- Si el timestamp_transaccion > timestamp_archivo –> no se modificó al archivo desde que se comenzó a ejecutar la transacción, todo es válido. Se continúa la transacción.

Ventajas:
- Se detecta rápidamente si ocurrió un error, y se aborta lo antes posible.

Desventajas:
- Implica la implementación de un algoritmo extra: el algoritmo de Lamport.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly