一文了解如何使用 DBeaver 管理 DolphinDB

在日常的数据开发、分析和数据库运维中,一款优秀的 IDE 能够极大地提升工作效率。DBEaver 是一款由 Java 编写的一站式跨平台连接器,其社区版本已能支持连接近百种数据库,受到广大开发者的喜爱。近期。DolphinDB 与 DBeaver 团队共同努力,发布了 DBeaver 24.2.1 版本,新增 DolphinDB 驱动程序,支持在 DBeaver 中访问和管理 DolphinDB。

本文基于 DBeaver 24.2.1 与 DolphinDB 3.00.0 版本编写,用于指导用户如何通过 DBEaver 连接和操作 DolphinDB

1. DBeaver 简介及安装准备

DBeaver 是一款开源的数据库管理工具,广泛支持多种数据库,包括关系型、时序、 图、键值数据库等。它为数据库管理员和开发者提供了丰富的功能,如数据库连接管理、SQL 编辑器、数据可视化、查询结果的导出和分析、数据迁移,以及数据库的结构查看和修改等。DBeaver 支持在多种平台(Mac, Linux, windows)上运行。其直观的用户界面和丰富的功能,极大地提升了数据应用与开发效率,受到了广大开发者的喜爱。

安装 DolphinDB

DolphinDB 的版本需大于等于 3.00.0。这是因为 DBeaver 使用 JDBC DatabaseMetaData 接口中的 getCatalogs,getSchemas,getColumns 等相关方法访问数据库,而 DolphinDB 2.0 版本并没有实现 catalog。安装请参阅部署文档。

安装 DBeaver Community

点击Download 下载 DBeaver Community 版本。根据平台选择对应版本的安装包,版本需要 >= 24.2.1。

了解 catalog
DBeaver 访问的分布式库表需纳入 catalog 管理。若尚未了解 catalog,请先阅读文档 数据目录 。以下是在使用 DBEaver 时可能用到的函数。

函数作用示例
createCatalog(catalog)创建 catalogcreateCatalog("test")
创建 catalog test
createSchema(catalog, dbUrl, schema)把已有的数据库添加到指定的 catalog/schema 中createSchema("catalog1", "dfs://db1", "schema1")

2. 配置并连接 DolphinDB

本节介绍如何通过 DBEaver 连接 DolphinDB、如何离线配置 JDBC,以及如何进行连接配置。

2.1 创建连接

安装完成后, 按图示创建 DolphinDB 数据库连接。

图2-1 新建数据库连接

1. 创建连接

点击 Next 创建连接,输入主机、端口、用户名、密码这些基本的连接信息。

2. JDBC 配置及连接测试

点击 测试连接。若本地没有 DolphinDB JDBC 驱动,DBEaver 会自动从互联网进行下载。成功连接会提示”已连接“,若失败请检查 ip 、端口、用户名、密码的正确性以及防火墙。

离线环境配置 JDBC

可以手动下载 DolphinDB JDBC(版本 >=3.00.1.0),请选择 jar-with-dependencies 后缀的 jar 包。下载完成后,手动添加 JDBC 驱动。

图2-2 配置连接

在连接设置页面,点击 编辑驱动设置 → 库 → 添加文件,添加所下载的 jar 包。也可以通过这种方式更新DolphinDB JDBC 版本。更新版本的jdbc会实现更多的接口,使得 DBEaver DolphinDB Connector 可以使用更多的功能。

2.2 连接配置

图2-3 配置驱动属性

在上述界面中选择 高级参数 → Queries → Set active database, 填入属性值

use catalog  ?

至此,配置工作完成。另外,在常规->连接名称选项中,可以设置连接名称。可以输入一个具有辨识度的名称,以便工程化管理多个数据库。

图2-4 修改连接名称

3. DolphinDB Driver 使用案例

目前的 DolphinDB Driver 支持以下功能,可以满足数据开发的需求。

  • 查看分布式库表结构
  • 查询数据
  • 执行 DolphinDB 脚本
  • 导出分布式库表数据

以下是一个简单的使用案例,以及给出一些使用建议。

3.1 查看分布式库表结构

分布式库表需要纳入 catalog 管理。分别创建 catalog, schema, 及分布式库表,并写入数据。右键数据库连接 → SQL 编辑器,在 SQL 编辑器中,点击下面按钮执行脚本。

login("admin", "123456")
createCatalog("trading")
go
use catalog trading 

create database stock 
partitioned by VALUE(2019.11.07..2019.11.08), HASH([SYMBOL,25])
engine='TSDB'
go

create table stock.trade(
	date DATE,
	time TIME,
	timestamp TIMESTAMP,
	symbol SYMBOL,
	price DOUBLE,
	volume LONG,
)
partitioned by date, symbol
sortColumns=["symbol", "timestamp"]

