内容


IBM InfoSphere Federation Server V9.7 中的新增功能

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分:

敬请期待该系列的后续内容。

此内容是该系列的一部分:

敬请期待该系列的后续内容。

1. 数据类型的改进

1.1 新数据类型 DECFLOAT 及其对 NUMBER 类型的支持

DECFLOAT( 十进制浮点数 ) 是 DB2 数据库产品中的一个内置 SQL 数据类型。在 IBM InfoSphere Federation Server V9.7 中引入了对该数据类型的支持,这意味着将在远程数据源的 DECFLOAT 与本地联邦数据库中的 DECFLOAT 建立起类型映射,它使得我们可以通过联邦数据库透明访问和操作远程的 DECFLOAT 类型。

借助于 DECFLOAT 数据类型,IBM InfoSphere Federation Server V9.7 中进一步添加了对 NUMBER 数据类型的支持,通过设置 DB2 数据库为 NUMBER 兼容模式,我们可以在 SQL 语法中灵活使用 NUMBER 数据类型。

对 NUMBER 数据类型的支持,本地联邦数据库有两种运行模式:

  • 默认模式:该模式下不支持 NUMBER 数据类型;
  • NUMBER 兼容模式:该模式下支持 NUMBER 数据类型

可以在创建数据库之前,通过设置系统变量 DB2_COMPATIBILITY_VECTOR,指定该数据库的 NUMBER 兼容性,具体如下:

DB2_COMPATIBILITY_VECTOR=10

对 NUMBER 数据类型的支持,远程数据源可以是 DB2 LUW V9.5 及之后版本或者 Oracle 。在本地联邦数据库,引入了服务器变量 NUMBER_COMPAT,用于指示远程数据源是否具有 NUMBER 兼容性。变量的有效值为“ Y ”和“ N ”,默认值为“ N ”,该变量仅在 IBM InfoSphere Federation Server V9.7 及之后有效。

这样在本地联邦数据库和远程数据源之间就形成了四种组合运行模式,如图 1 所示,分别为:

  • 非 NUMBER 兼容的联邦数据库与非 NUMBER 兼容的远程数据源相连;
  • 非 NUMBER 兼容的联邦数据库与 NUMBER 兼容的远程数据源相连;
  • NUMBER 兼容的联邦数据库与非 NUMBER 兼容的远程数据源相连;
  • NUMBER 兼容的联邦数据库与 NUMBER 兼容的远程数据源相连。

其中需要注意到是,(a)(b) 运行模式在 IBM InfoSphere Federation Server V9.7 之前就已经存在了,所不同的是 (b) 模式在远程兼容数据源上扩展了兼容 NUMBER 的 DB2 LUW ;而 (c) 和 (d) 模式则是新加入的两种运行模式。

图 1. 联邦数据库与远程数据源在 NUMBER 兼容上的组合运行模式
图1. 联邦数据库与远程数据源在NUMBER兼容上的组合运行模式
图1. 联邦数据库与远程数据源在NUMBER兼容上的组合运行模式

1.2 新数据类型 DECFLOAT 及其对 NUMBER 类型的支持

VARCHAR2 是 IBM InfoSphere Federation Server V9.7 中提供的一个新数据类型,该类型在 DB2 V9.5 中已经存在,它实际上是 VARCHAR 的同义词,在内部表示上与 VARCHAR 是一致的。 VARCHAR2 类型的引入使得我们可以在联邦数据库 SQL 语句中方便的使用该类型。

我们知道,CHAR 的长度是固定的,当字符的存储长度小于其定义的长度时,多余存储位将用空格补齐。而 VARCHAR2 则不同,它并不做空格的补齐,因此其长度是变化的,实际存储的长度因字符集的不同而不同。

IBM InfoSphere Federation Server V9.7 中的 VARCHAR2 在字符串语义上与 Oracle 中的 VARCHAR2 是类似的,它们将数据库中 VARCHAR 列可以存储空字符串的特性改为存储 NULL 值,这点与 CHAR 数据类型的性质也是一样的。因此当一个标量函数返回 0 长度的 CHAR 或者 VARCHAR 时,实际上将被当作 NULL 值处理。

