内容


IBM InfoSphere Federation Server V9.7 中 DECFLOAT 数据类型及相关语义支持

Comments

DB2 9.7 提供了许多新的 SQL 功能:包括新的 SQL 数据操纵语句,以及 DECFLOAT(十进制浮点小数)、NUMBER、VARCHAR2 和 TIMPSTAMP 等新的数据类型在 IBM InfoSphere Federation Server 上的应用。本文主要是介绍一下 IBM InfoSphere Federation Server 对十进制浮点数(DECFLOAT)的支持。

DECFLOAT 简介

DECFLOAT 是 DB2 9.5 引入的一种新的数据类型,它是一种十进制浮点数据类型,适合处理精确的十进制业务数据。浮点数据类型例如 REAL 和 DOUBLE 类型都只是通过二进制近似方式来处理十进制数据,所以它们不适合大部分使用十进制数据的商业应用。

DECFLOAT 合并了 DECIMAL 类型的精度和 FLOAT 类型的一些性能优势,所以它是一种结果精确而且处理高效的数据类型。

DECFLOAT 提供 16 位和 34 位两种精度的浮点数据类型。分别为表示为 DECFLOAT(16) 和 DECFOAT(34)。如果没有指明精度,DECFLOAT 默认为 DECFLOAT(34)。这两种精度的数据分别存储在 8 字节和 16 字节的空间里。

表 1. DECFLOAT 类型数据表示范围
精度(位)长度(字节)范围
168-9.999999999999999 x 10384to -1.0 x 10-383:
1.0 x 10-383to 9.999999999999999 x 10384
3416-9.999999999999999999999999999999999 x 106144to -1.0 x 10-6143:
1.0 x 10-6143to 9.999999999999999999999999999999999 x 106144

DECFLOAT 使用

下面通过一些例子,简单地描述以下 DECFLOAT 类型的基本用法。我们首先创建一个包含 DECFLOAT 类型的表,往表中插入一些数据。

 CREATE TABLE EMPLOYEE 
  ( 
  SALARY     DECFLOAT, 
  BONUS      DECFLOAT(16), 
  COMMISSION DECFLOAT(34) 
  ); 
 INSERT INTO EMPLOYEE VALUES 
  ( 
  1234567890123456789, 
  12345678901234, 
  1234567890123456789012345678901 
  ); 
 SELECT * FROM EMPLOYEE;
SALARYBONUSCOMMISSION
1234567890123456789123456789012341234567890123456789012345678901

在 DB2 9.5 之前,我们最多只能往数据库中插入由 DECIMAL 类型支持的 31 位长的浮点数据。然而,由于 DB2 9.5 引入了 DECFLOAT 数据类型,我们可以插入超过 31 位长的浮点数据。

 DELETE FROM EMPLOYEE; 
 INSERT INTO EMPLOYEE VALUES 
  ( 
  1234567890123456789, 
  DECFLOAT('1234567890123456789012345678902'), 
  DECFLOAT('1234567890123456789012345678901234') 
  ); 
 SELECT * FROM EMPLOYEE;
SALARYBONUSCOMMISSION
12345678901234567891.234567890123457E+301234567890123456789012345678901234

注:由于 DECFLOAT(16) 类型没有足够的位来显示整个数据,BONUS 列的数据采用指数类型表示。

DECFLOAT(16) 占用 8 字节空间而 DECFLOAT(34) 占用 16 字节空间。DEC(31,0) 占用的空间必须在软件层面计算出来,而 DECFLOAT 在硬件层面就已经潜在地表示为 16 字节数据。

TBNAMENAMECOLTYPELENGTHSCALE
EMPLOYEEBONUSDECFLOAT80
EMPLOYEECOMMISSIONDECFLOAT160
EMPLOYEESALARYDECFLOAT160

我们再通过下面这个例子来说明 DECFLOAT 类型和 DECIMAL 类型的不同。

 DROP TABLE EMPLOYEE; 
 CREATE TABLE EMPLOYEE 
  ( 
  SALARY     DEC(14,2), 
  BONUS      DECFLOAT(16), 
  COMMISSION DECFLOAT(34) 
  ); 
 INSERT INTO EMPLOYEE VALUES 
  ( 
  123456.78, 
  1234567890.12, 
  123456789012345678901234.56 
  ); 
 SELECT * FROM EMPLOYEE;
SALARYBONUSCOMMISSION
123456.781234567890.12123456789012345678901234.56