执行成功后,右键 DolphinDB 连接 -> Refresh,就可以看到新建的库表信息。

图3-1 查看表结构

接着尝试写入一些数据。

n = 10000
date = take(2019.11.07 2019.11.08, n)
time = (09:30:00.000 + rand(int(6.5*60*60*1000), n)).sort!()
timestamp = concatDateTime(date, time)
price = 100+cumsum(rand(0.02, n)-0.01)
volume = rand(1000, n)
symbol = rand(`AAPL`FB`AMZN`MSFT, n)
data = table(date, time, timestamp, symbol, price, volume).sortBy!(`symbol`timestamp)
tableInsert(stock.trade, data)

注意:

  • 可以通过 createSchema 函数将已有的 DFS 表加入到某个 schema 中。
  • 在“查看表”菜单中的“数据”子选项会对 DFS 表的数据进行逻辑分页查询,执行全表扫描并在 DBeaver 的进程中缓存数据。因此,不建议对 DFS 表使用此选项。

3.2 执行 SQL 查询

在 SQLEditor 中,执行 SQL 查询。

select first(price) as open, max(price) as high
, min(price) as low, last(price) as close, sum(volume) as volume 
from stock.trade 
group by symbol, date, bar(time, 5*60*1000) as barStart

图3-2 查看SQL执行结果

在数据窗格中可以进一步对结果数据进行排序过滤,分页查看。需要注意的是,当前 DolphinDB Driver 使用的是 DBeaver Generic JDBC 连接器,其分页查询采用逻辑分页。这意味着 DBeaver 会从 DolphinDB 中查询所有结果数据,并将其缓存到 DBeaver 的内存中。因此,请避免查询大量数据(或在 SQL 中未通过 TOP/LIMIT 进行限制),否则可能会导致 DBeaver 出现 “Java heap out of memory” 错误,甚至卡死。

如果不想手动编写 SQL 语句,可以通过右键点击表名,选择“生成 SQL” → “SELECT” 来自动生成查询 SQL 语句。

3.3 执行 DolphinDB 脚本

除 SQL 外,DolphinDB Driver 还支持在编辑器中执行脚本语句,进行一些简单的数据分析或运维工作。

  • 矩阵计算
m = select first(price) as open, max(price) as high
, min(price) as low, last(price) as close, sum(volume) as volume 
from stock.trade 
group by symbol, date, bar(time, 5*60*1000) as barStart

U,s,v = matrix(m[,3:]).svd()
s
  • 集群运维
getSessionMemoryStat()
clearAllCache()
setMaxConnections(1024)

对于脚本执行,DBeaver 会针对有无返回结果( execute方法的返回值 true/false) 进行设计。如上文中的 U,s,v = matrix(m[,3:]).svd() 没有返回结果,意味着 DBeaver 不会展示 U, s, v 的值。而运行变量 s 可以查看具体的值:

图3-3 执行脚本

如果想批量执行多行脚本需要点击下面按钮。

3.4 导出数据至 csv

如果想要导出一些样例数据,可以右键对应的表 → 导出数据 。

图3-4 导出数据

通常按导航的默认设置点击 “Next” 即可完成导出。至此,本文对如何通过 DBeaver 连接 DolphinDB,并在其中查看库表结构,读取数据,编写脚本等操作进行了详细的介绍。通过阅读本文,您可以在 DBeaver 中对 DolphinDB 有效地管理和操作数据 。

4. 小结

目前 DolphinDB Driver 实现了基本的使用功能,可以满足 DolphinDB 用户的查看库表结构、查询数据、编写脚本的需求。当然,目前基于 Generic JDBC 的连接器实现存在一定的局限性。例如某些类型的变量无法直接查看。这是因为在 JDBC 的 ResultSet 接口设计中,将数据库的返回定义为一个表。

注:A table of data representing a database result set, which is usually generated by executing a statement that queries the database.

而 DolphinDB 脚本语言作为一门多范式编程语言,支持多种数量结构。针对这个冲突,DolphinDB JDBC 做了一定程度的包装(Wrap),将 scalar,vector, matrix 包装为一个表。目前不支持 dict 结构的包装,因此无法查看 dict 类型的数据。在后续版本中,我们会进一步地完善 DolphinDB Driver 的功能,提升用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/955552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenWrt 中使用 LuCI 界面部署 Docker 镜像