对 VARCHAR2 语义的支持,本地联邦数据库有两种运行模式:

  • 默认模式:该模式下不支持 VARCHAR2 语义;
  • VARCHAR2 语义兼容模式:该模式下支持 VARCHAR2 语义

可以在创建数据库之前,通过设置系统变量 DB2_COMPATIBILITY_VECTOR,指定该数据库的 NUMBER 兼容性,具体如下:

db2set DB2_COMPATIBILITY_VECTOR=20

支持 VARCHAR2 的远程数据源可以是 DB2 LUW V9.5 及之后版本或者 Oracle 。在本地联邦数据库中,通过引入服务器变量 VARCHAR2_COMPAT,指示远程数据源是否具有 VARCHAR2 兼容性。同时还引入了另一个服务器变量 NO_EMPTY_STRING,用于指示远程数据源的列是否包含空字符串,以更方便的进行 SQL 语句本地或远端执行的 PUSHDOWN 分析。

结合本地联邦数据库和远程数据源之间各自是否具有 VARCHAR2 语义兼容的模式,它们的连接有四种可能组合,如图 2 所示,分别为:

  • 非 VARCHAR2 语义兼容的联邦数据库与非 VARCHAR2 语义兼容的远程数据源相连;
  • 非 VARCHAR2 语义兼容的联邦数据库与 VARCHAR2 语义兼容的远程数据源相连;
  • VARCHAR2 语义兼容的联邦数据库与非 VARCHAR2 语义兼容的远程数据源相连;
  • VARCHAR2 语义兼容的联邦数据库与 VARCHAR2 语义兼容的远程数据源相连。

其中需要注意到是,(a)(b) 运行模式在 IBM InfoSphere Federation Server V9.7 之前就已经存在了,所不同的是 (b) 模式现在可以支持 DB2 VARCHAR2 语义兼容的数据源;而 (c) 和 (d) 模式则是新加入的两种运行模式。

IBM InfoSphere Federation Server V9.7 中对 VARCHAR2 语义的支持主要体现在当与远程数据源连接时的一些基于字符的操作上。本地联邦数据库与远程数据源的 VARCHAR2 语义是否一致将影响包含字符相关操作的 SQL 语句在本地或远端执行的 PUSHDOWN 分析。

图 2. 联邦数据库与远程数据源在 VARCHAR2 兼容上的组合运行模式
图2. 联邦数据库与远程数据源在VARCHAR2兼容上的组合运行模式
图2. 联邦数据库与远程数据源在VARCHAR2兼容上的组合运行模式

1.3 TIMESTAMP(p) 数据类型增强及其对 DATE 类型的支持

TIMESTAMP 是一个由七部分组成的值 ( 年、月、日、小时、分钟、秒和微秒 ),而 TIMESTAMP(p) 则是对 TIMESTAMP 的微秒部分加入了精度的设置,其中 p 代表精度,用于表示微秒的小数位数,参数 p 的可选值为 [0,12] 。当不指定 p 参数时,TIMESTAMP 的默认精度为 6,即 TIMESTAMP(6) 。当前 , IBM InfoSphere Federation Server V9.7 的函数全面支持 TIMESTAMP 的参数化类型 TIMESTAMP(p) 。

IBM InfoSphere Federation Server V9.7 中 TIMESTAMP(p) 参数化类型的引入使得我们可以在具有不同精度的远程数据源和本地联邦数据库的 TIMESTAMP 之间建立起类型映射,而且映射的精度是可以灵活指定的,系统会自动对其进行适当的填充或截断处理,也就是说,它使得我们可以通过联邦数据库透明访问和操作远程的 TIMESTAMP 类型。

