跳转至

7.4.6 IBM Db2

Doris JDBC Catalog 支持通过标准 JDBC 接口连接 IBM Db2 数据库。本文档介绍如何配置 IBM Db2 数据库连接。

1 使用须知

要连接到 IBM Db2 数据库,您需要

  • IBM Db2 11.5.x 或更高版本

  • IBM Db2 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载最新或指定版本的 IBM Db2 驱动程序。推荐使用 IBM db2 jcc 11.5.8.0 版本。

  • Doris 每个 FEBE 节点和 IBM Db2 服务器之间的网络连接,默认端口为 51000

2 连接 IBM Db2

SQL
1
2
3
4
5
6
7
8
CREATE CATALOG db2 PROPERTIES (
    "type"="jdbc",
    "user"="USERNAME",
    "password"="PASSWORD",
    "jdbc_url" = "jdbc:db2://host:port/database",
    "driver_url" = "jcc-11.5.8.0.jar",
    "driver_class" = "com.ibm.db2.jcc.DB2Driver"
)

Tip

jdbc_url 定义要传递给 IBM Db2 驱动程序的连接信息和参数。支持的 URL 的参数可在 Db2 JDBC 驱动程序文档中找到。

3 层级映射

映射 IBM Db2 时, DorisDatabase 对应于 DB2 中指定 DataBasejdbc_url 参数中的 "database" )下的一个 Schema 。而 DorisDatabase 下的 Table 则对应于 DB2Schema 下的 Tables 。即映射关系如下:

Doris IBM Db2
Catalog DataBase
Database Schema
Table Table

4 类型映射

4.1 IBM Db2 到 Doris 类型映射

IBM Db2 Type Doris Type
SMALLINT SMALLINT
INT INT
BIGINT BIGINT
DOUBLE DOUBLE
DOUBLE PRECISION DOUBLE
FLOAT DOUBLE
REAL FLOAT
NUMERIC DECIMAL
DECIMAL DECIMAL
DECFLOAT DECIMAL
DATE DATE
TIMESTAMP DATETIME
CHAR CHAR
CHAR VARYING VARCHAR
VARCHAR VARCHAR
LONG VARCHAR VARCHAR
VARGRAPHIC STRING
LONG VARGRAPHIC STRING
TIME STRING
CLOB STRING
XML STRING
OTHER UNSUPPORTED

5 查询优化

5.1 谓词下推

当执行类似于 where dt = '2022-01-01' 这样的查询时, Doris 能够将这些过滤条件下推到外部数据源,从而直接在数据源层面排除不符合条件的数据,减少了不必要的数据获取和传输。这大大提高了查询性能,同时也降低了对外部数据源的负载。

5.2 行数限制

如果在查询中带有 limit 关键字, Doris 会将 limit 下推到 IBM Db2 数据库,以减少数据传输量。

5.3 转义字符

Doris 会在下发到 IBM Db2 的查询语句中,自动在字段名与表名上加上转义符: ("") ,以避免字段名与表名与 IBM Db2 内部关键字冲突。

6 常见问题

  1. 通过 JDBC Catalog 读取 IBM Db2 数据时出现 Invalid operation: result set is closed. ERRORCODE=-4470 异常

    在创建 IBM Db2 Catalogjdbc_url 连接串中添加连接参数: allowNextOnExhaustedResultSet=1;resultSetHoldability=1; 。如: jdbc:db2://host:port/database:allowNextOnExhaustedResultSet=1;resultSetHoldability=1;