Una transacción anidada es una transacción de base de datos que se inicia mediante una instrucción dentro del alcance de una transacción ya iniciada.
Las transacciones anidadas se implementan de manera diferente en diferentes bases de datos. Sin embargo, tienen en común que los cambios no se hacen visibles para ninguna transacción no relacionada hasta que se haya confirmado la transacción más externa. Esto significa que una confirmación en una transacción interna no necesariamente persiste las actualizaciones en el sistema.
En algunas bases de datos, los cambios realizados por la transacción anidada no son detectados por la transacción 'host' hasta que se confirma la transacción anidada. Según algunos, [ ¿quién? ] esto se deriva de la propiedad de aislamiento de las transacciones.
La capacidad de manejar correctamente las transacciones anidadas es un requisito previo para las verdaderas arquitecturas de aplicaciones basadas en componentes. En una arquitectura encapsulada basada en componentes, las transacciones anidadas pueden ocurrir sin que el programador lo sepa. Una función de componente puede contener o no una transacción de base de datos (este es el secreto encapsulado del componente. Ver Ocultación de información ). Si se realiza una llamada a dicha función de componente dentro de un corchete BEGIN - COMMIT, se producen transacciones anidadas. Dado que las bases de datos populares como MySQL [1] no permiten anidar corchetes BEGIN - COMMIT, se necesita un marco o un monitor de transacciones para manejar esto. Cuando hablamos de transacciones anidadas, debe quedar claro que esta función depende de DBMS y no está disponible para todas las bases de datos.
La teoría de las transacciones anidadas es similar a la teoría de las transacciones planas. [2]
La industria bancaria generalmente procesa transacciones financieras utilizando transacciones anidadas abiertas , [ cita requerida ] que es una variante más flexible del modelo de transacciones anidadas que proporciona un mayor rendimiento al tiempo que acepta las compensaciones de inconsistencia que lo acompañan. [3]
Otras lecturas
- Gerhard Weikum, Gottfried Vossen, Sistemas de información transaccional: teoría, algoritmos y la práctica del control y la recuperación de concurrencia , Morgan Kaufmann, 2002, ISBN 1-55860-508-8
Referencias
- ^ "Declaraciones que provocan un compromiso implícito" . Manual de referencia de MySQL 4.1 . Oracle . Consultado el 5 de diciembre de 2010 .
- ^ Resende, RF; El Abbadi, A. (25 de mayo de 1994). "Sobre el teorema de serialización para transacciones anidadas". Cartas de procesamiento de información . 50 (4): 177–183. CiteSeerX 10.1.1.43.6470 . doi : 10.1016 / 0020-0190 (94) 00033-6 .
- ^ Weikum, Gerhard; Hans-J. Schek (1992). Conceptos y aplicaciones de transacciones multinivel y transacciones anidadas abiertas . Modelos de transacciones de bases de datos para aplicaciones avanzadas . Morgan Kaufmann. págs. 515–553 . CiteSeerX 10.1.1.17.7962 . ISBN 978-1-55860-214-4.