随着 TIMESTAMP(p) 参数化类型的引入,IBM InfoSphere Federation Server V9.7 中进一步增强了 DATE 数据类型,通过设置 DB2 数据库为 DATE 兼容模式,系统将使用 TIMESTAMP(0) 对 DATE 进行内部的表示。可以在创建数据库之前,通过设置数据库的系统变量 DB2_COMPATIBILITY_VECTOR,指定该数据库的 DATE 兼容性,具体如下:

db2set DB2_COMPATIBILITY_VECTOR=40

那么根据是否对 DATE 类型具有兼容性,本地联邦数据库有两种运行模式:

  • 默认模式:该模式下不兼容 DATE 数据类型;
  • DATE 兼容模式:该模式下兼容 DATE 数据类型。

对于远程数据源,联邦数据库也引入了新的服务器变量 DATE_COMPAT,用于指示远程数据源是否具体 DATE 兼容性。变量的有效值为“ Y ”和“ N ”,默认为“ N ”,该变量仅在 IBM InfoSphere Federation Server V9.7 及之后有效。

当在本地联邦数据库和远程数据源建立连接时,综合本地和远程的 DATE 是否兼容性特性,可以形成如下的四种组合运行模式。如图 3 所示,分别为:

  • 非 DATE 兼容的联邦数据库与非 DATE 兼容的远程数据源相连;
  • 非 DATE 兼容的联邦数据库与 DATE 兼容的远程数据源相连;
  • DATE 兼容的联邦数据库与非 DATE 兼容的远程数据源相连;
  • DATE 兼容的联邦数据库与 DATE 兼容的远程数据源相连。

其中需要注意到是,(a)(b) 运行模式在 IBM InfoSphere Federation Server V9.7 之前就已经存在了,所不同的是 (b) 模式在远程兼容数据源上扩展了兼容 DATE 的 DB2 LUW ;而 (c) 和 (d) 模式则是新加入的两种运行模式。

本地联邦数据库与远程数据源的 DATE 兼容性是否一致将影响包含 TIMESTAMP 或 DATE 的 SQL 语句在本地或远端执行的 PUSHDOWN 分析。

图 3. 联邦数据库与远程数据源在 DATE 兼容上的组合运行模式
图3. 联邦数据库与远程数据源在DATE兼容上的组合运行模式
图3. 联邦数据库与远程数据源在DATE兼容上的组合运行模式

1.4 隐式类型转换支持

DB2 倡导弱类型定义语言。所谓弱类型,是指一种类型可以被忽略的语言,这样对象的类型将由它的使用环境决定,不同的使用环境将对应不同的对象类型。为了方便用户的透明使用,在对象类型的确定过程中,将不可避免的发生隐式类型的转换。例如,两个类型不匹配的对象在发生比较或赋值操作时,其中一个对象的类型将参考另一对象类型寻求合理的类型解释,这一解释过程即隐式类型转换。

在 DB2 V9.7 中,已经提供了隐式类型转换的较全面支持,通过该支持既方便了用户的使用,同时也减少了发生 SQL 迁移时语句修改的工作量。根据 DB2 V9.7 的隐式类型转换规则,在 IBM InfoSphere Federation Server V9.7 中对隐式类型转换支持做了进一步的增强。这些增强主要体现在:

  • 当查询中需要发生隐式转换时,联邦数据库将在内部自动为其转换,并对转换结果进行本地或远端执行的 PUSHDOWN 分析;
  • 在 number 和 string,date 和 timestamp 等数据类型之间,添加了更多的转换支持;
  • 为了使更多的语句 PUSHDOWN 到远程执行,从而提高性能,对于 UDB 数据源的 CAST 转换函数,添加了更多的远程默认函数映射。

通过这些隐式类型转换增强,SQL 语法变得更加的易用和强大,同时也保持了与 DB2 V9.7 弱类型定义语言的一致性。

1.5 Teradata LOB 类型的支持

Teradata LOB 类型的支持主要是针对 Teradata 的 CLOB 和 BLOB 这两个大对象类型进行支持,该支持使得通过联邦数据库可以读远程的 Teradata 大对象类型和创建包含大对象类型列的表。