本篇博客将介绍如何在 OpenWrt 上使用 LuCI 部署 Docker 镜像,以 "hello-world" 镜像为例。 前提条件 已安装支持 Docker 的 OpenWrt 系统。 Docker 服务已在 OpenWrt 上成功安装并运行。 LuCI Docker 插件(luci-app-docker 或类似的管理界…

MAC AndroidStudio模拟器无网络

先确认PC端是正常访问网络的; 模拟器端修改Wifi设置:设置 - 网络和互联网 - WALN设置 按照上图修改; IP设置:从DHCP修改为静态,IP地址:10.0.2.16 ,网关:10.0.2.2 , DNS…

【开源免费】基于SpringBoot+Vue.JS欢迪迈手机商城(JAVA毕业设计)

本文项目编号 T 141 ,文末自助获取源码 \color{red}{T141,文末自助获取源码} T141,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

LINUX 实现终端动态进度条记录

1、转义字符 \r \n 的区别 \r 代表回车,他会清空光标所在行设为数据并将该行的内容清除。 \n 代表换行,将光标移动到下一行。 2、ffush的作用 fflush刷新缓存,fflash(stdout),就是将标准输出的缓存输出并清空。 我们知道LINUX中stdout是行…

vue集成高德地图API实现坐标拾取功能

安装与配置: 组件 | vue-amapDescriptionhttps://elemefe.github.io/vue-amap/#/zh-cn/introduction/install简介 | vuemap/vue-amap简介https://vue-amap.guyixi.cn/zh-cn/introduction/introduction.html ​​​​我的应用 | 高德控制台高德开放平台官网控…

C#异步多线程——浅谈async/await底层原理

async/await是块语法糖,编译器帮助我们做了很多工作,下面我们就简单剖析一下async/await的底层原理。 反编译工具ILSpy安装 我用的是ILSpy反编译生成的dll程序集。还没有ILSpy工具的小伙伴可以直接在VS中安装;点击Extensions>Manage Ext…

ThinkPHP 8的一对多关联

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…

npm的包管理

从哪里下载包 国外有一家 IT 公司,叫做 npm,Inc.这家公司旗下有一个非常著名的网站: https://www.npmjs.com/,它是全球最大的包共享平台,你可以从这个网站上搜索到任何你需要的包,只要你有足够的耐心!到目前位置,全球约…

【python】OpenCV—Extract Horizontal and Vertical Lines—Morphology

文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、参考 更多有趣的代码示例,可参考【Programming】 1、功能描述 基于 opencv-python 库,利用形态学的腐蚀和膨胀,提取图片中的水平或者竖直线条 2、代码实现 导入基本的库函数 im…

《Keras 3 在 TPU 上的肺炎分类》

Keras 3 在 TPU 上的肺炎分类 作者:Amy MiHyun Jang创建日期:2020/07/28最后修改时间:2024/02/12描述:TPU 上的医学图像分类。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…

CSS认识与实践

目录 CSS 是什么 基本语法规范 引入方式 内部样式表 行内样式表 外部样式 空格规范 选择器 选择器的功能 选择器的种类 基础选择器 标签选择器 类选择器 id 选择器 通配符选择器 基础选择器小结 复合选择器 后代选择器 子选择器 并集选择器 伪类选择器 复合…

Windows环境:使用命令行脚本批量发送http请求

因为服务器Windows版本问题,无法使用curl,所以只能使用wget。 C:\Windows\System32\wget.exe 需求背景: 传入客户端参数,请求服务端。 将请求参数保存到文本文件中,命令行读取文本文件,然后分割字符串&am…

Logback日志技术

Logback日志技术 日志 日志(Logging)是软件开发和运维中用于记录系统或应用程序运行期间发生的运行信息、状态变化、错误信息等的一种机制,这种记录的方式就好像我们日常生活中写日记一样。它提供了一种持久化的方式,使得开发者…

6. 快速掌握抽象类及接口

目录 1. 抽象类1.1 抽象类语法1.2 抽象类特性1.3 抽象类的作用 2. 接口2.1 接口语法2.2 接口的特性 3. 接口案例4. 常用接口4.1 Comparable接口---compareTo()方法4.2 clonable接口---clone方法4.2 深拷贝和浅拷贝 5. Object类5.1 equals()方法5.2 toString()方法5.3 hashCode(…

womb子宫一词解趣

英语单词 womb,是“子宫”的意思,这个单词非常有趣,下面我们来说说它有趣在什么地方。 首先,womb 这个单词,大体可以分成两个部分,即wom-和b-,其中wom-可对应子宫的子,b-可对应子宫…

Spring Cloud概述

(一)定义 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一套完整的解决方案…

年后找工作需要注意的事项

大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…

windows远程桌面连接限定ip

1,Windows防火墙->高级设置->远程桌面 - 用户模式(TCP-In)->作用域->远程IP地址 2,启用规则

电脑换固态硬盘

参考: https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种: 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜: M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…

3.无重复字符的最长字串--力扣

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “…