DB2 ESE V95 集成了复制 (Replication Server) 和联合 (Federation Server) 两大功能。
DB2 联合数据库系统是一种特殊形式的分布式数据库管理系统。在联合数据库系统中,用户可以实现对多种数据源的访问。实现 DB2 与非 DB2 数据源之间的复制的一个前提是要保证该数据源被联合系统支持。
DB2 支持两种类型复制 :SQL 复制和 Q 复制。 SQL 复制捕获源表的更改并使用 CD 表来存储已经提交的事务性数据,然后从 CD 表中读取这些更改并将它们复制到相应的目标表。 SQL 复制可以应用在各种需要的环境,包括容量补偿,给数据仓库输送数据以及审计更改历史记录。用户可以选择相隔一段时间或仅在一段时间内复制。通过连续时间内的复制,应用程序可以捕捉到实时的数据。
Q 复制可以在很短的时间内复制大量的数据。 Q 复制将捕获源表的更改并将已提交的事务转化为消息。 Q 复制不使用 CD 表,当 Q 复制读取到数据后,将消息通过 MQ 消息队列发送到目标。目标系统将会从队列中读取消息并将消息转化为相应的事务提交到目标表。
目前 SQL 复制支持非 DB2 数据源到 DB2 以及 DB2 到非 DB2 数据源的复制,而 Q 复制只支持 DB2 到非 DB2 数据源的复制。表 1 所示的是 SQL 复制和 Q 复制的关键属性的对比。
表 1. SQL 和 Q 复制对比
复制属性 | SQL复制 | Q复制 |
是否支持 DB2 到 DB2 的复制 | 是 | 是 |
是否支持其他数据源到 DB2 的复制 | 是 | 否 |
是否支持 DB2 到其他数据源的复制 | 是 | 是 |
工作性能 | 一般 | 很好 |
工作方式 | 基于 log/ 触发 | 基于 log |
是否需要 MQ | 不需要 | 需要 |
针对 DB2 数据源,Q 和 SQL 复制都是采用基于 LOG 的方式。基于 LOG 的读取源数据的方式不会对客户的生产环境造成太大影响。针对非 DB2 数据源只能以触发的方式实现 SQL 复制。 Q 复制的优点很明显,工作效率高。但其缺点也很明显:不能从异种数据源读取数据,而 SQL 复制采用触发的方式则可以对异种数据源的读取。因此我们在本文的复制系统中采用 SQL 复制从非 DB2 数据源读取数据,用 Q 复制的方式分发数据。
Capture 和 Apply 程序
Replication Server 是一组程序的集合,主要包括 Capture 和 Apply 程序。 Capture 程序负责捕捉数据源的变化并将更改发送到目标数据库,Apply 程序负责将捕捉到的数据应用到目标数据库。对于 Capture 程序捕捉到的数据源变化也可以通过 Replication Server 的另外一个应用 -Event Publisher 发布出来,这些更改被转化成特殊格式的消息,例如 XML 消息格式,为商业智能提供一个推送数据继承模型。 Capture 和 Apply 程序都必须依赖 DB2 才能运行。
ASNCLP
Q 和 SQL 复制过程可以完全通过 SQL 语句来创建,但对于普通用户来讲难度较大,因此 Replication Server 提供了另外两种配置 Q 和 SQL 复制的工具:ASNCLP(API) 和 Replication Center(GUI) 。