在 IBM InfoSphere Federation Server V9.7 之前,对 Teradata 支持的最大数据类型长度最多仅可达 64000 字节,而对于大对象类型 CLOB 和 BLOB 并不支持;在 V9.7 中,如图 4 所示,我们对 Teradata 远程数据源加入大对象类型的支持,该支持主要体现在如下几个方面:

  • 在本地和远程的大对象类型之间加入了默认的前向 / 反向类型映射;
  • 修改了数据定义语言 (DDL), 使得可以方便的对远程 Teradata 数据源中的包含大对象列的表创建昵称 (Create Nickname) ;
  • 可以通过 Nickname 从远程 Teradata 数据源检索包含大对象列的数据;
  • 修改了 Transparent DDL 语法 , 以支持远程 Teradata 数据源的大对象类型。

需要注意的是,当前对 Teradata LOB 类型的支持仅是一个初步的尝试,对远程 Teradata LOB 类型的操作具有如下的局限性:

  • 通过 Nickname 还不能对远程的大对象类型列进行添加 / 更新 / 删除 (I/U/D) ;
  • 在 passthru 模式下,当前对远程 Teradata LOB 类型列的查询是不允许的。
图 4. IBM InfoSphere Federation Server V9.7 对远程 Teradata LOB 的支持
图4. IBM InfoSphere Federation Server V9.7对远程Teradata LOB的支持
图4. IBM InfoSphere Federation Server V9.7对远程Teradata LOB的支持

2. Wrapper 的改进

2.1 JDBC Wrapper

目前一些数据库厂商并不提供 ODBC 驱动,或仅在部分平台上提供 ODBC 驱动;一些厂商提供的 ODBC 驱动不支持一些新的数据库技术,比如说两阶段提交等。同时,目前许多数据库仅支持 JDBC 客户端,比如说 Cloudscape(Derby), Universal Data 。因此,IBM InfoSphere Federation Server V9.7 增加了 JDBC Wrapper,以提供给用户更多的选择。

相对于 ODBC 连接 , 使用 JDBC 连接具有如下的优势:

  • 更易于跨平台移植和部署;
  • 支持一些最新的数据库技术,如两阶段提交等;
  • 客户端配置更简单,只需要指定数据库连接字符串和 CLASSPATH 。

和其它 Wrapper 一样,使用 JDBC Wrapper 进行远程数据库连接时需要进行一系列的配置,具体如下:

首先,我们需要在联邦数据库里面创建一个 JDBC Wrapper 对象:

CREATE WRAPPER jdbc;

如果 Wrapper 对象的名字为 jdbc,联邦存储器会自动定位到默认的 JDBC Wrapper 库。用户也可以自己指定库名:

CREATE WRAPPER jdbc_wrapper1 LIBRARY 'libdb2rcjdbc.a';

需要注意的是,在不同的平台上 JDBC Wrapper 对应的库名是不一样的。

接下来,需要在联邦数据库中为通过 JDBC Wrapper 访问的数据源创建一个服务器对象:

CREATE SERVER jdbc_server_cs1 type JDBC version 3.0 Wrapper jdbc_wrapper1 options (
driver_class 'org.apache.derby.jdbc.ClientDriver',
url  ‘ jdbc:derby://iiregr01.cn.ibm.com:1527/testdb9;create=true; ’ ,
driver_package ‘ /wsdb/v10/bldsupp/ALL/jdbc_driver/derbyclient.jar ’ ,
jdbc_log ‘ Y ’ );

为 JDBC Wrapper 新增加的各服务器选项意义说明如下 :

  • driver_class ( 必须 ): JDBC 驱动的类名;
  • url ( 必须 ): JDBC 连接字符串,包括驱动类型、数据库服务器地址、端口以及数据库名等信息;
  • driver_package ( 可选 ): JDBC 驱动所在的 Jar 包,如果没有指定,JDBC Wrapper 会在系统 CLASSPATH 中查找;
  • jdbc_log ( 可选 ): 是否需要纪录 JDBC 日志。

