IBM Db2
PALO JDBC Catalog 支持通过标准 JDBC 接口连接 IBM Db2 数据库。本文档介绍如何配置 IBM Db2 数据库连接。
使用须知
要连接到 IBM Db2 数据库,您需要
- IBM Db2 11.5.x 或更高版本
- IBM Db2 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载最新或指定版本的 IBM Db2 驱动程序。推荐使用 IBM db2 jcc 11.5.8.0 版本。
- PALO 每个 FE 和 BE 节点和 IBM Db2 服务器之间的网络连接,默认端口为 51000。
连接 IBM Db2
1CREATE CATALOG db2 PROPERTIES (
2 "type"="jdbc",
3 "user"="USERNAME",
4 "password"="PASSWORD",
5 "jdbc_url" = "jdbc:db2://host:port/database",
6 "driver_url" = "jcc-11.5.8.0.jar",
7 "driver_class" = "com.ibm.db2.jcc.DB2Driver"
8)
备注:
jdbc_url 定义要传递给 IBM Db2 驱动程序的连接信息和参数。
层级映射
映射 IBM Db2 时,PALO 的 Database 对应于 DB2 中指定 DataBase(jdbc_url 参数中的 "database")下的一个 Schema。而 PALO 的 Database 下的 Table 则对应于 DB2 中 Schema 下的 Tables。即映射关系如下:
| PALO | IBM Db2 |
|---|---|
| Catalog | DataBase |
| Database | Schema |
| Table | Table |
类型映射
IBM Db2 到 PALO 类型映射
| IBM Db2 Type | PALO Type | Comment |
|---|---|---|
| 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 |
查询优化
谓词下推
当执行类似于 where dt = '2022-01-01' 这样的查询时,PALO 能够将这些过滤条件下推到外部数据源,从而直接在数据源层面排除不符合条件的数据,减少了不必要的数据获取和传输。这大大提高了查询性能,同时也降低了对外部数据源的负载。
行数限制
如果在查询中带有 limit 关键字,PALO 会将 limit 下推到 IBM Db2 数据库,以减少数据传输量。
转义字符
PALO 会在下发到 IBM Db2 的查询语句中,自动在字段名与表名上加上转义符:(""),以避免字段名与表名与 IBM Db2 内部关键字冲突。
常见问题
-
通过 JDBC Catalog 读取 IBM Db2 数据时出现
Invalid operation: result set is closed. ERRORCODE=-4470异常在创建 IBM Db2 Catalog 的 jdbc_url 连接串中添加连接参数:
allowNextOnExhaustedResultSet=1;resultSetHoldability=1;。如:jdbc:db2://host:port/database:allowNextOnExhaustedResultSet=1;resultSetHoldability=1;。
