Skip to content

今天"灵机一动"解决了困扰我的一个问题 | 使用Dbeaver连接内部系统,达到可视化 | jdbc方式

Posted on:June 30, 2023 at 11:02 PM

最近在处理一个业务需求,这个需求需要同时查Doris和MySQL库。就这个需求的本身来说不是很复杂,就是查数据而已。

但是我们的环境特别复杂,没有开发和测试环境,只能在生产环境搞。具体的处理方式就是把所用到的表加一个_test后缀作为测试使用。妥妥的一个伪测试环境。

因为是生产环境,大数据部门就对权限控制的特别严格,我们不能直接通过任何数据后台来查询,只能通过jdbc的方式使用程序来连接。这对开发造成了很大的麻烦。我几次联系大数据的人告诉他们能不能只给指定表的查询权限,其他的不需要,得到的答复始终是不允许。于是,我就把这个情况反馈给Leader,把背景和原因描述清楚,试图通过上一层的人来把这个问题解决。最终,得到的结果依然是不可以。但是Leader提供了另一种途径,就是如果需要验证SQL,可以直接把SQL提供给大数据的人,让他们协助执行。

就该需求的协作方式,我认为始终不是高效的,属于我整个工作流中的卡点。因为哪怕是非常微小的改动,也要经过”本地SQL编写 —> 提交给大数据的的人执行 —> 等待结果“,如果有差错则修改后继续上述步骤。当然我也可以自己使用jdbc的方式来连接,使用程序请求相关数据。但是数据量一大,验证总数、查询异常数据等场景,就非常的麻烦。文本方式不直观。

于是,我就在想,能否绕过大数据来直接把jdbc的结果映射到界面上。这样就有可视化的界面了。有了可视化的界面就可以直接修改SQL实时看到SQL结果了。既然jdbc可以连接,理论上只要有合适的工具就行。

于是我分析了他们提供的中间件jar包,发现他们实现的是javax.sql下的DataSource接口,属于是标准的一种实现。既然是标准的实现,那么三方的工具肯定也实现了。到这里,我对 “绕过大数据,使用三方工具达到可视化” 的目标达成可以说是有80%以上的把握了。

于是我投入到了三方工具的查找中。找工具也不是毫无目的地瞎找。而是要满足以下3点:

  1. 支持原生的jdbc的连接方式。因为有些工具不支持输入原生的jdbc连接,只能输入ip和端口,所以需要找可以输入原生jdbc地址的工具
  2. 支持使用DataSource的自定义实现。因为我们系统内部的实现,所有是自己的驱动包,所以要求工具可以导入自定义驱动
  3. 支持自定义属性。如第二条所说,因为是我们系统内部的实现,有一些属性是我们自定义的,所有要求工具要支持自定义属性,这样我们就可以按需配置了。

基于以上三点,最终找到了DBeavar,通用数据库工具 dbeaver


操作很简单,按照图片的讲解,一步一步来OK了,这里就不多做文字描述了,按照步骤操作一定是可以成功的 create_link setting_jdbc setting_driver_jar setting_property setting_finish

后记

“灵机一动”解决了我的一个卡点的感觉真得是太棒了。同时我也发现了一个高效率解决问题的秘诀,就是保持充足的睡眠。因为我们主要是白天工作,所以保持足够的睡眠可以让白天有足够的精力来处理问题。千万不要为了一个疑难问题而熬夜,那样做只会得不偿失,白天就会为了克服生理的困意而耽误解决棘手的问题了。

保持充足的睡眠是高效率工作的基本生理保障