创建完 JDBC Wrapper 的服务器对象以后,接下来的操作就跟联邦数据库的其它 Wrapper 一样了,可以进行昵称创建,昵称查询等一系列联邦数据库操作。

2.2 对 Oracle Wrapper 支持联邦存储过程返回多个结果集

联邦存储过程是联邦数据库中一个非常重要的特性,它驻留在联邦数据库中,能够透明地访问远程数据源 ( 如 Oracle,Sybase 和 SQL Server 等 ) 上的存储过程。 IBM InfoSphere Federation Server V9.7 中增强了联邦存储过程的能力,使其能够获取远端 Oracle 存储过程返回的所有数据 ( 包括输出参数值,返回值,输出的结果集 ) 。

联邦存储过程的执行方式与 DB2 存储过程一样通过 call 语句进行调用,并且新版本联邦存储过程的结果集可以被指定返回到调用端或客户端 ( 与 DB2 存储过程结果集的属性一致 ) 。如图 5 是联邦存储过程的一个简单工作流程,联邦存储过程可以直接被应用程序调用 ( 去掉图中的虚线框 ),也可以被 DB2 存储过程调用 ( 这种调用方式也称为嵌套存储过程 ) 。

图 5. 联邦存储过程工作流程
图5. 联邦存储过程工作流程
图5. 联邦存储过程工作流程

IBM InfoSphere Federation Server V9.7 对联邦存储过程语法进行了增强。通过增加新的字句 (WITH RETURN TO CLIENT ( … )),用户在设计联邦存储过程时可以指定其结果集返回到客户端,剩余的结果集则自动返回到调用端。关于新子句的介绍,请参考下面的链接:

http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.sql.ref.doc/doc/r0023603.html

IBM InfoSphere Federation Server V9.7 支持基于 Oracle Wrapper 的联邦存储过程返回多个结果集,并且这些结果集能够被交叉访问。所谓交叉访问即应用程序或联邦存储过程的调用者可以以任意的次序访问这些结果集。例如,首先访问第三个结果集,然后访问第一个,接着访问第四个,最后还可以回来访问第三个。

IBM InfoSphere Federation Server V9.7 中的联邦存储过程在使用过程中有一些限制 :

  • 目前联邦存储过程仅支持从 Oracle 存储过程返回多个结果集,在后续的版本中将会支持其他数据源,并提供用户修改现有联邦存储过程定义,如修改结果集的属性(客户端或调用端)。
  • 当远程数据源的存储过程定义发生变化时,不能直接使用“ ALTER PROCEDURE …”修改联邦存储过程的定义。必须首先删除现有的联邦存储过程,然后再创建新的联邦存储过程,或者使用新的语法“ CREATE OR REPLACE …”创建新的联邦存储过程。

3. SQL 的改进

3.1 对存储过程返回结果集进行连接操作的支持

对用户来说,如何把存储过程返回的结果集和本地的表或其他数据库对象进行连接,是一个很常见的需求。然而,目前 DB2 没有提供 SQL 语法支持直接连接存储过程返回的结果集,IBM InfoSphere Federation Server V9.7 中我们提供了连接存储过程返回的结果集的功能。

IBM InfoSphere Federation Server V9.7 中新增了自动化工具 db2fedgentf,该工具可用于帮助用户自动创建表函数映射到存储过程返回的结果集上,然后用户再用这些表函数进行连接操作。除了为联邦存储过程创建相应的表函数,我们也可以使用 db2fedgentf 删除指定的表函数。

下面简要介绍 db2fedgentf 的工作原理。假设在远程 DB2 LUW 数据源上存在存储过程 INVENTORY,其功能为根据输入的商品编号返回供应商姓名。在本地联邦数据库中,存在联邦存储过程 FS_INVENTORY 映射到该远程存储过程。本地联邦数据库中,表 NOTEBOOK 存有供应商的电话号码。假设我们希望通过商品编号查询供应商的电话号码。图 6 显示了 db2fedgentf 工具的工作原理以及如何通过表函数访问联邦存储过程返回的结果集。

