| 免费下载:IBM® DB2® Express-C 9.7.2 免费版 或者 DB2® 9.7 for Linux®, UNIX®, and Windows® 试用版 |
|---|
| 下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。 |
InfoSphere Federation Server 为 LUW 平台提供了一种高效的,功能强大的多种数据源集成方案,支持包括 32/64 位平台的 DB2, SQL Server, Oracle, Sybase, Teradata, Informix 等多种关系型数据库,同时支持 xml,flat 等非关系型数据,支持 ODBC 和 JDBC 的标准数据库接口。它可将分散的数据系统中的数据联合到单个整合的视图中,同时保持各个数据源中数据的独立性和完整性,降低编译实时业务信息的成本,增加商业价值。但是,对于大型机常用的数据库系统,如 VSAM,CICS,IMS,DB2 for zOS,Adabas 等,Federation server 可以对 DB2 for zOS 进行支持,而对于其它数据库系统因为缺少接口,暂时不能直接进行集成。
InfoSphere Classic Federation Server 则是一个对大型机的数据库和文件进行标准 SQL 访问并且无需对大型机进行编程的完全的,功能强大的解决方案,可以支持 Sequential, VSAM,CICS VSAM,IMS,DB2 for zOS,CA-Datacom,CA-IDMS,Adabas 等多种文件和数据库,除了对大型机数据源提供 SQL 标准进行访问外,还可对物理大型机的数据库和文件进行逻辑映射,并且支持使用 ODBC,JDBC 和 CLI 的基于标准的接口访问。
在客户现实的生产环境中,往往同时需要多种数据源对业务进行支持,为了满足客户对大型机数据与 LUW 数据集成的需求,即需要同时整合大型机数据库和 LUW 数据库到同一单个视图并进行透明操作, 可将已经整合多个大型机数据源的 Classic Federation Server 作为 Federation Server 的一个数据源,通过 ODBC 接口,再次和 LUW 的各种数据源进行整合,从而建立统一的视图。客户可以使用这个虚拟数据库,透明地操作大型机与 LUW 的数据。减少在大机型与 LUW 之间进行物理迁移的代价,减少集成的代码工作量,减少应用程序的维护成本,屏蔽大型机与 LUW 各种数据语义和地理上的差别,使用已有的 SQL 工具访问所有数据。
本文以大型机上常见的 IMS,Adabas 数据库为例,阐述如何使用 Classic Federation Server 对 IMS 和 Adabas 数据库进行集成,并如何通过 Federation Server 再次将集成了上述两种大型机数据库的 Classic Federation Server 与 Oracle 和 Sybase 进行集成,以实现大型机上 IMS,Adabas 数据库与 LUW 上 Oracle,Sybase 数据库的联合访问。
利用 Classic Federation Server(CF Server)集成 IMS 与 Adabas 过程解析
首先,我们分析如何通过 CF Server 实现大型机上不同数据库之间的集成。如图 1 所示,CF Server 通过不同接口与大型机上各种数据库进行连接,并将各个数据库(关系或者非关系型)中表的物理与逻辑映射关系存储在元数据目录(Metadata Catalog)中,最终通过统一的 ODBC/JDBC 接口透明地访问各个不同数据库。
图 1.Classic Federation
假定 CF Server 基于的 LOAD LIB(如下图 2)已经存,IMS V11 与 Adabas 822 也已经安装并启动(如下图 3,4)。由于 IMS 和 Adabas 数据库建表过程复杂,本文不再赘述,可以查阅相关文档或者寻找专业 DBA 协助建表,本示例假定实验所需的两种数据库表均以建好并导入实验数据。
图 2.LOAD LIB
图 3.IMS V11
图 4.Adabas 8.2.2
二:创建并导入 Classic Federation Server 的配置文件
首先需要创建并初始化 CF Server 的配置文件,配置数据服务器和其中运行的服务等,对于特殊的数据源,还需要额外配置这些数据源的接口和初始化服务等参数。CAC.V101.TEST.SCACSKEL(CACCFGCS) 提供了创建并初始化配置文件的一个范例,本示例环境使用 QA.CSDL.V101.GWADABAS.JCLLIB(CACCFGDB) 创建并初始化 CF Server 的配置文件:QA.CSDL.V101.GWADABAS.CACCFGD 和 QA.CSDL.V101.GWADABAS.CACCFGX。
配置数据服务器时,需要配置查询处理器 CACQP 和连接处理器 CACINIT,其中查询处理器的服务名即为 CF Server 所代表的虚拟数据源名,CACINIT 中的 COMMSTRING 参数,指定了 CF Server 运行的主机名和端口,客户机将根据上述信息对 CF Server 进行连接访问。服务中其他未指定参数采用默认值即可,上述两种服务的配置如下图 5,6 所示:
图 5.CACQP
图 6.CACINIT
另外,由于 IMS 和 Adabas 都属于特殊数据源,还需要额外配置其访问接口:
本示例中搭建的 CF Server 采用 DRA 接口访问 IMS,其相应配置如下图 7 所示:
图 7.CF Server 对用 IMS DRA 接口访问的数据服务器的配置
其中,DRATABLESUFFIX 指定了 DRA 启动表的后缀名,DRA 启动表(DFSPZPxx)位于 IMS 装载库 IMSVS.IMB1.SDFSRESL 中(如下图 8 所示),DRAUSERID 指定了用于连接和注册 DBCTL 的默认 DRA 用户名,DEFAULTPSBNAME 指定了创建 IMS 表时默认使用的 PSB 名,其他未指定参数均采用默认值。
图 8.DRA 启动表
对 Adabas 数据库的访问,无需配置 CF Server 的数据服务器,但需编译 Adabas 数据库的访问接口模块放在 CF Server 的装载库中(如下图 9 所示)。CAC.V101.TEST.SCACSKEL(CACADAL) 提供了编译 Adabas 数据库接口模块的一个范例,本示例环境使用 QA.CSDL.V100.CFADABAS.JCLLIB (CACADAL0) 对 Adabas 数据库的接口模块进行编译,编译过程中用到的 CF Server 相关模块和 Adabas 相关模块分别位于 CF Server 和 Adabas 822 数据库的 LOAD LIB 中。
图 9. Adabas 访问接口模块
上述配置信息按照特定格式放在一个单独的文件中(具体的文件格式可以参看 CF Server 的用户手册),通过配置导入命令 IMPORT,CONFIG,FILENAME= **** 导入到上述创建好的配置文件中。CAC.V101.TEST.SCACSKEL(CACCFGUT) 定义了导入文件配置的一个范例,本示例环境使用 QA.CSDL.V101.GWADABAS.JCLLIB(CACCFGUT) 导入 CF Server 的配置信息。
三:创建元数据目录并对 IMS 和 Adabas 数据库的物理表进行逻辑映射
元数据目录是一个关系表的集合,包含了如何将数据从非关系格式转化成关系格式的信息,当客户机应用程序的 SQL 请求传递至 CF Server,其数据服务器的查询处理器则需访问存储在这个目录中的信息来查询或者更新大型机上的数据源。
首先需要创建元数据目录,CAC.V101.TEST.SCACSKEL(CACCATLG) 定义了创建并初始化元数据目录的一个范例,本示例环境使用 QA.CSDL.V101.GWADABAS.JCLLIB(CACCATLG) 创建并初始化 CF Server 所需元数据目录 QA.CSDL.V101.GWADABAS.CACCFGD 和 QA.CSDL.V101.GWADABAS.CACCFGX。
接下来需要将 IMS 和 Adabas 的数据表映射到上述创建的元数据目录中,其中数据表的信息是按照标准的 SQL 格式存放在文件上,然后通过映射数据表的 JCL,即可将大型机上不同种类的数据库表按照统一的 SQL 标准,映射到元数据目录中。CAC.V101.TEST.SCACSKEL(CACMETAU) 定义了如何映射数据表到元数据目录的一个范例,本示例环境使用 QA.CSDL.V101.GWADABAS.JCLLIB(CACMETAU) 将 IMS 和 Adabas 的数据表映射至 CF Server 的元 数据目中,IMS 和 Adabas 数据表的定义分别放在 QA.RGT.USEGRMR(IEMPL) 和 QA.RGT.USEGRMR(ADABASUG) 中。在提交此 JCL 之前,CF Server 应处于启动状态。
四:通过 CF Server,实现 IMS 和 Adabas 数据表的联合查询
在数据表成功地被映射置至 CF Server 的元数据目录后,即可通过标准的 OCDB/JDBC/CLI 接口对 IMS 和 Adabas 的数据表进行联合查询,本文仅示例如何通过 ODBC 接口进行联合查询,步骤如下:
- 在实验客户机上安装 CF 的客户端;
- 配置 ODBC 访问配置文件 cac.ini,CF 客户端的安装路径 /ODBC/bin 下面提供了 cac.ini 的配置范例;
- 添加 windows 的用户变量 CAC_CONFIG=cac.ini;
- 打开 CMD 窗口,运行命令 clisamp,并输入用户名和密码;
- 输入要执行的 SQL 语句。
实验结果如下图 10 所示:
图 10. 通 ODBC 接口实现 IMS 和 Adabas 的联合访问
至此,通过 CF Server 集成 IMS 与 Adabas 的过程解析完毕。
利用 Federation Server 集成 CF Server 与 Oracle 和 Sybase 过程解析
如图 11 所示,Federation Server 可通过 ODBC 接口访问 CF Server,并将其作为数据源,与 LUW 上其他数据库进行集成以实现联合访问。本例以 CF Server 与 Oracle 和 Sybase 进行整合为例介绍如何使用 Federation Server 最终达到 IMS、Adabas、Oracle 和 Sybase 两种平台四种类型的数据整合。本示例假定实验所需的 Oralce,Sysbase 数据表均以建好并导入实验数据。
图 11. Federation Server
- 安装 Federation Server 以及各数据源客户端
服务器需要安装 Federation Server 以及访问各数据源的客户端:CF client,Oracle client,Sybase client。具体步骤请参考各产品的安装说明。
- 在 Federation Server 中配置各 client 的信息
此过程可在 Federation Server 安装过程中按照提示完成,如图 12 所示,或者在安装完 Federation Server 后通过编辑 db2dj.ini 来完成。假设本示例环境所搭建的 instance 为 db2inst1, db2dj.ini 的位置一般在 /home/db2inst1/sqllib/cfg 目录下。本示例通过编辑 db2dj.ini 来实现。
图 12. 在 Federation Server 配置各 client 的信息
不同的数据源需要配置的信息不同:
清单 1.CF client:
DJX_ODBC_LIBRARY_PATH= < CF client 的 CLI lib 路径 > CAC_CONFIG= < cac.ini 文件的位置 > DB2LIBPATH= < CF client 的 CLI lib 路径 > LD_LIBRARY_PATH= < CF client 的 CLI lib 路径 > LIBPATH= < CF client 的 CLI lib 路径 > DB2ENVLIST = LIBPATH |
清单 2.Oracle client:
ORACLE_HOME= < Oracle client 的安装路径 > TNS_ADMIN= < tnsnames.ora 文件所在路径 > |
清单 3.Sybase client:
SYBASE= < Sybase client 的安装路径 > SYBASE_OCS = < OCS > |
值得注意的是,编辑 db2dj.ini 后需要重新启动 instance,通过运行 db2stop;db2start 完成。
- 配置各数据源的连接信息
各数据源的连接信息的配置有所不同:
CF client:
通过编辑 cac.ini 文件来完成,CF 客户端的安装路径 /ODBC/bin 下面提供了 cac.ini 的配置范例。
Oracle client:
需要在 tnsnames.ora 文件里添加所访问的 Oracle server 的连接信息:Server IP/HOST, Port, Database Name 等信息。如下例,本文将所连接的 Oracle server 命令为 ora10g,将其作为 Oracle Server 的 node 名。
清单 4.连接的 Oracle server
ora10g =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = >IP/host>)(PORT = >PORT>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <oracledb>)
)
)
|
Sybase client:
需要在 interfaces 文件里添加所访问的 Server 连接信息,如下例。sybase1 将作为 Sybase server 的 node 名。
清单 5.连接的 Sybase server
sybase1
master tcp ether <IP> <PORT>
query tcp ether <IP> <PORT>
|
二:通过 Federation Server,实现 IMS、 Adabas、Oracle、Sybase 数据源的联合查询
环境配置完后,就可以使用 Federation Server 对各数据源进行整合操作了。在整合操作之前需要完成一系列准备工作,对各数据源建立 Wrapper、Server、User Mapping。具体分为几个步骤:
清单 6. 步骤一:设置 DBM, 使能 Federation Server 功能
db2 update dbm cfg using federated yes DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed successfully. SQL1362W One or more of the parameters submitted for immediate modification were not changed dynamically. Client changes will not be effective until the next time the application is started or the TERMINATE command has been issued. Server changes will not be effective until the next DB2START command. db2stop SQL1064N DB2STOP processing was successful. db2start SQL1063N DB2START processing was successful. |
清单 7. 步骤二:建立 Federation DB
db2 create db test DB20000I The CREATE DATABASE command completed successfully. |
清单 8. 步骤三:Catalog CF server
catalog tcpip node GW10ADAS remote <CF_server_IP> server <PORT> DB20000I The CATALOG TCPIP NODE command completed successfully. DB21056W Directory changes may not be effective until the directory cache is refreshed. catalog db DSN2 at node GW10ADAS DB20000I The CATALOG DATABASE command completed successfully. DB21056W Directory changes may not be effective until the directory cache is refreshed. |
清单 9.步骤四:建立 ODBC wrapper,用来访问 CF Server,进而访问 IMS、 Adabas 数据源
connect to test Database Connection Information Database server = DB2/AIX64 9.1.B SQL authorization ID = db2isnt1 Local database alias = TEST create wrapper ODBC library 'libdb2rcodbc.a' options (DB2_FENCED 'Y', MODULE '<cf_lib>') DB20000I The SQL command completed successfully. create server DATASTORE2 type odbc version 3 wrapper ODBC authorization "<userid_cf>" password "<password_cf>" options (node 'GW10ADAS', dbname 'DSN2', CODEPAGE '<cf_codepage>') DB20000I The SQL command completed successfully. create user mapping for user server DATASTORE2 options ( REMOTE_AUTHID '<userid_cf>', REMOTE_PASSWORD '< password_cf>' ) DB20000I The SQL command completed successfully. |
清单 10.步骤五:建立 Oracle wrapper,用来访问 Oracle 数据源
create wrapper NET8 library 'libdb2net8.a' options (DB2_FENCED 'Y') DB20000I The SQL command completed successfully. create server DATASTORE3 type oracle version 10.1 wrapper NET8 authorization "<userid_oragt;" password "<password_oragt;" options (node 'ora10g', password 'Y', pushdown 'Y') DB20000I The SQL command completed successfully. create user mapping for user server DATASTORE3 options ( REMOTE_AUTHID '<userid_oragt;', REMOTE_PASSWORD '<password_oragt;' ) DB20000I The SQL command completed successfully. |
清单 11.步骤六:建立 Sybase wrapper,用来访问 Sybase 数据源
create wrapper CTLIB library 'libdb2ctlib.a' options (DB2_FENCED 'Y') DB20000I The SQL command completed successfully. create server DATASTORE4 type sybase version 15.0 wrapper CTLIB authorization "<userid_syb>" password "< password_syb>" options (node 'sybase1', dbname '<sybasedb> ’ , password 'Y', pushdown 'Y') DB20000I The SQL command completed successfully. create user mapping for user server DATASTORE4 options ( REMOTE_AUTHID '<userid_syb >', REMOTE_PASSWORD '<password_syb>' ) DB20000I The SQL command completed successfully. |
以下是联合查询的实验结果:
使用 Federation Server 查询 Adabas 数据源中的 employees 表信息,如图 13 所示:
图 13. Adadbas_employees
使用 Federation Server 查询 IMS 数据源中的 employees 表信息,如图 14 所示:
图 14. IMS_employees
使用 Federation Server 查询 Oracle 数据源中的 departments 表信息,如图 15 所示:
图 15. Oracle_departments
使用 Federation Server 查询 Sybase 数据源中的 orders 表信息,如图 16 所示:
图 16. Sybase_orders
使用 Federation Server 实现 employees 表,orders 表,departments 表的联合查询,如图 17 所示:
图 17. Conjunctive_query
其中,employees 表位于 IMS, Adabas 数据源,orders 表位于 Sybase 数据源,departments 位于 Oracle 数据源。
至此,这个大型机与 LUW 数据整合系统就部署好了,用户无需考虑不同数据库之间的语法差异,无需编译复杂的 JCL 和 COBOL 程序,就能对 IMS,Adabas,Oracle,Sybase 四种数据库实现完全透明的,可重复的联合访问。如果需要部署更多的大型机数据库,只需要在 Classic Federation 端配置相应的接口并对数据库中的物理表做映射;如果需要部署更多的 LUW 机数据,只需安装并配置对应的客户端接口,建立对应的 Wrapper Server。通过本文,读者可以了解使用 Classic Federation Sever 和 Federation Server 进行数据整合的基本原理,以及部署一个复杂的数据整合环境,为读者提供一个初步了解和使用 Classic Federation Sever 和 Federation Server 的机会。
学习
- 通过 Information Management 专区中的 InfoSphere 专题,可了解到 Classic 产品和 Federation 产品的更多知识,并了解其他 InfoSphere 产品的信息。
- 在
developerWorks Information Management 专区:了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
-
随时关注 developerWorks技术活动和 网络广播。
获得产品和技术
- 下载
IBM 产品评估版或 在线试用 IBM SOA Sandbox,并开始使用来自 DB2®,Lotus®,Rational®,Tivoli®和 WebSphere®的应用程序开发工具和中间件产品。
讨论
- 参与论坛讨论。
- 加入
developerWorks
博客,并加入 My developerWorks 中文社区;您可以通过个人档案和定制主页获得符合自己的兴趣的 developerWorks 文章,并与其他 developerWorks 用户进行交流。