如果我们插入精度更大的数据,对于 BONUS 和 COMMISSION 这两列,我们不需要作任何更改,而对于 SALARY 列,那就需要修剪数据使得数据符合 DECIMAL 列指明的精度。

 INSERT INTO EMPLOYEE VALUES 
  ( 
  123456.7891, 
  1234567890.1234, 
  123456789012345678901234.5678 
  ); 
  
 SELECT * FROM EMPLOYEE;
SALARYBONUSCOMMISSION
123456.781234567890.1234123456789012345678901234.5678

DECFLOAT 舍入模式

DECFLOAT 数据类型允许使用不同形式的舍入模式(rounding)。舍入模式是指当数据值超过数据类型的精度时,应该如何舍入数据。DB2 通过 decflt_rounding 配置参数来控制舍入模式,这是在数据库级上实现的。一个应用程序是无法改变舍入模式的,但是可以通过 CURRENT DECFLOAT ROUNDING MODE 命令来查询当前的舍入模式。

DB2 支持五种符合 IEEE 标准的十进制浮点数舍入模式。舍入模式指定在计算结果超过精度时如何舍入结果。所有舍入模式的定义如下所示:

  • ROUND_CEILING
向正无穷大方向舍入。如果删除的所有位都是零,或者符号为负号,那么结果不变。 否则,结果系数应增加 1(向上舍入)。12.456 和 12.451 舍入后为 12.46。
  • ROUND_DOWN
朝着 0 的方向舍入(截断),忽略被废弃的位。12.456 和 12.451 舍入后为 12.45。
  • ROUND_FLOOR
向负无穷大方向舍入。如果删除的所有位都是零,或者符号为正号, 那么结果不变。否则,如果符号为负号,那么结果系数应增加 1。12.456 和 12.451 舍入后为 12.45。 和 ROUND_DOWN 不同的是,对于负数例如 -12.456,舍入后为 -12.46,而 ROUND_DOWN 模式舍入后为 -12.45。
  • ROUND_HALF_EVEN
舍入为最接近的整数。如果向上舍入与向下舍入是等距的,那么按照使得最后一位为偶数的目标来进行舍入;如果被废弃的位大于它左边位置中值 1 的一半(0.5),那么结果系数应增加 1(向上舍入);如果它们小于一半,那么不会调整结果系数,即忽略被废弃的位。否则,如果结果系数最右边的一位是偶数,在它们表示刚好一半的情况下,结果系数不会改变;如果结果系数最右边的一位是奇数,那么结果系数应增加 1(向上舍入),以使它变成偶数位。根据 IEEE 十进制浮点数规范,此舍入模式是缺省舍入模式,并且它是 DB2 产品中的缺省舍入模式。12.456 舍入后为 12.46。12.445 舍入后为 12.44。
  • ROUND_HALF_UP
舍入为最接近的整数。如果向上舍入与向下舍入是等距的,那么向上舍入并使结果系数增加 1;如果被删除的位大于或等于它左边位置中值 1 的一半(0.5),那么结果系数应增加 1(向上舍入)。否则,将忽略被删除的位(小于或等于 0.5)。12.456 舍入后为 12.46,12.451 舍入后为 12.45。

如果没有特别的设置指明,DB2 默认的舍入模式为 ROUND_HALF_EVEN。

表 2. DECFLOAT 类型数据在不同舍入模式下的结果
舍入模式12.34112.34512.34912.355-12.345
ROUND_CEILING12.3512.3512.3512.36-12.34
ROUND_FLOOR12.3412.3412.3412.35-12.35
ROUND_HALF_UP12.3412.3512.3512.36-12.35
ROUND_HALF_EVEN12.3412.3412.3512.36-12.34
ROUND_DOWN12.3412.3412.3412.35-12.34

Federation DECFLOAT 支持

前面我们说过 DB2 v9.5 引入了 DECFLOAT 这种新的数据类型。而后 IBM InfoSphere Federation Server v9.7 也引入 DECFLOAT 数据类型,使得 DECFLOAT 可以支持联邦数据库环境。这就意味着,当远程数据库中有一个 DECFLOAT 数据,在联邦数据库环境下,本地数据库也有一个 DECFLOAT 数据与之相对应,可以实现远程的与本地的 DECFLOAT 类型的数据映射。因此,我们通过 IBM InfoSphere Federation Server 来透明地访问和控制远程 DECFLOAT 类型的数据。

