我以一种模糊的方式理解常规ACID事务的工作原理.您在数据库上执行一些工作,以便在设置某种提交标志之前不确认工作.提交部分基于一些基本假设(如单个磁盘块写入是原子的).如果发生灾难性错误,您可以在恢复阶段清除未提交的数据.
分布式事务如何工作?在一些MS文档中,我已经读过你可以以某种方式在数据库和文件系统之间执行事务(以及其他事情).
这种技术可能(并且可能)用于安装程序,您希望程序完全安装或完全不存在.您只需在安装程序开始时开始一个事务.接下来,您可以连接到注册表和文件系统,进行定义安装的更改.作业完成后,如果由于某种原因安装失败,只需提交或回滚.这个神奇的分布式事务协调器会自动为您清理注册表和文件系统.
如何以这种方式处理两个不同的系统?在我看来,总是可以让系统处于不一致状态,文件系统已经提交了更改而注册表没有.我认为在MSDTC中甚至可以通过网络执行事务.
我已经阅读了http://blogs.msdn.com/florinlazar/archive/2004/03/04/84199.aspx,但感觉只是解释的开头,而且第4步应该大大扩展.
编辑:从我在http://en.wikipedia.org/wiki/Distributed_transaction上收集的内容中,可以通过两阶段提交(http://en.wikipedia.org/wiki/Two-phase_commit)来完成.看完之后,我仍然没有理解100%的方法,似乎步骤之间有很多错误的余地.