什么是"分布式交易"?

Zom*_*bie 26 database commit xa distributed-transactions

维基百科有关分布式事务的文章不是很有帮助.

您能否对分布式事务的内容进行高级描述?

另外,您能举例说明为什么应用程序或数据库应该执行更新两台或多台联网计算机上的数据的事务吗?我理解了经典的银行例子; 我更关心像Dynamo,Bigtable,HBase或Cassandra这样的Web规模数据库中的分布式事务.

Hei*_*nzi 28

通常,事务发生在一个数据库服务器上:

BEGIN TRANSACTION
SELECT something FROM myTable
UPDATE something IN myTable
COMMIT
Run Code Online (Sandbox Code Playgroud)

一个分布式事务涉及到多个服务器:

BEGIN TRANSACTION
UPDATE amount = amount - 100 IN bankAccounts WHERE accountNr = 1
UPDATE amount = amount + 100 IN someRemoteDatabaseAtSomeOtherBank.bankAccounts WHERE accountNr = 2
COMMIT
Run Code Online (Sandbox Code Playgroud)

困难来自于服务器必须进行通信以确保在两个服务器上都满足诸如原子性之类的事务属性的事实:如果事务成功,则必须在两个服务器上更新这些值.如果事务失败,则必须在两台服务器上回滚事务.绝不能在一台服务器上更新值,而在另一台服务器上不更新.


Aar*_*ver 12

分布式事务跨越多个物理系统,而标准事务则不跨越.系统之间的同步成为传统上不存在于标准事务中的需要.

来自您的维基百科参考...

...分布式事务可以看作是必须在多个参与数据库之间同步(或提供ACID属性)的数据库事务,这些数据库分布在不同的物理位置之间......


Kla*_*sen 5

分布式事务是跨多台计算机工作的事务.假设您在计算机A上的某个程序中以某种方法启动事务.然后,您在计算机A上的方法中对数据进行一些更改,之后该方法在计算机B上调用Web服务.计算机B上的Web服务方法失败,推回交易.由于事务是分布式的,这意味着在计算机A上进行的任何更改也需要回滚.Windows上的分布式事务协调器和.net框架的组合有助于实现此功能.