IBM InfoSphere Federation Server v9.7 对于 DECFLOAT 的支持只适用于远程数据库为 DB2 LUW V9.5 及以上版本和 Oracle 的应用情况。

Federation DECFLOAT 使用

由于 IBM InfoSphere Federation Server 支持 DECFLOAT 数据类型,因此我们可以在包含 DECFLOAT 类型的远程对象(表或是视图)上创建昵称(NICKNAME)。例如,假设在远程创建下列 DB2/LUW 表:

创建一个包含 16 位 DECFLOAT 类型列的表:

 CREATE TABLE T1 (c1 DECFLOAT(16))

创建一个包含 34 位 DECFLOAT 类型列的表:

 CREATE TABLE T1 (c1 DECFLOAT(34)) or CREATE TABLE T1 (c1 DECFLOAT)

在 IBM InfoSphere Federation Server 上,用户可以基于上面的表创建相对应的昵称:

创建基于 16 位 DECFLOAT 类型列的远程表的昵称 N1:

 CREATE NICKNAME N1 FOR SERVER.SCHEMA.T1

创建基于 34 位 DECFLOAT 类型列的远程表的昵称 N1:

 CREATE NICKNAME N2 FOR SERVER.SCHEMA.T2

一旦创建了昵称,那就可以对包含 DECFLOAT 类型的昵称进行昵称所允许的任何 SQL 操作。

昵称(Nickname)

  • 创建基于 DECFLOAT 数据的昵称
 CREATE TABLE t1 (c1 DECFLOAT); 
 CREATE NICKNAME N1 for server.schema.t1;
  • Transparent DDL
 CREATE TABLE N1 (c1 DECFLOAT) 
 OPTIONS(REMOTE_SERVER server_name, REMOTE_SCHEMA server_schema) 
 OR 
 CREATE TABLE N1 (c1 DECFLOAT(34)) 
 OPTIONS(REMOTE_SERVER server_name, REMOTE_SCHEMA server_schema) 

 CREATE TABLE N1 (c1 DECFLOAT(16)) 
 OPTIONS(REMOTE_SERVER server_name, REMOTE_SCHEMA server_schema)
  • Alter Nickname Alter Column
 ALTER NICKNAME N1 ALTER COLUMN C1 LOCAL TYPE DECFLOAT

如果你改变一个列的数据类型,必须改为数据源相对应列的数据类型相兼容的数据类型。否则改为不兼容的类型将导致系统报错。例如,一个用户将类型为 DATE 的远程数据列的本地类型改为 DECFLOAT,系统就会报出 SQL1357N 的错。

 ALTER NICKNAME N1 ALTER COLUMN C1 LOCAL TYPE DECFLOAT 
 DB21034E  The command was processed as an SQL statement because it was not a valid 
 Command Line Processor command.  During SQL processing it returned: 
 SQL1357N  The specified data type is invalid as the local data type for a data type 
 mapping from a data source. Reason code = "3". Altering the local type to the 
 specified data type is not allowed.  SQLSTATE=42815

类型映射(Type Mapping)

IBM InfoSphere Federation Server 会为 DECFLOAT 类型提供一组默认的类型映射。下面的表格列出了 DECFLOAT 可用的一些类型映射:

表 3. DECFLOAT 类型映射
远程类型名远程精度本地映射类型本地映射精度
DECFLOAT16DECFLOAT16
DECFLOAT34DECFLOAT34

以上表所示的类型映射是适用于远程数据源为 DB2 LUW V9.5 及以上版本的应用情况,而对于远程数据源为 ORACLE 的情况,由于 ORACLE 没有 DECFLOAT 类型,而有 NUMBER 数值类型,所以我们采用 ALTER NICKNAME ALTER COLUMN TYPE 为 DECFLOAT 类型的方式,也就是将 ORACLE NUMBER 类型的默认本地映射类型更改为 DECFLOAT 的方式来支持本地 DECFLOAT 与 ORACLE NUMBER 的类型映射。

用户可以通过 CREATE TYPE MAPPING 和 CREATE NICKNAME 语句来改变默认的类型映射。

创建一个 Forward 类型映射:

 CREATE TYPE MAPPING TM1 FROM LOCAL TYPE DECFLOAT TO SERVER TYPE db2/cs 
 REMOTE TYPE SMALLINT

创建一个昵称 N1:

 CREATE NICKNAME N1 FOR SERVER.SCHEMA.T1