图 6. db2fedgentf 工作原理
图6. db2fedgentf工作原理
图6. db2fedgentf工作原理

db2fedgentf 的创建表函数的工作过程大致如下:

1. 解析检查输入参数;

2. 从联邦数据的 catalog 中读取联邦存储过程 FS_INVENTORY 的相关信息,如输入输出参数信息等;

3. 生成表函数 TF_INVENTORY 所需的 JAVA 源文件并编译;

4. 创建表函数 TF_INVENTORY ;

图 6 中的橙色箭头表示了 db2fedgentf 创建表函数的过程,而蓝色箭头则表示了通过表函数访问联邦存储过程的路线。 db2fedgentf 工具目前支持的远程数据源包括:DB2、ORACLE、Sybase 及 MS SQL Server 。

3.2 对远程查询中断的支持

联邦数据库的语句执行模型有别于传统的数据库系统,客户端把语句执行请求通过特定的协议发给引擎端,引擎端通过数据库的编译系统把得到的语句分成两个部分,一部分将运行在引擎端,另外一部分将会在数据源端进行执行,当且仅当数据源端执行完毕并且把相应的结果集返回时,引擎端才能进一步进行处理。同时,这两部分可能会在完全两个不同的进程中执行。因此,这种不同的执行模型需要一种基于数据源的中断模型去处理整个语句的中断过程,如图 7 所示。

图 7. 联邦数据库中断的工作流程
图7. 联邦数据库中断的工作流程
图7. 联邦数据库中断的工作流程

IBM InfoSphere Federation Server V9.7 中对远程查询的中断是一种基于多进程的,多阶段执行的,分布式的数据库中断处理方法,它具备以下特性和优点:

  • 处理多阶段执行语句,对于联邦数据库的语句执行模型有着完备的支持;
  • 处理多进程,不同进程会处理不同的请求,对于多进程中断的支持使得每个进程都可以保证中断的连续性;
  • 支持各种不同的数据操作语句 (DML),包括查询、插入、删除、修改、存储过程等。
  • 支持不同的中断级别,包括语句级别和事务级别。

中断整个应用程序,可以使用 DB2 提供的“ force application ”方式进行中断,其命令格式为:
命令格式

命令格式

那么对于语句级别,就可以使用在操作系统上一般的中断方式“ Ctrl-C ”来进行。当然不是所有的控制台都可以接受“ Ctrl-C ”,在这样的情况下,我们推荐使用操作系统的“ kill ”命令,具体为:

Kill -2 db2_process_id

Db2_process_id 为 DB2 前端进程的 ID 。

IBM InfoSphere Federation Server V9.7 中对远程查询的中断有一些使用上的限制:

  • 联邦数据库的中断只应用于 Federated Request Pending 状态下的应用程序。
  • 目前联邦数据库的语句中断处理仅限于 DB2 LUW 远程数据源,在以后会陆续支持其它数据源。
  • 对于 Federated Asynchrony 被设置的情况下,联邦数据库的语句中断不能够正常执行。关于 Federated Asynchrony,请参考以下链接。

    http://www.ibm.com/developerworks/db2/library/techarticle/dm-0611norwood/

3.3 在 UDFs/SPs 中配置 XML 进行信息队列操作

访问消息队列是联邦数据库的一个重要功能。 IBM InfoSphere Federation Server V9.7 中提供一系列用户自定义函数 (UDF) 和存储过程 (SP) 用来访问消息队列中的 XML 消息,在下文中,我们称这些函数和存储过程为 MQ XML UDF 和 MQ XML SP 。

在 IBM InfoSphere Federation Server V9.5 或更早的版本中,所有的 MQ XML UDF 和 MQ XML SP 都是基于 DB2 XML-Extender 来实现的。由于 DB2 从 V9 开始引入了 pureXML,相对于 XML-Extender, pureXML 对 XML 的支持更加完善和强大,因此从 DB2 V9.7 开始将不再提供 XML-Extender 。这意味着 V9.5 和更早版本上依赖于 XML-Extender 的 MQ XML UDF 和 MQ XML SP 在 IBM InfoSphere Federation Server V9.7 中无法使用。

