Skip to main content

连接数据库

简介

配置数据库连接的方式为:系统设置 -> 业务建模 -> 数据源管理

截止2025年11月6日,支持的数据库有:

  • mysql/doris/starrocks/TiDB/gbase(均使用mysql连接器)
  • postgres/GreenPlum(均使用pg连接器)
  • clickhouse
  • oracle
  • impala
  • sybase
  • 其他JDBC驱动

其中,oracle、impala、sybase、其他JDBC驱动的支持不在标准产品中,需要额外安装一个sql连接器来进行支持。

sql连接器

我们额外提供了一个名为UDBC(全称 Universal Database Connectivity)的镜像包。他是一个基于JAVA jdbc的API服务器,接受一个jdbcUrl和一个sql。然后返回数据查询结果。

UDBC下载及导入

UDBC的镜像包下载地址为:点此下载

下载完成后,通过docker load -i yiask_udbc_0.0.6.tar导入到docker镜像中。

docker-compose配置

在docker-compose.yml中添加udbc服务:

udbc: # 直连oracle等数据库时使用
container_name: yiask_udbc
restart: always
image: udbc:0.0.6
volumes:
- /yiask/database/drivers:/app/drivers

其中,/yiask/database/drivers是服务器上用来保存jdbc驱动的文件夹,可以根据具体情况修改此地址。

然后把需要对接的数据库的jdbc jar包放到服务器的drivers目录中。

同时,还要在docker-compose.yml中的app服务上做一个配置的添加

app:
container_name: yiask_xxxx
restart: always
links:
- mongo
- clickhouse
- udbc # 添加这一行

启动

在docker-compose.yml当前目录,重新启动整个项目:

docker compose up -d

测试联通性

启动后,可以用curl测试一下是否可以成功连接。

第一步,进入udbc这个container

docker exec -it yiask_udbc /bin/sh

第二步,调用curl进行测试

curl --location --request POST 'http://localhost:8080/api/v1/runSQL' --header 'Content-Type: application/json' --data-raw '{     "sql": "select 1 as h",     "jdbcUrl": "jdbc:odps:xxx",     "user": "Lxxx",     "password": "xxx" }'

其中的参数解释:

参数名解释是否必填
sql具体跑的sql
jdbcUrljdbc连接字符串
user用户名
password密码

其中,user和password是选填。没有用户名密码的时候或者用户名密码写到jdbcUrl里面的时候可以不填。

返回格式:

成功:

{
results: [
{id: 1, name: "张三"},
]
}

失败:

{
error: "error message"
}

注意:如果需要修改/添加驱动,完成后要重启容器,重启方式为:docker restart yiask_udbc

ChatBI中的配置

等UDBC服务器成功运行后,就可以开始新建数据源啦!

点击新建数据源, 选择相应的数据库即可,填入必要参数。保存后,点击测试连接,也可以去 测试与核验 -> SQL测试器 里面跑一个SQL进行测试。

多数据库直连

本系统支持同时连接多数据库。可以支持某些表在数据库A,某些表在数据库B。

如果不同数据库的业务不重叠、没有共用的实体表,则不需要额外处理。如果不同数据库有相同的实体表,则需要遵循以下原则:

  1. 事件表X如果在数据库X,则其所涉及的所有实体表都必须在数据库X中存在。
  2. 事件表A如果在数据库A事件表B如果在数据库B,且事件表A事件表B有相同维度实体表A,那么实体表A必须同时存在于数据库A数据库B且数据一模一样。