创建昵称后,系统会自动将远程 SMALLINT 类型在本地映射成 DECFLOAT 类型。注意:当我们在本地昵称 N1 上插入一个超过 SMALLINT(-32,768 到 +32,767) 范围的值时,系统会返回一个 SQL0413N 的错,指明插入的值溢出。

同理,用户可以创建一个 Reverse 类型映射:

 CREATE TYPE MAPPING TM2 FROM SERVER TYPE db2/cs REMOTE TYPE DECFLOAT 
 TO LOCAL TYPE SMALLINT

同样创建一个昵称 N2:

 CREATE NICKNAME N2 FOR SERVER.SCHEMA.T2

创建昵称后,系统会自动将远程 DECFLOAT 类型在本地映射成 SMALLINT 类型。注意:当我们在本地昵称 N2 上插入一个超过 SMALLINT(-32,768 到 +32,767) 范围的值时,系统会返回一个 SQL0413N 的错,指明插入的值溢出。

另外,前面我们说过,用户也可以通过 ALTER NICKNAME 语句来改变默认的类型映射。

 ALTER NICKNAME N2 ALTER COLUMN C1 LOCAL TYPE SMALLINT

更改昵称后,系统会自动将远程 DECFLOAT 类型在本地映射成 SMALLINT 类型。注意:当我们在本地昵称上插入一个超过 SMALLINT(-32,768 到 +32,767) 范围的值时,系统同样会返回一个 SQL0413N 的错,指明插入的值溢出。

函数映射(Function Mapping)

我们在 IBM InfoSphere Federation Server v9.7 中更新了下列函数的函数映射,因此它们可以支持 DECFLOAT 数据类型。

  • 聚集函数 (Aggregate Functions)
    • AVG (sysibm)
    • CORRELATION (sysibm)
    • COUNT (sysibm)
    • COUNT_BIG (sysibm)
    • COVARIANCE (sysibm)
    • GROUPING (sysibm)
    • MAX (sysibm)
    • MIN (sysibm)
    • Regression functions (sysibm)
    • STDDEV (sysibm)
    • SUM (sysibm)
    • VARIANCE (sysibm)
  • 标量函数(Scalar Functions)
    • BIGINT (sysibm)
    • DATE (sysibm)
    • DECIMAL (sysibm)
    • DOUBLE (sysibm) (sysfun)
    • FLOAT (sysibm)
    • INTEGER (sysibm)
    • REAL (sysibm)
    • SMALLINT (sysibm)
    • ABS or ABSVAL (sysibm)
    • CHAR (sysibm) (sysfun)
    • EXP (sysfun)
    • LN (sysfun)
    • LOG (sysfun)
    • LOG10 (sysfun)
    • MOD (sysfun)
    • POWER (sysfun)
    • ROUND (sysibm) (sysfun)
    • SQRT (sysfun)
    • CEILING or CEIL (sysibm) (sysfun)
    • COALESCE (sysibm)
    • DEGREES (sysfun)
    • FLOOR (sysibm) (sysfun)
    • HEX (sysibm)
    • LENGTH (sysibm)
    • NULLIF (sysibm)
    • RADIANS (sysfun)
    • SIGN (unknown)
    • TRUNCATE or TRUNC (sysibm) (sysfun)
    • VALUE (sysibm)

另外,我们还在 IBM InfoSphere Federation Server 中加入一些函数映射,用以支持 DECFLOAT 数据类型:

  • DECFLOAT
  • QUANTIZE
  • TOTALORDER
  • COMPARE_DECFLOAT
  • NORMALIZE_DECFLOAT

因此,我们可以使用上述函数来对 DECFLOAT 数据进行查询:

 SELECT C1, QUANTIZE(C1, DECFLOAT(0.01)) QUANT FROM N1

对于上述这个例子,假设本地联邦数据库和远程数据源具有相同舍入模式,那么整个 SQL 语句都将会被下推到远程数据源执行。

索引(Index)

IBM InfoSphere Federation Server v9.7 对于 DECFLOAT 的支持同样体现在联邦数据库环境下创建索引上。例如,远程数据源有表 T1,T2,并有索引 IDX1,IDX2。

 CREATE TABLE T1 (C1 DECFLOAT(16)) 
 CREATE INDEX IDX1 ON T1(C1) 
 CREATE TABLE T2 (C1 DECFLOAT) 
 CREATE INDEX IDX2 ON T2(C1)

