要资料 文章 文库 视频 Code iProcess 课程 角色 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
 
     
   
分享到
使用IBM InfoSphere CDC Transaction Stage实现高效的数据获取
 
作者 Kiran Kumar Jogu ,火龙果软件    发布于 2013-11-25
 

摘要: 文介绍一个基于 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、在将数据交付到目标数据库之前,将自定义业务逻辑应用到变更数据。

相关文章

我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
 
相关文档

数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
相关课程

高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
 
分享到
 
 


MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...   
 
 
 
 
 
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号