IBM InfoSphere Federation Server V9.7 重新实现了基于 pureXML 的新版本 MQ XML UDF,以继续提供从联邦数据库访问消息队列中 XML 消息的功能 . 相对于 V9.5 以及更早版本上基于 XML-Extender 的 MQ XML UDF,V9.7 上基于 pureXML 的 MQ XML UDF 具有以下方面的优势:

  • V9.7 上启动和关闭 MQ XML UDF 更加简单 ;
  • V9.7 上 MQ XML UDF 数量大大减少 ;
  • V9.7 上 MQ XML UDF 发送和接收的 XML 消息类型为 DB2 原始的 XML 类型,这样用户可以利用强大的 pureXML 功能操作 XML 类型的消息。

在 V9.5 之前,MQ XML SP 被用来从表中抽取关系型数据,构建成 XML 消息发送到消息队列;或从消息队列中接收 XML 数据后从中抽取相关数据映射成关系型数据后保存到表中。由于 V9.7 上 MQ XML UDF 发送和接受的都是原始 XML 类型的数据,我们可以通过 pureXML 提供的功能操作这些数据完成同样的功能,这样联邦数据库不再提供这些 MQ XML SP 。

在 V9.5 之前,我们需要通过一个额外的工具 enable_MQXML/disable_MQXML 来打开和关闭 MQ XML UDF 。在 V9.7 上我们将打开和关闭 MQ XML UDF 的功能集成到了工具 enable_MQFunctionsd/isable_MQFunctions 上,使用语法为:

			enable_MQFunctions -n dbName -u uID -p password
			[-q queuemanager] [-v 0pc|1pc|all]
			[-xml [xmlSize]] [-c clobSize]
			[-novalidate] [-echo] [-force]

我们为 enable_MQFunctions 增加了一个新的选项 xml, 只要在使用的时候指定这个选项,MQ XML UDF 就会被同时打开。 enable_MQXML/disable_MQXML 在 V9.7 中不再存在。

IBM InfoSphere Federation Server V9.5 和 V9.7 上 MQ XML UDF 的主要变化见下表:

从表中可以看出,主要的区别在于 V9.5 中的 MQ XML UDF 接受的参数或返回的类型都是 XMLVARCHAR 和 XMLCLOB,而在 V9.7 中则是原始的 DB2 XML 类型。由于没有重复的参数和返回类型,V9.7 上 MQ XML UDF 的数量几乎减少了一半。另一个细微的差别是在 V9.5 上,MQ XML UDF 的 schema 是 db2xml,在 V9.7 上则是 db2mq 。

除了参数和返回类型,V9.7 上 MQ XML UDF 的函数接口基本上和 V9.5 上一致,这样最大程度的保存了前后版本之间 MQ XML UDF 用法的一致性,这里就 MQSendXML 和 MQReceiveXML 这两个 UDF 分别用例子演示其用法:

示例 1, MQSendXML:

db2=> values db2mq.mqsendxml('DB2.DEFAULT.SERVICE', 'DB2.DEFAULT.POLICY', 
XMLPARSE(DOCUMENT'<doc><type>car</type><make>
Pontiac</make><model>Sunfire</model></doc>'
 PRESERVE WHITESPACE), 'c3')
 1
 -
 1
 1 record(s) selected.

示例 2, MQReceiveXML:

db2=> values db2mq.mqreceivexml('DB2.DEFAULT.SERVICE', 'DB2.DEFAULT.POLICY', 'c3')
1
----------------------------------------
<doc><type>car</type><make>Pontiac<
/make><model>Sunfire</model></doc>

1 record(s) selected.

从以上示例可见,V9.7 上的 MQ XML UDF 基本上和 V9.5 上的方法一致,除了参数和返回值的类型不同。

4. 安装与升级的改进

4.1 安装的易用性改进

