维基百科为http://en.wikipedia.org/wiki/Distributed_transaction撰写的文章没有多大帮助。
您能给出一个高层次的描述,提供更多关于分布式事务的详细信息吗?
另外,你能给我一个例子,说明为什么一个应用程序或数据库应该执行一个事务来更新两个或两个以上联网计算机上的数据吗?
我理解了经典的银行示例;我更关心网络规模数据库中的分布式事务,如Dynamo、Bigtable、HBase或Cassandra。
发布于 2010-11-18 16:46:41
通常,事务发生在一个数据库服务器上:
BEGIN TRANSACTION
SELECT something FROM myTable
UPDATE something IN myTable
COMMIT分布式事务涉及多个服务器:
BEGIN TRANSACTION
UPDATE amount = amount - 100 IN bankAccounts WHERE accountNr = 1
UPDATE amount = amount + 100 IN someRemoteDatabaseAtSomeOtherBank.bankAccounts WHERE accountNr = 2
COMMIT困难来自这样一个事实,即服务器必须进行通信,以确保在两个服务器上都满足原子性等事务性属性:如果事务成功,则必须在两个服务器上更新值。如果事务失败,则必须在两个服务器上对事务进行回滚。绝不能在一台服务器上更新这些值,而不是在另一台服务器上更新。
发布于 2010-11-18 16:44:49
分布式事务跨越多个物理系统,而标准事务则不然。系统之间的同步成为一种传统上不存在于标准事务中的需求。
从你维基百科的参考资料..。
...a分布式事务可以看作是一个数据库事务,它必须在分布在不同物理位置之间的多个参与数据库之间进行同步(或提供ACID属性)。
发布于 2010-11-18 16:46:20
分布式事务是跨多台计算机工作的事务。假设您在计算机A上的程序中以某种方法启动事务,然后在计算机A上对方法中的数据进行一些更改,然后该方法在计算机B上调用web服务。计算机B上的web服务方法失败并回滚事务。由于事务是分布式的,这意味着计算机A上的任何更改也需要回滚。windows上的分布式事务协调器与.net框架的结合为这一功能提供了便利。
https://stackoverflow.com/questions/4217270
复制相似问题