JDBC 表函数配置
有时候期望使用不同的数据库,需要不同的 JDBC driver
,由于一些原因无法打包所有的 JDBC driver
- 多个不同版本的driver之间会有class冲突
- 我们没有验证和测试过一些数据库
- 某些JDBC driver法律上不允许商业re-distribute
因此,JDBC 表函数配置能够允许用户上传自己所需的JDBC driver,并对 JDBC 数据源进行配置。
注意:只有系统管理员(sys_admin)可以访问 JDBC 配置页面。
JDBC表函数表格 包含三列数据
- 驱动目录
- Jar包:该jdbc驱动文件
- 是否为内置:系统默认会为用户提供常见数据库的jdbc驱动
新建/编辑 JDBC 驱动目录
点击右上角按钮 新建 JDBC 驱动目录
即可弹出新建弹框。若需要新建一个 JDBC驱动目录,我们需要录入两个信息:
- 驱动目录:该驱动目录名称
- 我们推荐的驱动目录名称格式为
<driver_class_name>_<driver_version>
- 自定义的 JDBC驱动目录 名称无法重名,但我们可以录入与内置驱动目录相同的名称以覆盖内置驱动目录。
- 我们推荐的驱动目录名称格式为
- 驱动文件
- 仅允许上传单个文件,请上传 jar 包或多个 jar 包的压缩包(支持.zip, .tar, .tar.gz, .tgz)
删除 JDBC 驱动目录
我们允许删除自定义的 JDBC 驱动目录,点击操作列中的删除按钮
,即可删除该JDBC 驱动目录。
JDBC 数据源配置
点击右上角按钮 JDBC 数据源配置
即可弹出JDBC 数据源配置弹框。
JDBC数据源配置由两部分组成
- 辅助配置:一个辅助用户生成数据源配置,简化数据源配置流程的工具
- 配置文件:JDBC 数据源配置文件,用户可自行输入配置项,或复制辅助配置生成内容至该区域
辅助配置
辅助配置提供六个默认选项
数据源名称:配置项表头,必要选项
- 数据源名称不可重复
- 数据源名称只包含字母、数字、小数点(.)、中括号('[', ']')、下划线(_)、连接线(-)
驱动目录(driver_dir)
该选项为dropdown,用户可选择内置jdbc以及自定义jdbc
当选择内置驱动目录时,右侧将不会出现driver_dir值。
炎凰数据平台提供了几个默认的JDBC驱动,如下
```java
com.mysql.jdbc.Driver // MySql
org.postgresql.Driver // PostgreSQL
org.h2.Driver // H2
oracle.jdbc.driver.OracleDriver // Oracle
org.hsqldb.jdbcDriver // HSQLDB
com.microsoft.sqlserver.jdbc.SQLServerDriver // SQL Server
org.mariadb.jdbc.Driver // MariaDB
com.clickhouse.jdbc.ClickHouseDriver // ClickHouse
```
驱动名称(driver_dir)
- 当选择内置驱动目录时,驱动名称无法修改,为默认名称。
- 当选择自定义驱动目录时,可自定义驱动名称,我们推荐的驱动名称为类似于
com.mysql.jdbc.Driver
的完整类名
链接(url)
- 通常由
jdbc type
,db host
,db port
,db database
组成。
- 通常由
用户名(user)
密码(password)
- 此处密码可以是明文密码,当密码为明文密码时,右侧对应的键名为
password
- 我们也可对密码进行加密,当点击右侧
加密
按钮时,将会对密码进行加密,此时右侧对应的键名为encrypted_password
- 此处密码可以是明文密码,当密码为明文密码时,右侧对应的键名为
完成以上选项配置后,可点击右下复制
按钮,即可复制生成的配置内容。如需再次辅助配置,直接点击重置,即可回到初始状态
数据源文件配置
配置文件
- 配置文件位置:
${STONEWAVE_HOME}/var/conf/custom/jdbc_data_sources.toml
:UI上可更改的数据源配置目录${STONEWAVE_HOME}/var/conf/default/jdbc_data_sources.toml
:内置上传built-in
数据源配置,配置无法通过UI界面更改。备注可以通过terminal登录,手动更改。 需要注意避免两个配置文件有同名数据源。
JDBC数据源信息 参考上面辅助配置项说明。
例如:
# ${STONEWAVE_HOME}/var/conf/custom/jdbc_data_sources.toml
# 内置驱动配置数据源
[data_source_name]
url = "jdbc:postgresql://127.0.0.1:5432/mydatabase"
driver = "org.postgresql.Driver"
user = "root"
password = "root"
# 使用非内置驱动配置数据源
[data_source_name]
url = "jdbc:postgresql://127.0.0.1:5432/mydatabase"
driver = "org.postgresql.Driver"
driver_dir = "org.postgresql.Driver_v5" # 这里需填写具体上传驱动文件目录名称
user = "root"
password = "root"
# 加密数据源配置
[encrypted_data_source]
url = "jdbc:postgresql://127.0.0.1:5432/mydatabase"
driver = "org.postgresql.Driver"
driver_dir = "org.postgresql.Driver_v5" # 这里需填写具体上传驱动文件目录名称
user = "root"
encrypted_password = "f/KdklKy/+u1zsOsXNAhzOX03121bGGMtr6Zpg7Mq+4"运行对应JDBC表函数 通过UI将<example_database_driver.jar>驱动文件上传后。 然后运行table function。示例如下。 直接使用jdbc url 运行:
SELECT * FROM jdbc('SELECT 1',
'{"url":"jdbc:postgresql://127.0.0.1:5432/mydatabase",
"driver":"org.postgresql.Driver",
"user":"root",
"password":"root"}'使用配置数据源进行查询
SELECT * FROM jdbc('SELECT 1', 'data_source_name')
非内置驱动信息需通过文档查询该驱动class。