Entiendo, de una manera borrosa, cómo funcionan las transacciones ACID regulares. Realiza algún trabajo en una base de datos de tal forma que el trabajo no se confirma hasta que se establece algún tipo de indicador de confirmación. La parte de confirmación se basa en una suposición subyacente (como una escritura de bloque de disco único es atómica). En el caso de un error catastrófico, puede borrar los datos no confirmados en la fase de recuperación.¿Cómo funcionan las transacciones distribuidas (por ejemplo, MSDTC)?
¿Cómo funcionan las transacciones distribuidas? En algunos de los documentos de MS he leído que de alguna manera puede realizar una transacción entre bases de datos y sistemas de archivos (entre otras cosas).
Esta tecnología podría (y probablemente) utilizarse para los instaladores, donde desea que el programa esté completamente instalado o ausente por completo. Simplemente comienza una transacción al inicio del instalador. A continuación, puede conectarse al registro y al sistema de archivos, realizando los cambios que definen la instalación. Cuando el trabajo finalice, simplemente confirme o deshaga si la instalación falla por alguna razón. El registro y el sistema de archivos se limpian automáticamente para usted por este coordinador de transacciones distribuidas mágico.
¿Cómo es posible que dos sistemas dispares se puedan tramitar de esta manera? Me parece que siempre es posible dejar el sistema en un estado incoherente, donde el sistema de archivos ha cometido sus cambios y el registro no. Creo que en MSDTC incluso es posible realizar una transacción en la red.
He leído http://blogs.msdn.com/florinlazar/archive/2004/03/04/84199.aspx, pero parece ser solo el comienzo de la explicación, y ese paso 4 debería ampliarse considerablemente.
Editar: De lo que se reúnen en http://en.wikipedia.org/wiki/Distributed_transaction, puede llevarse a cabo mediante una confirmación en dos fases (http://en.wikipedia.org/wiki/Two-phase_commit). Después de leer esto, todavía no entiendo el método al 100%, parece que hay mucho margen de error entre los pasos.
No * hay * mucho margen de error. En particular, confía en "COMPRAR PREPARADO" siempre funcionando. La realidad es diferente –