在 T1,T2 上创建昵称,同时本地联邦数据库服务器就取得了昵称对应的远程表的相关信息,包括远程索引信息。但是当创建昵称后昵称相应的远程表上的索引被更改了或者是昵称是基于远程视图的情况下,那就可以在昵称上创建索引,并使用 SPECIFICATION ONLY 指明索引规范,以便 IBM InfoSphere Federation Server 优化器利用索引提高效率。

 CREATE INDEX NIDX1 ON NICK1(C1) SPECIFICATION ONLY 
 CREATE INDEX NIDX2 ON NICK2(C2) SPECIFICATION ONLY

视图(View)

在 IBM InfoSphere Federation Server v9.7 中,我们可以通过 CREATE VIEW 语句在昵称上创建视图,且昵称中含有 DECFLOAT 类型列。

在昵称 N1 上创建视图 V1,N1 中的列 C1 是 DECFLOAT 类型:

 CREATE VIEW V1 AS SELECT * FROM N1 WHERE C1 > 10000.0;
 SELECT * FROM V1;

另外,可以在远程数据源上的表 T2 上创建视图 V2:

 CREATE TABLE T2 (C1 DECFLOAT); 
 CREATE VIEW V2 AS SELECT * FROM T2 WHERE C1 > 10000.0;

然后在本地联邦数据库服务器上对 V2 创建昵称 N2:

 CREATE NICKNAME N2 FOR SERVER.SCHEMA.V2; 
 SELECT * FROM N2;

存储过程(Stored Procedure)

在 IBM InfoSphere Federation Server v9.7 中,我们可以创建存储过程,用于访问和控制 DECFLOAT 类型数据,这主要有以下两种应用情况:

  • 只使用 IN 和 OUT 参数,并且没有结果输出的存储过程:

在远程数据源上创建包含 DECFLOAT 类型列的表:

 DROP TABLE SP@ 
 CREATE TABLE SP( 
 PARAM  CHAR(1), 
 COLDFP DECFLOAT)@

在远程数据源上创建使用 IN 和 OUT 参数的存储过程 SP_DFP_IO,使用输入参数 ARGI 来更新远程表 SP,并查询 SP,将得到的结果赋值给输出参数 ARGO:

 CREATE PROCEDURE SP_DFP_IO (IN ARGI DECFLOAT, OUT ARGO DECFLOAT) 
        LANGUAGE SQL 
 BEGIN 
    UPDATE SP 
          SET COLDFP = ARGI 
          WHERE PARAM = 'I'; 
    SELECT COLDFP 
    INTO ARGO 
    FROM SP 
    WHERE PARAM = 'O'; 
 END@

在 IBM InfoSphere Federation Server 上创建基于远程数据源上的存储过程的过程 PROCEDURE:

 CREATE PROCEDURE SP_DFP_IO SOURCE SCHEMA.SP_DFP_IO FOR SERVER S1@

在本地联邦数据库服务器上调用存储过程 SP_DFP_IO:

 CALL SP_DFP_IO (50.125,?)
  • 没有使用输入输出参数,并且有结果返回的存储过程:

在远程数据源上创建包含 DECFLOAT(16) 类型列的表:

 DROP TABLE SP16@ 
 CREATE TABLE SP16( 
 PARAM  CHAR(1), 
 COLDFP DECFLOAT(16))@

在远程数据源上创建存储过程 SP_DFP_RS,没有使用输入参数,并返回结果:

 CREATE PROCEDURE SP_DFP_RS() DYNAMIC RESULT SETS 1 
 LANGUAGE SQL 
 READS SQL DATA 
  BEGIN 
     BEGIN DECLARE clientcur CURSOR WITH RETURN TO CLIENT 
     FOR SELECT * 
     FROM SP16; 
     OPEN clientcur; 
  END; 
 END

在本地联邦数据库服务器上创建基于远程数据源上的存储过程的过程 PROCEDURE: CREATE PROCEDURE SP_DFP_RS SOURCE SCHEMA.SP_DFP_RS FOR SERVER S1 WITH RETURN TO CLIENT ALL

在本地联邦数据库服务器上调用存储过程 SP_DFP_RS:

 CALL SP_DFP_RS ()

Federation DECFLOAT 舍入模式

由于 DECFLOAT 数据类型支持五种符合 IEEE 标准的十进制浮点数舍入模式,在 IBM InfoSphere Federation Server v9.7 中,如果远程数据源有 DECFLOAT 类型数据且本地服务器会对远程 DECFLOAT 数据进行查询和计算的情况下,为了在本地服务器和远程数据源间获得一致性结果,我们引入一个新的 Server Option:SAME_DECFLT_ROUNDING,用于指明远程数据源和本地联邦数据库服务器是否具有相同的舍入模式。SAME_DECFLT_ROUNDING 有两个有效值:

  • 'Y' : 指明远程数据源和本地联邦数据库服务器的舍入模式相同。
  • 'N' : 指明远程数据源和本地联邦数据库服务器的舍入模式不同。

