Diferencia entre revisiones de «Gestor transaccional»

Contenido eliminado Contenido añadido
Flextron (discusión · contribs.)
m añadir interwiki
Flextron (discusión · contribs.)
añado segunda parte (tr de en::wiki) quito esbozo
Línea 9:
Un gestor transaccional permite enlazar varias operaciones individuales automáticamente como una sola e indivisible transacción. El gestor garantiza que todas las operaciones finalizan sin errores o ninguna de ellas. Si algunas operaciones finalizaron correctamente pero otras no, el gestor inicia el proceso de '''[[rollback]]''' de todas las operaciones implicadas (incluso de aquellas que finalizaron correctamente), eliminando todo rastro de la transacción y devolviendo la base de datos a un estado consistente como lo estaba antes de empezar a procesar la transacción. Si todas las operaciones de la transacción finalizaron correctamente, la transacción realiza [[commit]] a los cambios realizados en la base de datos. Una vez se ha hecho commit, los datos de esa transacción queda consolidados y la transacción no puede hacer rollback de los cambios.
 
Todas las transacciones se procesan en orden cronológico. Si la transacción ''n+1'' modifica la misma área que la transacción ''n'', la transacción ''n+1'' no puede empezar hasta que la transacción ''n+1'' ha realizado commit de sus cambios. Ninguna transacción puede realizar commit de sus modificaciones hasta que todas las transacciones anteriores que modifiquen la misma área hayan realizado commit (o rollback) de sus cambios. No puede haber «saltos» de secuencia en la transacciones anteriores.
{{esbozo de|informática}}
 
==Metodología==
 
Los principios básicos de cualquier sistema transaccional son los mismo. Sin embargo, la terminología puede variar de un sistema a otro, los términos utilizados aquí no tienen porque ser universales.
 
===Rollback===
 
Los gestores transacciones aseguran la integridad de las bases de datos registrando todos los estados intermedios de una base de datos mientras se modifica. En caso de que la transacción falle, se usan esos registros para devolver la base de datos a un estado consistente. Por ejemplo, se copia información de la base de datos ''antes'' de que sea modificada por una transacción, de tal manera que si parte de la transacción acaba incorrectamente, se usan esas copias (llamadas ''before image'') para restablecer la integridad de los datos ('''[[rollback]]''').
 
===Rollforward===
 
También es posible mantener un copia (llamada ''after image'') de todas aquellas modificaciones realizadas sobre una base de datos. No es necesario para hacer rollback de las transacciones que finalizaron incorrectamente, pero sí es útil para actualizar la base de datos en un escenario de una recuperación.
 
Si la base de datos falla estrepitosamente, la restauración se debe iniciar desde la [[copia de seguridad]] más reciente, aunque no reflejará aquellos cambios posteriores a la copia. Sin embargo, una vez se ha restablecido la copia de seguridad se aplica la copia ''after image'' que contendrá todas las modificaciones entre la copia de seguridad y el fallo de la base de datos. Desgraciadamente, esta copia también contiene todas aquellas modificaciones que estaban ''en vuelo'' en el momento del fallo. Por ello, es necesario aplicar la copia ''before image'' que hará ''rollback'' de las transacciones con un estado intermedio, devolviendo la base de datos a un estado seguro y consistente.
 
===Bloqueos mutuos===
 
En algunos casos, dos transacciones pueden en el transcurso de su ejecución, competir por dos recursos al mismo tiempo de tal manera que impide seguir con su ejecución. Un '''[[bloqueo mutuo]]''' (o ''deadlock'') ocurre, por ejemplo, cuando la transacción ''A'' intenta acceder al área ''X'' de la base de datos mientras la transacción ''B'' intenta acceder al área ''Y'' de la base de datos. Si, en algún punto intermedio, la transacción ''A'' intenta acceder al área ''Y'' mientras al mismo tiempo la transacción ''B'' intenta acceder al área ''X'' se genera un bloqueo mutuo que impide a ambas transacciones progresar. Los sistemas transacciones están diseñados para detectar este tipo de bloqueos cuando ocurren y actuar en concordancia. O bien ambas transacciones son canceladas y el sistema hace rollback de todos los cambios para luego volver a ejecutarlas automáticamente en diferente orden de tal forma que no se vuelva a formar otro bloqueo mutuo, o bien cancelar y hacer rollback de una de ellas y volverla a lanzar después de una pequeña espera.
 
 
[[cs:Transakční zpracování]]