A) Administración de transacciones.
Definición de transacción
Una transacción en un sistema de gestión de bases de datos (SGBD), es un
conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir,
en forma indivisible o atómica.
Un SGBD se dice transaccional si es capaz de mantener la integridad de los
datos, haciendo que estas transacciones no puedan finalizar en un estado
intermedio. Cuando por alguna causa el sistema debe cancelar la transacción,
empieza a deshacer las órdenes ejecutadas hasta dejar la base de datos en su
estado inicial (llamado punto de integridad), como si la orden de la transacción
nunca se hubiese realizado.
Para esto, el lenguaje de consulta de datos SQL (Structured query language),
provee los mecanismos para especificar que un conjunto de acciones deben
constituir una transacción.
Protocolo de bloqueo en dos fases
Se dice que una transacción sigue el protocolo de bloqueo de dos faces si
todas las operaciones de bloqueo (bloquear_escritura,
bloquear_lectura) preceden a la primera operación de desbloqueo en la
transacción. una transacción así piede dividirse en dos faces: una fase de
expansión (o de crecimiento), durante la cual se pueden adquirir nuevos
candados sobre elementos pero no se puede liberar ninguno; y una fase de
contracción, durante la cual se pueden liberar los candados existentes, pero no
es pueden adquirir nuevos candados. Si se permite promover candados, esta
definición no cambia. Pero, si también se permite la degredación de candados,
la definición debe alterarse ligeramente, porque todas las degradaciones deben
efectuarse en la fase de contracción. Así, una operación bloquear_lectura(X)
que degrada un candado de escritura que ya se tenía sobre X solo puede
aparecer en la fase de contracción de la transacción.
El bloqueo de dos fases puede limitar el grado de concurrencia que pueda
haber en un plan. La razón es que una transacción T tal vez no pueda liberar
un elemento X caundo termine de usarlo si T debe bloquear un alemento
adicional Y más adelante; o bien, T deberá bloquear el elemento adicional Y
antes de necesitarlo para poder liberar X. Así pues, X debe permanecer
bloqueado por T hasta que está haya bloqueado todos los elementos que va a
necesitar; sólo entonces podrá T liberar X. MIentras tanto, otra transacción que
desee tener acceso a X podría verse obligada a esperar, aunque T ya haya
treminado de usarlo; o bien, si Y queda bloqueado antes de que se le necesite
Juan Ramón Santiago Estrada
Heriberto Paredes Espinosa
Juan José Navarrete Pedroza
realmente, otra transacción que desee tener acceso a él se verá obligada a
esperar aunque T todavía no esté usando Y. Éste es el precio de garantizar la
seriabilidad de todos los planes sin tener que examinar los planes mismos.
Recuperación de información mediante transacciones.
La Recuperación de Transacción permite que un usuario recupere una parte
específica de los datos basados en criterios definidos por el usuario. Una
recuperación tradicional es realizada objeto por el objeto por la base de datos.
Una transacción es un juego de operaciones relacionadas que, cuando
agrupado juntos, definen una unidad lógica del trabajo dentro de una
aplicación. Las transacciones son definidas por la vista del usuario del proceso.
Mientras la Recuperación de Transacción puede parecer a la respuesta a todos
sus problemas de recuperación de base de datos, hay tiempos cuando no es
posible o no aconsejable. El coste tenía que equilibrar contra el coste de
exploraciones largas de los juegos de datos de registro para aislar datos para
deshacer y el coste de aplicación de aquellos datos usando SQL.
La solución de recuperación de base de datos última debería analizar su
ambiente total y las transacciones que tienen que ser recuperado, y
recomendar que el tipo de la recuperación funcionar. Además, esto debería
generar automáticamente los empleos apropiados para realizar la recuperación
para evitar los errores que están seguros para ser introducido con escrituras a
mano desarrolladas y empleos.
B) Manejo de Concurrencia.
Definición de concurrencia
Los procesos concurrentes pueden ser ejecutados realmente de forma
simultánea, sólo cuando cada uno es ejecutado en diferentes procesadores. En
cambio, la concurrencia es simulada si sólo existe un procesador encargado de
ejecutar los procesos concurrentes, simulando la concurrencia, ocupándose de
forma alternada en uno y otro proceso a pequeñísimos intervalos de tiempo. De
esta manera simula que se están ejecutando a la vez.
Debido a que los procesos concurrentes en un sistema pueden interactuar
entre otros también en ejecución, el número de caminos de ejecución puede
ser extremadamente grande, resultando en un comportamiento sumamente
complejo. Las dificultades asociadas a la concurrencia han sido pensadas para
el desarrollo de lenguajes de programación y conceptos que permitan hacer la
concurrencia más manejable.
Juan Ramón Santiago Estrada
Heriberto Paredes Espinosa
Juan José Navarrete Pedroza
Seriabilidad con el bloqueo en dos fases.
(bloquear_escritura, bloquear_lectura) preceden a la primera operación de
desbloqueo en la transacción. una transacción así piede dividirse en dos faces:
una fase de expansión (o de crecimiento), durante la cual se pueden adquirir
nuevos candados sobre elementos pero no se puede liberar ninguno; y una
fase de contracción, durante la cual se pueden liberar los candados existentes,
pero no es pueden adquirir nuevos candados. Si se permite promover
candados, esta definición no cambia. Pero, si también se permite la
degredación de candados, la definición debe alterarse ligeramente, porque
todas las degradaciones deben efectuarse en la fase de contracción. Así, una
operación bloquear_lectura(X) que degrada un candado de escritura que ya se
tenía sobre X solo puede aparecer en la fase de contracción de la transacción.
El bloqueo de dos fases puede limitar el grado de concurrencia que pueda
haber en un plan. La razón es que una transacción T tal vez no pueda liberar
un elemento X caundo termine de usarlo si T debe bloquear un alemento
adicional Y más adelante; o bien, T deberá bloquear el elemento adicional Y
antes de necesitarlo para poder liberar X. Así pues, X debe permanecer
bloqueado por T hasta que está haya bloqueado todos los elementos que va a
necesitar; sólo entonces podrá T liberar X. MIentras tanto, otra transacción que
desee tener acceso a X podría verse obligada a esperar, aunque T ya haya
treminado de usarlo; o bien, si Y queda bloqueado antes de que se le necesite
realmente, otra transacción que desee tener acceso a él se verá obligada a
esperar aunque T todavía no esté usando Y. Éste es el precio de garantizar la
seriabilidad de todos los planes sin tener que examinar los planes mismos.