2010-11-18 26 views
15

El artículo de Wikipedia para Distributed transaction no es muy útil.¿Qué es una "transacción distribuida"?

¿Puede dar una descripción de alto nivel de lo que es una transacción distribuida?

Además, ¿puede dar un ejemplo de por qué una aplicación o base de datos debe realizar una transacción que actualice datos en dos o más equipos en red? Comprendo el clásico ejemplo de banco; Me preocupan más las transacciones distribuidas en bases de datos a escala web como Dynamo, Bigtable, HBase o Cassandra.

+0

¿Entiende lo que es una transacción ("normal")? –

+1

'@Matt Ball:' ¡Sí señor! Esta pregunta se trata de transacciones * distribuidas *. – Zombie

Respuesta

10

Las transacciones distribuidas abarcan varios sistemas físicos, mientras que las transacciones estándar no lo hacen. La sincronización entre los sistemas se convierte en una necesidad que tradicionalmente no existiría en una transacción estándar.

Desde su referencia Wikipedia ...

... una transacción distribuida puede visto como una transacción de base de datos que se debe sincronizar (o proporcionan ácido propiedades) entre múltiples bases de datos participantes que son distribuidos entre diferentes ubicaciones físicas ...

+0

+1 para la cotización. Para mí, ACID es toda una definición en sí misma. – Dunaril

4

una transacción es una transacción distribuida que funciona a través de varias borrador uters. Supongamos que inicia una transacción de algún método en un programa en la computadora A. Luego realiza algunos cambios en los datos del método en la computadora A, y después el método llama a un servicio web en la computadora B. El método de servicio web en la computadora B falla y devuelve la transacción. Dado que la transacción se distribuye, esto significa que cualquier cambio realizado en la computadora A también debe revertirse. La combinación del coordinador de transacciones distribuidas en Windows y .NET Framework facilita esta funcionalidad.

19

Por lo general, las transacciones se realizan en un servidor de base de datos:

BEGIN TRANSACTION 
SELECT something FROM myTable 
UPDATE something IN myTable 
COMMIT 

Un transacción distribuida implica varios servidores:

BEGIN TRANSACTION 
UPDATE amount = amount - 100 IN bankAccounts WHERE accountNr = 1 
UPDATE amount = amount + 100 IN someRemoteDatabaseAtSomeOtherBank.bankAccounts WHERE accountNr = 2 
COMMIT 

La dificultad proviene del hecho de que los servidores deben comunicarse a asegúrese de que las propiedades transaccionales como atomicity estén satisfechas en ambos servidores: si el la transacción tiene éxito, los valores deben actualizarse en ambos servidores. Si la transacción falla, la transacción debe revertirse en ambos servidores. Nunca debe suceder que los valores se actualicen en un servidor pero no se actualicen en el otro.

1

Una transacción distribuida es una transacción en una base de datos distribuida (es decir, una en la que los datos se almacenan en varios sistemas separados físicamente). Es digno de mención porque hay una gran cantidad de complejidad involucrada (especialmente en las comunicaciones) para asegurar que todas las máquinas permanezcan de acuerdo, por lo que toda la transacción tiene éxito, o de lo contrario parece que no pasó nada.

0

He tryed para representar las transacciones distribuidas detalles en este post How would you tune Distributed (XA) transaction for performance?

Datos bueno para transacciones distribuidas son datos que tienen muy alta exigencia de consistencia. Por lo general, esto es dinero u otra cosa que nunca podemos tener datos obsoletos.Por lo general, defino dos categorías de datos en vivo y datos que indican que no es necesaria una corrección o consistencia.

Ahora la segunda parte de la pregunta sobre Dynamo, Bigtable, HBase o Cassandra.

No se puede dibujar un paralelismo entre las bases de datos NOSQL y las transacciones distribuidas. La existencia misma de esta clase de bases de datos se justifica como un medio para evitar transacciones distribuidas. La transacción distribuida se centra en la consistencia. Eso es todo lo contrario con los almacenes NOSQL que se centran en Disponibilidad y Particionamiento.

El modelo transaccional habitual utilizado en tales bases de datos es la consistencia eventual.

+0

@Mogsdad ¿es mejor ahora? –

Cuestiones relacionadas