使用 ICI 实现 Informix, DB2, Oracle 等关系型数据库的内容集成

作者:刘会, 软件工程师, IBM
罗曦光, 软件工程师, IBM
孙国冉, 软件工程师, IBM

本文主要介绍使用 IBM Content Integrator (ICI) 实现对关系型数据库 Informix, DB2, Oracle 的内容集成,即如何使用关系型数据库管理非结构化数据。其中包括:数据导入、模式映射、内容管理、联合查询等。

引言

关系型数据库管理系统(Relational database management systems,RDBMS)通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据,其作用就是数据管理和访问。目前业界普遍使用的关系型数据库管理系统产品有 DB2、Oracle、Informix 以及 SQL Server 等。 RDBMS 在存储和查询高度结构化信息时十分有效。

但是,在企业存储的大量数据中,关系型数据库管理系统所处理的结构化数据仅占数据信息总量的 15% ;而全球 85% 的信息是非结构化的,包括文件、报告、视频和音频、照片、传真、信件等。如何管理这些非结构化信息,已经成为传统结构化数据管理的一大难题。

IBM Content Integrator (ICI) 提供企业级的内容集成服务,它可以完成企业应用软件和多个存储库中内容(文档、图片、音频、视频、以及其他半结构化、非结构化数据)的整合。应用程序开发人员通过 ICI 提供的 Java 接口,可以方便地访问不同的内容存储库,并将它们集成到一个新的或者已经存在的企业应用程序中。

ICI 提供了对近 20 种内容管理产品的集成,例如:FileNet P8 Content Manager, IBM DB2 Content Manager, IBM Lotus Notes, Opentext Livelink, EMC Documentum, Microsoft SharePoint, Microsoft NTFS, RDBMS 等。其中,RDBMS 包含三种数据源:Informix, DB2, Oracle 。

试想,如果一个企业最初使用了关系型数据库进行结构化数据的管理,接着随着企业的发展壮大和信息量的增加,该企业需要存储和管理非结构化数据。如何才能最低成本的实现非结构化数据的存储和管理呢?无疑 ICI 提供了非常好的解决方案。本文以 Informix 数据源为例,详细介绍了如何使用 ICI 管理关系型数据库中的非结构化数据。

使用 ICI 实现对 Informix 数据库的内容集成

数据导入

ICI 所管理的内容也就是存储在数据库表中的数据。首先,我们要通过 Infomix 命令行工具创建数据表并导入数据。

1. 运行 “ dbaccess ” 进入命令行模式;

2. 选择要操作的数据库,点击 “ Choose ” 选择要执行的 SQL 脚本 , 或者点击 ” New ” 新建一条 SQL 语句;

3. 点击 “ Run ” 执行 SQL 脚本,创建数据表。

图 1 显示了数据表 TestContent 的数据结构,下面,我们要向数据表 TestContent 导入数据。

当 ICI 连接器运行在 windows 操作系统下时,使用如下 sql 语句:

insert into TestContent (id,employee,contentname,mimetypevalue,external_attach, 
 character_type,date_type,timestamp_type,integer_type,double_type,decimal_type) 
 values(1,'aaa','BusinesscardForm.doc','application/msword', 
 'C:\p4src\vbr\testcases\testcontent\BusinesscardForm.doc', 
 'b','07/31/2008','2008-07-31 16:05:56',1234,0.11,15.3);


图 1. 执行 sql 语句,创建数据表
图 1.执行 sql 语句,创建数据表

ICI 不仅可以通过文件路径实现对文件系统中的非结构化数据进行管理,对于数据库中的智能化大对象,如:BLOB 字段和 CLOB 字段,ICI 也提供了相应的功能。当数据库表中定义了 BLOB 或 CLOB 字段时,我们可以通过在 insert 语句中使用函数 filetoblob() 或 filetoclob() 完成数据导入。以 BLOB 字段为例,相应 SQL 语句如下:

insert into TestContent (id,employee,contentname,mimetypevalue,external_attach, 
 character_type,date_type,timestamp_type,integer_type,double_type,decimal_type) 
 values(1,'aaa','BusinesscardForm.doc','application/msword', 
 FILETOBLOB('C:\p4src\vbr\testcases\testcontent\BusinesscardForm.doc','client'), 
 'b','07/31/2008','2008-07-31 16:05:56',1234,0.11,15.3);

使用 ICI 创建映射模式

通过 ICI 访问关系型数据库管理系统,首先我们要配置 RDBMS 连接器。

如图 2 所示,在 Administartion tool 中新建一个 RDBMS 连接器,并配置连接器属性,保证连接器可以正常工作。

Informix 数据库连接属性:

JDBC Driver Class: com.informix.jdbc.IfxDriver 
 JDBC URL: jdbc:informix-sqli://:/:informixserver=


图 2. 新建 RDBMS 连接器及连接器属性配置
图 2. 新建 RDBMS 连接器及连接器属性配置

然后,点击 “ Design RDBMS Connector ” 设计连接器中的模式映射。在设计器(RDBMS Designer)中,我们可以将数据库中的表 (tables)、视图 (views)、同义词 (synonyms) 映射成 ICI 中的项目类(item classes)。对于使用过 Informix 数据库的用户来说,表和视图都非常熟悉,我们简单解释一下同义词:例如,在 DB2 中,用户可以通过创建昵称(Nicknames)实现关系型数据库(Informix, Oracle)或非关系型数据(Excel、XML 文档)到 DB2 的映射,同义词对应的就是 DB2 中的昵称。

在对表、视图或者同义词进行检索时,ICI 提供了实体过滤(Entity filter)功能,如图 3 所示。用户可以在实体过滤框中输入表名进行特定表的查询;也可以直接点击查询按钮,数据库中的所有表都会被查询并且显示。


图 3. 实体过滤面板
图 3. 实体过滤面板

选择要映射的表,然后依次将表中的每一列映射到 ICI 的项目类中,如图 4,图 5 所示。在文章开始,我们提到通过使用 ICI 可以实现关系型数据库管理非结构化数据,实现的关键见图 5 中红色方框。数据库列“ external attach ”中存放的是文件路径,例如:C:\p4src\vbr\testcases\testcontent\BusinesscardForm.doc,通过 ICI 的模式映射,我们可以直接通过文件路径对文件进行操作,比如:打开、查询、更新、查看文件属性等。


图 4. 数据库中的列到项目类中属性的映射
图 4. 数据库中的列到项目类中属性的映射

图 5. 外部文件到项目类的映射
图 5. 外部文件到项目类的映射

所有列映射完成后,我们可以看到图 6 所示的项目类编辑 (Item Class Editor) 界面。


图 6. 项目类编辑面板
图 6. 项目类编辑面板

内容管理

ICI 提供多种内容管理工具:包括命令行工具(Command Line),图形化工具 (Repository Browser) 等。在 IICE8.3 以及之前的版本中,还支持 Web 页面的客户端。

ICI 命令行工具支持创建内容文件,修改内容文件,查询内容文件等多种操作。我们将在下面的联合查询一节里详细介绍如何使用命令行工具。

ICI 存储库浏览器(Repository Browser)是内容管理的图形工具。与使用命令行执行操作相比,存储库浏览器更加简单、直观,非常适用于初次接触并使用 ICI 的用户。利用该工具,对各个内容文件的浏览、属性查看、查询等操作将变得非常简便。下图 7 显示了通过存储库浏览器执行文件打开操作:


图 7. 存储库浏览器中文件打开操作
图 7. 存储库浏览器中文件打开操作

此外,我们可以点击图 7 中的 RepoItem.toString() 查看文件属性。


图 8. 文件属性面板
图 8. 文件属性面板

ICI 提供了两种内容查询方式:属性查询和全文检索。图 9 显示了如何通过 ICI 存储库浏览器实现文件查询操作。


图 9. 查询操作
图 9. 查询操作

以上这些操作通过命令行工具也都可以实现。

使用 ICI 实现对 DB2、Oracle 的内容集成

通过 ICI 集成关系型数据库 DB2、Oracle,首先要向数据库中导入数据; 然后,配置 RDBMS DB2 和 RDBMS Oracle 连接器,连接器属性如下图所示。

DB2 数据库连接属性:

JDBC Driver Class: com.ibm.db2.jcc.DB2Driver 
 JDBC URL: jdbc:db2://:/


图 10. DB2 数据库连接属性
图 10. DB2 数据库连接属性

Oracle 数据库连接属性:

JDBC Driver Class: oracle.jdbc.OracleDriver 
 JDBC URL: jdbc:oracle:thin:@::


图 11. Oracle 数据库连接属性
图 11. Oracle 数据库连接属性

配置完毕并测试连接成功后就可以创建映射模式,并使用 ICI 来管理 DB2 和 Oracle 数据库中的内容了。在这里创建映射模式的方式与 Informix 数据库相同;数据库内容管理,既可以使用命令行工具,也可以使用图形化工具。

联合查询

从 IICE8.4 开始,提供了对多种数据源联合查询的功能。

执行联合查询之前,需要创建数据映射(Data map)。数据映射就是将不同数据源中的属性名映射成一个简单通用的属性名。例如,在 Informix 数据库中,文件名字段为:contentname ;在 DB2 数据库中,文件名字段为:FILENAMEVALUE 。创建数据映射以后,我们可以用通用属性名 Name 来代替它们。如下图 12 所示:


图 12. 数据映射面板
图 12. 数据映射面板

在上述连接器配置的部分已经配置好了 RDBM Informix 连接器和 RDBMS DB2 连接器,名为 RDBMS_Informix11、RDBMS_DB2 。那么在执行联合查询命令时,存储库名就可以指定为 RDBMS_Informix11,RDBMS_DB2 ;此外,我们将查询条件设定为:文件名不为空;查询结果最大值设定为 5 。联合查询命令如下图 13 所示:


图 13. 联合查询命令
图 13. 联合查询命令

从下图 14 的输出结果可以看到,Informix 数据库和 DB2 数据库分别有 5 条记录返回:


图 14. 查询结果输出
图 14. 查询结果输出

总结

经过 ICI 集成,可以实现关系型数据库 Informix, DB2, Oracle 管理非结构化数据——文档、图片、音频、视频、BLOB 字段、CLOB 字段等;而且,用户可以通过同一接口访问并操作多种异构数据源,就像在访问一种数据源一样。 ICI 为企业级用户提供了一套非常优秀的内容管理集成方案。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-611983/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15082138/viewspace-611983/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值