SAME_DECFLT_ROUNDING 的默认值为’ N ’。也就是说,如果 SAME_DECFLT_ROUNDING 没有被重设,那么我们认为本地服务器和远程数据源之间的舍入模式是不同的。这是一种比较保守的方式,这样可以使得一些受舍入模式影响的操作不被下推到远程数据源执行,从而保证结果的准确性。

如果远程数据源的舍入模式和本地联邦数据库服务器的舍入模式不同,DECFLOAT 类型数据的计算结果超过定义的 DECFLOAT 类型的精度时,那么有关 DECFLOAT 数据计算的操作就不能够下推到远程数据源进行处理。反之,如果两者的舍入模式相同,为了提高本地联邦数据库访问和操作远程 DECFLOAT 数据的效率,可以采用两种方式来设置 SAME_DECFLT_ROUNDING:

  • 在 CREATE SERVER 时指定 SAME_DECFLT_ROUNDING 值为’ Y ’

创建一个 SERVER S1,指明为相同的舍入模式。

 CREATE SERVER S1 TYPE DB2/CS VERSION 10 WRAPPER W1 AUTHORIZATION "AUTHID" PASSWORD "PWD" 
 OPTIONS (DBNAME 'DBNAME', SAME_DECFLT_ROUNDING ‘ Y ’ );
  • 通过 ALTER SERVER 语句来重设 SAME_DECFLT_ROUNDING 为’ Y ’。

创建一个 SERVER S1,指明为不同的舍入模式。

 CREATE SERVER S1 TYPE DB2/CS VERSION 10 WRAPPER W1 AUTHORIZATION "AUTHID" PASSWORD "PWD"
 OPTIONS (DBNAME 'DBNAME', SAME_DECFLT_ROUNDING ‘ N ’ );

修改 S1 的设置,重设舍入参数,指明为相同的舍入模式。

 ALTER SERVER S1 OPTIONS (SET SAME_DECFLT_ROUNDING ‘ Y ’ );

如果使用除’ Y ’或’ N ’之外的无效值来设置 SAME_DECFLT_ROUNDING,系统会返回一个 SQL1882N 的错误信息。

 ALTER SERVER S1 OPTIONS (SET SAME_DECFLT_ROUNDING 'B') 
 DB21034E  The command was processed as an SQL statement because it was not a valid 
 Command Line Processor command.  During SQL processing it returned: 
 SQL1882N  The "SERVER" option "SAME_DECFLT_ROUNDING" cannot be set to "B" for "S1".  
 SQLSTATE=428EF

注意:设置 SAME_DECFLT_ROUNDING 为’ Y ’的用户必须为这个操作所导致的后果负责。如果本地服务器和远程数据源间实际的舍入模式不同,那么重置操作将导致得到不准确的结果。

结束语

我们在联邦数据库环境下引入 DECFLOAT 数据类型的支持,使得 IBM InfoSphere Federation Server 可以透明访问和操作远程的 DECFLOAT 数据类型。具体功能概括如下:

  1. 使用 DB2 提供 16 位和 34 位两种精度的 DECFLOAT 浮点数据类型,进一步增强了 IBM InfoSphere Federation Server 精确处理的十进制浮点数据的能力,并且大大提高计算十进制浮点数据的性能。
  2. 对于远程的 16 位和 34 位两种精度的 DECFLOAT 浮点数据类型的表和视图,IBM InfoSphere Federation Server 可以通过创建昵称,作相应的类型映射和函数映射,来透明地访问和操作远程的 DECFLOAT 类型数据,并最大化地提高 DECFLOAT 数据查询的效率。
  3. 提供对 DECFLOAT 类型数据舍入模式的控制,使得 IBM InfoSphere Federation Server 在处理本地和远程的 DECFLOAT 数据时,舍入操作得到的结果一致。

总之,上述功能使得 IBM InfoSphere Federation Server 处理本地和远程数据源上的 DECFLOAT 数据的交互变为可能,并且更为简单快捷。


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=462245
ArticleTitle=IBM InfoSphere Federation Server V9.7 中 DECFLOAT 数据类型及相关语义支持
publish-date=01182010