本节提供了对多站点更新功能的概述, 它适用于涉及主机和 AS/400 数据库服务器的方案。它描述了 PC、UNIX 和 Web 应用程序实现在同一事务中更新多个 DB2 数据库所需要的产品和部件。
多站点更新(也就是通常所说的分布式工作单元 (DUOW) 和两阶段落实) 是这样的一种功能, 它允许应用程序在保证数据完整性的情况下更新多个远程数据库服务器中的数据。例如, 涉及将资金从一个帐户转移至不同数据库服务器中的另一个帐户的银行业务。
在这种业务中,一个帐户上的借款操作的更新在处理其他帐户的贷款所需的更新落实之前不会得到落实, 这一点非常重要。多站点更新考虑事项适用于当表示这些帐户的数据由两个不同的数据库服务器管理时的情况。
DB2 产品提供了对多站点更新的全面支持。此支持可用于使用常规 SQL 开发的应用程序,以及使用事务监控程序(TP 监控程序 )产品 (这些产品执行 X/Open XA 接口规范)的应用程序。这种 TP 监控程序产品的示例包括 IBM TxSeries(CICS 和 Encina)、IBM Message 和 Queuing Series、IBM Component Broker Series、IBM San Francisco Project 以及 Microsoft 事务服务器 (MTS)、 BEA Tuxedo 以及其他几个产品。视是使用本机 SQL 多站点更新还是使用 TP 监控程序多站点更新,安装需求有所不同。
本机 SQL 多站点更新程序和 TP 监控程序多站点更新程序都必须使用 CONNECT 2 SYNCPOINT TWOPHASE 选项来进行预编译。二者都可以使用 SQL Connect 语句来指示想要哪个数据库用于随后的 SQL 语句。若没有任何 TP 监控程序通知 DB2 将由 TP 监控程序来协调事务 (根据 DB2 从 TP 监控程序接收的用于建立数据库连接的 xa_open 调用所指示), 则 DB2 软件将用来协调该事务。
使用 TP 监控程序多站点更新时,应用程序必须通过使用 TP 监控程序的 API 来请求落实或回滚,例如, CICS SYNCPOINT、Encina Abort()、MTS SetAbort()。
当使用本机 SQL 多站点更新时, 必须使用正常的 SQL COMMIT 和 ROLLBACK。
TP 监控程序多站点更新可协调存取 DB2 和非 DB2 资源管理器(如 Oracle、Informix 或 SQL 服务器) 的事务。本机 SQL 多站点更新仅与 DB2 服务器一起使用。
要使多站点更新事务起作用, 参与分布式事务的每个数据库都必须能够支持分布式工作单元。目前, 下列 DB2 服务器提供了 DUOW 支持,允许这些服务器参与分布式事务:
一个分布式事务可以更新受支持的数据库服务器的任意组合。例如, 应用程序可在单个事务内更新下列所有数据库中的几个表: Windows NT 或 Windows 2000 上 的“DB2 通用数据库”、“DB2 OS/390 版”数据库和 DB2/400 数据库。