摘要:
文介绍一个基于 IBM? InfoSphere? DataStage? 和 IBM InfoSphere
Change Data Capture 集成的解决方案,确保您可以捕获已变更的操作数据并将其实时传输到数据仓库,以便时刻保持更新状态。
简介
传统上,通过在非操作时间段内使用一个 ETL 流程批量处理,每年、每月或每周对数据仓库更新一次。在今天的业务环境中,一线业务用户需要根据每小时、每分钟甚至每秒更新的信息制定决策。这些实时数据需求使得批处理窗口萎缩,并需要一个高效的解决方案来解决这个问题。
IBM InfoSphere DataStage 和 IBM InfoSphere
Change Data Capture 的集成是通过 InfoSphere CDC Transaction
Stage(一个 DataStage 组件)实现的。CDC Transaction Stage 利用 CDC
提供的服务捕获源数据库更改;并使用捕获的变更数据实时更新数据仓库,这不会产生任何数据丢失,甚至在发生故障的情况也是如此;并且使您可以在已捕获的变更数据交付到目标数据库之前,在其中应用业务逻辑转换。该解决方案帮助一线业务用户根据数据仓库中的最新更新信息制定智能业务决策。
IBM InfoSphere DataStage 与 IBM InfoSphere
Change Data Capture 的集成
IBM InfoSphere DataStage 与 IBM InfoSphere
Change Data Capture 之间的集成是通过 InfoSphere CDC Transaction
Stage 实现的。图 1 显示了当 InfoSphere CDC 在源数据库捕获到变更并使用一个 DataStage
作业 (CDC Transaction Stage) 时,数据流如何将变更数据交付给目标数据库。
图 1. CDC Transaction
Stage 作业中的数据流
该数据流的详细描述如下所述。
1、源数据库的 InfoSphere CDC 服务器监控和捕获源数据库中的变更。
2、源数据库的 InfoSphere CDC 服务器根据复制定义传输变更数据。
3、InfoSphere DataStage 服务器的 InfoSphere
CDC 通过一个 TCP/IP 会话将数据发送到 CDC Transaction Stage,该会话是在复制开始时创建的。CDC
for DataStage 服务器也将定期发送一个 COMMIT 消息(以及书签信息),以标记捕获日志中的事务边界。
4、在 DataStage 作业中,数据通过链接从 Transaction
Stage 流向目标数据库连接器阶段。书签信息通过一个书签链接发送。对于每条通过 CDC for DataStage
服务器发送的 COMMIT 消息,CDC Transaction Stage 创建结束波 (EOW) 标记,这些标记通过所有输出链接发送到目标数据库连接器阶段。
5、目标数据库连接器阶段与目标数据库相连,并通过会话发送数据。当目标数据库连接器阶段在所有输入链接上收到结束波标记时,就将书签信息写入一个书签表,然后将事务提交到目标数据库。
6、CDC for DataStage 服务器定期从目标数据库上的书签表中请求书签信息。为了响应该请求,CDC
Transaction Stage 通过 ODBC 连接提取书签信息然后将其返回到 CDC for DataStage
服务器。
7、CDC for DataStage 服务器接收书签信息,该信息用于确定当复制开始时从中读取变更事务日志的起始点,以及确定现有事务日志是否可以清理干净。
书签和数据是同步提交的,因此,即使作业失败,书签信息和写入的数据也是一致的。如果作业失败,复制从书签指定点开始,因此没有数据丢失。
样例用例:使用 CDC Transaction Stage 实时更新目标数据库
本小节介绍了一个样例用例,通过使用 CDC Transaction Stage
监控源数据库更改、以及将更改数据实时更新到目标数据库。该 DataStage 作业包括一个指定关于访问
InfoSphere CDC 的详细信息的 CDC Transaction Stage,以及一个使用从
CDC Transaction Stage 接收到的数据更新目标数据库的数据库连接器阶段。DataStage
作业中的 CDC TS 包含至少两个输出链接。一个输出链接传输实际数据,第二个输出链接传输书签信息,如图
2 所示。
图 2. 样例用例
在目标数据库中实时实现变更数据更新所需步骤的详细描述如下所述。源数据库可能是源数据库服务器
InfoSphere CDC 支持的任何数据库。在这个用例中,将 Oracle 视为源数据库,DB2 视为目标数据库。
1、连接到 Oracle 数据库并使用下列 DDL 创建来源表 SOURCE_TABLE:
创建表 SOURCE_TABLE (VC1 VARCHAR(5), CH2
CHAR(5), DT3 TIMESTAMP, NU4 NUMBER, NU5 NUMBER(5,3));
2、连接到目标 DB2 数据库并使用下列 DDL 创建目标表 TARGET_TABLE
和书签表 BOOKMARK_TABLE:
创建表 TARGET_TABLE (DM_SORTKEY decimal(20),
DM_OPERATION_TYPE char(1), DM_TIMESTAMP timestamp, DM_TXID
DECIMAL(24), DM_USER varchar(30), VC1 varchar(5), CH2
CHAR(5), DT3 timestamp, NU4 double, NU5 decimal(5,3))
创建表 BOOKMARK_TABLE (DM_KEY smallint,
DM_BOOKMARK varchar(1024))
设置复制
IBM InfoSphere CDC Management Console
用于设置复制,包括添加和配置一个新订阅。
先决条件:安装和配置 CDC for Oracle、CDC for DataStage
服务器、CDC Access 服务器以及 CDC Management Console。
设置过程如下。
1、使用 CDC Access 服务器凭证登录到 InfoSphere
CDC Management Console (MC)。
2、在 CDC Management Console 的 Access
Manager 选项卡中为源表和目标表添加新数据存储。
添加一个新数据存储 datastore_orcl 来访问 Oracle
数据库。
添加一个新数据存储 datastore_ds 来访问 InfoSphere
DataStage。
图 3 显示了 datastore_ds 数据存储的 Datastore
属性窗口。
图 3. 数据存储属性
在 Connection Management 选项卡中为每个数据存储分配一个用户。图
4 显示了分配给 Admin 用户的datastore_ds。
图 4. Connection Management
选项卡
3、在 CDC Management Console 的 Configuration
选项卡中,添加一个名为 SUB001 的新订阅,选择 datastore_orcl 作为源数据库,datastore_ds
作为目标数据库。图 5 显示了为新订阅 SUB001 指定的值。
图 5. 新订阅
4、在 Subscriptions 选项卡中,右键单击需要映射源表的订阅
(SUB001),然后单击 Map Tables 选项。这将启动 Map Tables向导。
详细的表映射流程如下所述。
选择 InfoSphere DataStage,这是 Direct Connect
Method 的默认选项。然后单击 Next,如图 6 所示。
图 6. 选择映射类型
选择 DataStage 连接方法作为 Direct Connect,然后单击
Next,如图 7 所示。
图 7. 选择连接方法
Select Source Tables 页面显示源数据库中所有可用表。从该列表中,选择一个或多个需要捕获变更数据的表,如图
8 所示。
图 8. 选择源表
选择所需记录格式输出,Single Record 或 Multiple
Records 皆可,如图 9 所示。
图 9. 记录格式
查看映射详细信息,如果正确的话,单击 Finish,如图 10 所示。
图 10. 查看映射详细信息
该订阅的表映射在 Table Mappings 选项卡中显示,如图 11
所示。
图 11. 表映射
5、在 Subscriptions 选项卡中,右键单击订阅 SUB001,然后选择
InfoSphere DataStage > InfoSphere DataStage Properties。指定以下属性。
如图 12 所示,在 Direct Connect 区域中为 InfoSphere
DataStage 作业指定以下值。
在 Project Name 字段中,指定 DataStage 项目 dstage1
的名称。
在 Job Name 字段中,指定作业名 SUB001。
在 Connection Key 字段中,指定连接键 SUB001_CONNECTIONKEY。
图 12. DataStage Properties
可选:要将该作业配置为在订阅上的镜像启动时自动启动,选择 Auto-start
InfoSphere DataStage Job 复选框。要启用 auto-start 选项,PATH
环境变量必须在实例创建时包含 dsjob 可执行文件路径。
生成一个 CDC Transaction Stage 作业模板
完成前几部分介绍的设置复制过程之后,通过以下步骤生成一个 InfoSphere
DataStage (CDC Transaction Stage) 作业模板。
1、在 Management Console 中的 Configuration
选项卡的 Subscriptions 面板中右键单击 Subscription,然后单击InfoSphere
DataStage > Generate InfoSphere DataStage Job Definition。
2、在 Generate InfoSphere Job Definition
对话框中,选择您要保存模板 SUB001.dsx 的位置,然后单击 Save。
3、在计算机上复制 .dsx 文件,其中 InfoSphere DataStage
和 QualityStage Designer 文件已安装。
导入和配置作业模板
使用 DataStage Designer 将生成的作业模板导入到 DataStage
项目 dstage1。然后提供 CDC Transaction Stage 和 Target DB2 Connector
所需的信息。该过程的详细信息如下。
1、打开 DataStage Designer 客户端,单击 Import
> DataStage components,并指定 SUB001.dsx 文件路径,然后单击OK。
2、在 DataStage Repository 面板中,展开 Jobs,然后双击
SUB001 打开该作业。
3、配置 CDC Transaction Stage 的阶段级别以及链路级属性,过程如下所述。
1.在作业中双击 CDC Transaction 阶段。
2.在导航窗口中,选择如图 13 所示的阶段,然后指定所需值。
图 13. CDC Transaction
Stage 级别属性
这些属性的描述如下所述。
书签 DSN:书签表的 ODBC 数据源名称。
ODBC 用户名:访问 ODBC 数据源的用户名。
ODBC 密码:访问 ODBC 数据源的密码。
订阅:CDC 订阅的名称。CDC 服务器仅使用前 8 个字符识别订阅,因此,有必要将注册的订阅名前
8 个字符放在 CDC GUI 上,超过 8 个字符的输入字符串截断为 8 个。
端口号:与 CDC 服务器通信的端口号。
主机名:CDC 服务器的主机名。
用户名:用于访问 CDC 服务器的用户名。
密码:用于访问 CDC 服务器的密码。
心跳间隔:如果这段时间内没有变更数据,CDC 服务器以秒为单位发送心跳消息的间隔时间。
3.在导航窗口中,逐个选择输出链接,如图 14 所示,并指定所需的值。
图 14. 链路级属性
链路级属性的描述如下所述。
书签链接:如果链接是针对书签的,该值为真。
表名:这是变更数据的表名或书签表名。
4.单击 OK,然后保存作业。
4、配置 Target DB2 Connector。
1.双击 DB2 Connector 阶段打开 DB2 Connector
的 Properties 页面。
2.在该阶段的导航窗口中,选择 Bookmark 链接,并为 Table
name 属性指定 BOOKMARK_TABLE,如图 15 所示。
图 15. DB2 Connector 书签链接属性
3.在该阶段的导航窗口中,选择 SOURCE_TABLE 输入链接,并为
Table name 属性指定 TARGET_TABLE,如图 16 所示。
图 16. DB2 Connector 数据链接属性
4.在导航窗口中,选择 DB2 Connector 图标,并提供目标数据库的详细信息,如图
17 所示。
图 17. DB2 Connector 阶段级别属性
5.单击输入链接并为 Table name 属性指定 TARGET_TABLE。
5、单击 OK,然后保存作业。
6、使用 DataStage Designer 菜单编译作业。
在订阅上启动镜像并执行该作业
导入作业并像前一节那样配置该阶段之后,就可以在 InfoSphere CDC
Management Console 中启动订阅并执行该作业。该过程的细节如下所述。
1、登录到 CDC Management Console。
2、选择订阅 SUB001。
3、右键单击订阅并选择 Start Mirroring 来打开 Start
Mirroring 对话框。
4、选择 Continuous 镜像方法进行不断复制,直至订阅结束为止。
5、如果 DataStage 作业配置为自动启动,那么 DataStage
作业 SUB001 将自动开始运行。如果 DataStage 作业没有配置为自动运行,那么从 DataStage
Designer 运行作业。
6、InfoSphere CDC Management Console
中的订阅将处于连续镜像状态,且 DataStage 将连续运行。
使用变更数据更新目标表
完成前一小节描述的步骤之后,DataStage 作业和订阅将处于持续运行状态。此时,CDC
for Oracle 服务器将持续监控源数据表的变更,并捕获源表发生的任何变更。捕获的变更数据发送到 CDC
Transaction Stage,CDC Transaction Stage 进而将数据发送到 Target
DB2 Connector 以将变更数据更新到目标表,该流程如下所述。
1、连接到源数据库(Oracle 数据库)并发出以下 SQL 查询来更新
SOURCE_TABLE:
插入 SOURCE_TABLE 值 ('111','AAA');
插入 SOURCE_TABLE 值 ('222','BBB');
2、在源数据库中发出下列选择语句来查看 SOURCE_TABLE 表中的数据:
SELECT * FROM SOURCE_TABLE;
选择语句返回图 18 所示的数据。
图 18. 源表中的数据
3、将更改提交到源数据库之后,连接到目标数据库,并发出以下查询以查看目标表中的数据:
SELECT * FROM TARGET_TABLE;
选择语句返回图 19 显示的数据。
图 19. 目标表中的数据
4、发出其他查询以更新、插入和删除数据。在目标表上发出选择语句以查看变更数据如何复制到目标表。
正如上述步骤所演示的,CDC Transaction Stage 作业持续运行,一旦接收到
CDC 服务器的变更数据就立即将其更新到目标表。
在变更数据上应用业务逻辑
CDC Transaction Stage 允许您在更新目标数据库的变更数据之前,在该变更数据上应用业务逻辑相关功能。图
20 中显示的 DataStage 作业介绍了如何使用 CDC Transaction Stage 在变更数据上应用业务逻辑。
图 20. 在变更数据上应用业务逻辑
在该作业中,当将一个新订单更新到 Order 表中时,CDC Server
捕获该表中的变更,然后将变更数据传输到 CDC Transaction Stage。CDC Transaction
Stage 将变更数据传递到作业中的检查阶段。检查阶段使用 Inventory 表执行一个检查操作,然后将结果数据发送到
Sales_Table。DB2Connector (Sales_Table) 用结果数据更新目标销售表。
如上一个用例所示,CDC Transaction Stage 支持您通过使用
DataStage 提供的各种活动阶段(处理阶段),从而在变更数据上应用业务逻辑。这为根据您的业务需求在变更数据上应用各种业务逻辑提供了极大的灵活性。
集成解决方案的优势
基于 IBM InfoSphere DataStage 和 IBM InfoSphere
Change Data Capture 集成的解决方案提供以下优势。
1、通过消除冗余数据传输和节约网络带宽,从而提高运行效率、节省资源和时间。
2、帮助您使用一个解决方案制定更好的决策,该解决方案提供动态数据传输以满足特定业务需求。同时也能安全地交付敏感数据,并使其仅用于授权副本。
3、提供有保证的数据交付,以避免发生故障。
4、允许通过使用 DataStage 提供的预构建阶段传输变更数据。
5、通过执行查找集成数据。
6、在将数据交付到目标数据库之前,将自定义业务逻辑应用到变更数据。
|