IBM InfoSphere Federation Server V9.7 的安装程序对其易用性进行了进一步的改进,它使得用户安装 IBM InfoSphere Federation Server V9.7 的过程更加轻松。这些改进包括:

  • 在 zlinux 上,IBM InfoSphere Federation Server V9.7 安装程序增加了 ODBC 和 MS SQL Wrapper 的安装,在 linux32 和 linuxAMD64 平台上安装程序增加了 Teradata Wrapper 的安装。
  • IBM InfoSphere Federation Server V9.7 安装程序还在所有的平台下增加了 JDBC Wrapper 的安装。 JDBC Wrapper 是 IBM InfoSphere Federation Server V9.7 上的一个新 Wrapper 。
  • IBM InfoSphere Federation Server V9.7 安装程序删除了一些不再支持的 Wrapper 的安装,包括 Entrez, WBI,HMMER 和 Blast Wrapper 。
  • 在 IBM InfoSphere Federation Server V9.7 中安装程序和 Branded ODBC 驱动安装程序被集成到一张 DVD 上。
  • IBM InfoSphere Federation Server V9.7 上 Web 服务 Wrapper 成为了 DB2 ESE 或 DB2 CONSV 的标准组件,因此会被默认安装。而在 V9.5 上 Web 服务 Wrapper 位于非关系型 Wrapper 安装包中,并且在安装过程中是一个可选组件。
  • IBM InfoSphere Federation Server V9.7 还提供了一种新的卸载方法。用户可以通过在配置文件 (response file) 中指定需要被卸载的组件,然后执行命令 db2_deinstall -r 进行卸载。
  • 另一个值得用户注意的变化是,IBM InfoSphere Federation Server V9.7 的 license 文件名相对于以前的名字有所变化。在 V9.7 中分别是 isfs.lic( 企业版 ),isfs_t.lic( 试用版 ),isfs_d.lic( 开发版 ) 。

4.2 数据库版本升级

数据库升级使得用户可以将数据从低版本的数据库升级到高版本的数据库中。当用户将 IBM InfoSphere Federation Server 从 V9.5 升级到 V9.7 之后,主要带来了两个方面的变化:

1. 升级到 V9.7 的 IBM InfoSphere Federation Server 会使用加强的加密算法 AES 替代旧版本上的 DES 加密算法。因此一部分 catalog 表中与加密算法有关的选项会发生变化,这些表包括:

  • SYSIBM.SYSSERVEROPTIONS
  • SYSIBM.SYSUSEROPTIONS
  • SYSIBM.SYSWRAPOPTIONS

2. 升级到 IBM InfoSphere Federation Server V9.7 后,TIMESTAMP 类型的数据会有一个新的属性来指定 Scale 。在 DB2 V9.5 和更早的版本中,TIMESTAMP 类型的数据 Scale 总是固定值 6 。而在 V9.7 中 TIMESTAMP 类型支持的 Scale 为 0-12, 用户可以根据实际情况自行指定。所有从 V9.5 或更早版本 IBM InfoSphere Federation Server 中升级过来的 TIMESTAMP 数据 Scale 会被设置成 6 。同时在 V9.7 上一些用来描述 TIMESTAMP 类型的 catalog 表中与 Scale 相关的列会发生变化,这些表包括:

  • SYSIBM.SYSTYPEMAPPINGS
  • SYSIBM.SYSCOLOPTIONS
  • SYSIBM.SYSROUTINEPARMOPTIONS

这些变化对用户来说都是透明的,并且不影响现有应用程序的使用。

结束语

本文简要地介绍了 IBM InfoSphere Federation Server V9.7 中的新增功能,例如数据类型、Wrapper、SQL 等的改进,并提供相关的资源参考。建议广泛阅读各种文章和教程,以获得关于这些特性的深入知识。

致谢:在此特别感谢李海峰,李士达,窦志彤等为本文的撰写所提供的帮助。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=421140
ArticleTitle=IBM InfoSphere Federation Server V9.7 中的新增功能
publish-date=08142009