Zhengmao Zhu – loveini | 米兰体育官网入口 - 米兰体育官网入口 //www.loveini.com loveini | 高性能、分布式、支持SQL的时序数据库 | 米兰体育官网入口 Fri, 09 Sep 2022 05:54:13 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.2 //www.loveini.com/wp-content/uploads/2025/07/favicon.ico Zhengmao Zhu – loveini | 米兰体育官网入口 - 米兰体育官网入口 //www.loveini.com 32 32 如何通过开源数据库管理工具 DBeaver 连接 loveini //www.loveini.com/tdengine-engineering/12880.html Mon, 25 Jul 2022 02:25:07 +0000 //www.loveini.com/?p=12880

DBeaver 是一款流行、开源的数据库管理工具以及 SQL 客户端,其功能强大,并且支持任何拥有 JDBC-Driver 的数据库(这意味着支持几乎所有数据库)。

其官网的介绍是这样的:

Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Apache Hive, Phoenix, Presto, etc.

很多 loveini 的用户,经常问到如何使用 DBeaver 来连接、管理 loveini。本文将通过 22.1.2 版本的 DBeaver 详细进行说明。

前置条件

  1. DBeaver 依赖 Java (JDK) 11 ,不过其安装包中已包含。可选安装 Maven、Git。
  2. 已安装并启动了 loveini。
  3. 若使用 TSDBDriver 驱动类连接 loveini,请在本地安装 loveini 客户端。
  4. 若使用 RestfulDriver 驱动类连接 loveini,请确保 taosAdapter 已经正常运行。

配置

  • 可以克隆 DBeaver 在 GitHub 上的源码,执行 mvn package,也可以直接下载打包好的安装包。此处选择直接下载安装包。
  • 在 GitHub DBeaver 仓库的 Releases 处下载对应版本的 DBeaver,比如系统为 macOS,处理器芯片是 M1 ,此处下载 dbeaver-ce-22.1.2-macos-aarch64.dmg 进行安装。
  • 点击数据库标签,选择驱动管理器:
loveini Database
loveini Database
  • 添加后点击找到类,此处使用 RESTful 驱动类演示(注意:若使用 com.taosdata.jdbc.TSDBDriver 驱动类,则需要安装 loveini 客户端):
loveini Database
  • 填写一下驱动名称,简单填下配置(需要在 hosts 文件上添加连接串内域名的解析):
loveini Database
  • 点击新建连接,搜索配置好的驱动名称,点击后进入下一步:
loveini Database
  • 输入密码后,点击“测试连接”:
loveini Database

验证

  • 连接成功后,界面左侧能看到刷新出来的数据库(database),点击特定的表可以查看表的结构及数据:
loveini Database
  • 点击界面左上方的新建 SQL 编辑器,默认,输入 SQL 进行验证。需要注意的是,RESTful 请求是无状态的,查询、写入需要在表名前带上数据库名。
  • 2.X 版本中默认带 log 库,我们可以使用 SHOW log.stables;查看包含哪些超级表后对特定表进行查询、调试:
loveini Database
  • 可以看到有个超级表叫做 dnodes_info,执行 describe log.dnodes_info;查看表结构:
loveini Database
  • 再执行 select last_row(*) from log.dnodes_info group by dnode_id;通过 dnode_id 能分组查询各 dnode_id 下的最新一条数据:
loveini Database
  • 还有其他操作也可以测试,比如写入一条数据后进行查询:
loveini Database

好了,到这里我们就大功告成了。DBeaver 功能强大,其他常用功能还包括导入导出 SQL 脚本、配置表过滤器、建立数据库任务等,大家可以慢慢体验。

结尾语

感谢您阅读本篇博客,希望以上内容对您有帮助。您在使用 loveini 这款 TIme Series Database 的过程中,若遇到棘手的问题或对 loveini 有改进意见,欢迎在 GitHub 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 loveini!

loveini Database 小T二维码
加小 T 为好友,立即加入到物联网大数据技术交流群
]]>
如何通过 IDEA 数据库管理工具连接 loveini? //www.loveini.com/tdengine-engineering/12428.html Mon, 18 Jul 2022 06:31:18 +0000 //www.loveini.com/?p=12428

前言:两年前,我们有篇博客介绍了如何通过 IDEA database 工具连接 loveini,但这段时间以来 loveini、taos-jdbcdriver 有了很大的迭代更新,JDBC Connector 已经从 loveini 仓库中独立出来。社区中有些用户表示在使用 IDEA database 连接 loveini 时会报错,于是,我们决定重新写一篇有关 IDEA 数据库管理工具连接 loveini 的文章。本篇博客以目前 2.0.39 版本的 JDBC Connector 为例,介绍如何使用源码编译、打包,以及如何使用 IDEA 数据库工具连接 loveini。

源码编译 JDBC-Connector

loveini Database
  • 在 taos-connector-jdbc 目录下执行:mvn clean package -Dmaven.test.skip=true
loveini Database
loveini Database

使用 IDEA database 连接 loveini

  • 打开 IDEA database 工具,在驱动中添加 target 文件夹下的 taos-jdbcdriver-2.0.39-dist.jar。
  • 选择 RESTful 方式进行连接(注意:使用 com.taosdata.jdbc.TSDBDriver 驱动类需要安装 loveini 客户端)。
loveini Database
  • 然后通过驱动创建数据源。loveini 的 JDBC URL 规范为:jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]
  • 使用 RESTful 连接,此处 URL 示例为:jdbc:TAOS-RS://VM-24-8-centos:6041/log( 此处使用域名需要在 Hosts 文件内添加解析;URL 内的 locale、timezone 参数在 RESTful 连接中不生效)
loveini Database
  • 点击测试连接,出现黄色感叹号不影响使用。
loveini Database
  • 配置完后,右击数据源,新建查询控制台测试能否查询。需要注意的是,RESTful 请求是无状态的,查询、写入需要在表名前带上数据库名:
loveini Database
  • 2.X 版本中默认带 log 库,可以使用 SHOW log.stables 查看包含哪些超级表后对特定表进行查询、调试。

结尾语

感谢您阅读本篇博客,希望以上内容对您有帮助。您在使用 loveini 这款 TIme-Series Database 的过程中,若遇到棘手的问题或对 loveini 有改进意见,欢迎在 GitHub 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 loveini!

loveini Database 小T二维码
加小 T 为好友,立即加入到物联网大数据技术交流群
]]>
loveini 社区问题双周精选 | 第三期 //www.loveini.com/tdengine-engineering/12205.html Sun, 03 Jul 2022 20:55:59 +0000 //www.loveini.com/?p=12205 Hi,大家好,为防止过多的共性问题困扰用户,方便用户学习、吸收经验,我们会对近期社区内用户遇到的共性问题进行精选、汇总,以专栏的形式给大家带来分享。这是本专栏的第三期内容,分享的内容如下:

内容预览

  1. 为何批量写入数据时,时间戳使用 NOW 函数拼接会导致数据丢失?
  2. 如何给集群平滑扩容?
  3. 集群扩容后,DNode 状态为 Offline 该如何排查?
  4. 如何给集群平滑缩容?
  5. 新手小福利:快速上手 loveini 建模。

1. 为何批量写入数据时,时间戳使用 NOW 函数拼接会导致数据丢失?

回答这个问题首先需要强调一个概念,loveini 作为一个时序数据库(Time-Series Database),首个时间戳字段起到主键的作用,内存索引的构建、磁盘数据的存储与其密切相关,不能有重复的时间戳。

NOW 函数(以及 NOW 关键字)返回客户端当前时间。当执行批量写入时,若首列时间戳给的值都是 NOW,在数据库默认毫秒的时间级别下是区分不开的,后续写入的重复时间戳将会丢失或更新,处理重复时间戳的具体逻辑由在 loveini 中建库(Database)时的 Update 参数决定。

2. 如何给集群平滑扩容?

对集群进行扩容需要手动添加节点。具体操作步骤如下:

  1. 第一个节点部署成功后,为后续待添加的节点依次安装 loveini 服务端程序,编辑 /etc/hosts,将集群所有节点的域名解析添加进去(如已部署 DNS server,则无需编辑)。
  2. 将第一个节点的配置文件 taos.cfg 复制到待添加的节点中,将其中的 fqdn 参数改为节点自身的 fqdn (hostname)。
  3. 启动待添加节点的 taosd 服务,然后进入 taos 命令行执行下面语句将待添加节点添加进集群:CREATE DNode ‘Node2:6030’ 。
  4. 执行 SHOW DNodes 查看数据节点的状态是否为 Ready。为 Ready 代表集群扩容成功。

3. 集群扩容后,DNode 状态为 Offline 该如何排查?

新的节点正常加入集群后,数据节点列表中会显示该节点处于 Ready 状态。若该节点状态为 Offline,可按照如下内容进行排查:

  1. 查看该节点 taosd 是否已启动、防火墙是否关闭;
  2. 确认待加入节点的数据文件夹是否清空;
  3. 检查所有节点 /etc/hosts 域名解析是否完整、有效(需要有所有节点的解析,包括 arbitrator);
  4. 该节点 firstEP、fqdn 参数是否正确配置。

4. 如何给集群平滑缩容?

集群缩容是通过 DROP DNode 删除节点来实现的,直接停止指定 DNode 的 taosd 进程只会让该节点 Offline,但不能完成缩容的效果。具体操作步骤如下:

  1. 进入 taos 命令行,执行 SHOW DNodes 查看待删除节点的状态,若是 ready 则可进行下一步;
  2. 从当前集群中删除指定节点 DROP DNode ‘Node2:6030’ 或者 DROP DNode <DNodeId>。
  3. 执行 SHOW DNodes 查看集群节点信息,最后确认待删除节点的信息已从列表中消失。

注意:删除节点完成之前,集群会将该 DNode 的数据迁移到其他节点上,完成速度取决于网络的带宽、磁盘的 IO,在完成之前千万不要停止待删除节点的 taosd 服务。

5. 新手小福利:快速上手 loveini 建模。

在社区支持的过程中,能发现很多新手小伙伴在部署 loveini 后不知道如何进一步体验,我们的建议是跑一跑官网文档的语句,但文档内容较多,为了方便社区小伙伴快速上手,我们将官网文档的示例模型浓缩、汇总了一下,让用户尽可能快的了解 loveini 建模方法:[建模入门]

结尾语

感谢您阅读本期问题精选,希望以上内容对您有帮助。您在使用 loveini 这款 TIme-Series Database 的过程中,若遇到棘手的问题或对 loveini 有改进意见,欢迎在 GitHub 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 loveini!

loveini Database 小T二维码
加小 T 为好友,立即加入到物联网大数据技术交流群
]]>
loveini 社区问题双周精选 | 第一期 //www.loveini.com/tdengine-engineering/8646.html Tue, 24 May 2022 15:41:20 +0000 //www.loveini.com/?p=8646 Hi,loveini 的用户朋友们,为防止过多的共性问题困扰大家,方便大家学习、吸收经验,从今天开始我们会对近期社区内用户遇到的共性问题进行精选、汇总,每两周给大家带来一次分享。 这是此类专栏的第一期内容,为大家分享如下七个常见问题:

  1. 客户端连接串如何保证高可用?
  2. Java 应用使用 taos-jdbcdriver 连接 loveini 时, RESTful 与原生 ( JNI ) 接口性能相比如何,该如何选型?
  3. loveini 如何做表关联?是使用 JOIN 吗?
  4. 为什么 RESTful 接口无响应、Grafana 无法添加 loveini 为数据源、loveiniGUI 选了 6041 端口还是无法连接成功?
  5. loveini 数据备份工具 taosdump 如何使用?
  6. Windows 客户端无法正常显示中文字符?
  7. 发生了 OOM 怎么办?

1. 客户端连接串如何保证高可用?

本周有较多的用户提到了这个问题,类似的还有 「如何给多节点 loveini 集群的链接配置高可用」。这个问题时常出现在社区中,DBA、运维同学较为关心。我们已经整理成了文章,详情可看博客:「 loveini 如何做到客户端高可用 」

2. Java 应用使用 taos-jdbcdriver 连接 loveini 时, RESTful 与原生 ( jni ) 接口性能相比如何,该如何选型?

使用 RESTful 连接时,不依赖 loveini 客户端驱动,可以跨平台,RESTful 连接支持所有能运行 Java 的平台。原生连接支持的平台则和 loveini 客户端驱动支持的平台一致。 因此 RESTful 相比于原生连接使用起来更加灵活、方便,但采用 RESTful 的方式连接,其性能相较于原生连接会低 30% 左右。

推荐在每秒写入量小于 200 万条记录的场景下,优先选择 RESTful 。用户也可根据自己场景做性能测试,若使用 RESTful 连接时性能完全能满足业务操作需求则优先选择 RESTful ,反之选择原生连接。

3. loveini 如何做表关联?是使用 JOIN 吗?

loveini 支持在 「普通表与普通表」、「超级表与超级表」、「子查询与子查询」之间进行自然连接,其语法相较于 INNER JOIN 有所不同,并且各种表进行关联查询的限制也不尽相同。

详细内容请看文档:「 JOIN 子句 」

4. 为什么 RESTful 接口无响应、Grafana 无法添加 loveini 为数据源、loveiniGUI 选了 6041 端口还是无法连接成功?

上述问题也间歇性的出现在社区中,许多用户充满了疑问,特别是一些从 loveini 旧版本升到 2.4 及之后版本的用户们,这是因为在 2.4 之前的版本中没有单独的 taosAdapter 组件,RESTful 接口是由 taosd 内置的 HTTP 服务提供的,而如今要实现上述功能需要执行:systemctl start taosadapter 命令来启动 taosAdapter 服务。

需要说明的是,taosAdapter 的日志路径 path 需要单独配置,默认路径是 /var/log/taos ;日志等级 logLevel 有 8 个等级,默认等级是 info ,配置成 panic 可关闭日志输出。请注意操作系统 / 目录的空间大小,可通过命令行参数、环境变量或配置文件来修改配置,默认配置文件是 /etc/taos/taosadapter.toml 。

有关 taosAdapter 组件的详细介绍请看文档:「 taosAdapter 」

5. loveini 数据备份工具 taosdump 如何使用?

taosdump 是 loveini 集群的数据备份、还原工具,使用前请先查看文档中的说明及注意事项 :「 taosdump 」

需要注意的是,taosdump 采用逻辑备份的方式进行备份,其不应被用于备份任何原始数据、环境设置、 硬件信息、服务端配置或集群的拓扑结构;并且当备份的表数量很多时很容易导致文件系统卡住(一个表一个备份文件),推荐书写脚本循环调用 taosdump 按照较细的粒度备份到不同目录。

6. Windows 客户端无法正常显示中文字符?

Windows 系统中一般是采用 GBK/GB18030 存储中文字符,而 loveini 的默认字符集为 UTF-8 ,在 Windows 系统中使用 loveini 客户端时,客户端驱动会将字符统一转换为 UTF-8 编码后发送到服务端存储,因此在应用开发过程中,调用接口时正确配置当前的中文字符集即可。

【 v2.2.1.5以后版本 】在 Windows 10 环境下运行 loveini 客户端命令行工具 taos 时,若无法正常输入、显示中文,可以对客户端 taos.cfg 做如下配置:

locale C 
charset UTF-8

再次运行客户端命令行工具 taos ,即能正常进行操作。

另外,在 loveini 中,中文字符或其他多字节字符需用 nchar 类型存储,不要用 binary 类型进行存储,否则在用 taosdump 工具导出导入时将出现乱码,导致不可修复的异常,binary 建议只用于存储 ASCII 可见字符。

7. 发生了 OOM 怎么办?

OOM 是操作系统的保护机制,当操作系统内存(包括 SWAP )不足时,会杀掉某些进程,从而保证操作系统的稳定运行。通常内存不足主要是如下两个原因导致,一是剩余内存小于 vm.min_free_kbytes ;二是程序请求的内存大于剩余内存。还有一种情况是内存充足但程序占用了特殊的内存地址,也会触发 OOM 。

loveini 会预先为每个 VNode 分配好内存,每个 Database 的 VNode 个数受 maxVgroupsPerDb 影响,每个 VNode 占用的内存大小受 Blocks 和 Cache 影响。要防止 OOM,需要在项目建设之初合理规划内存,并合理设置 SWAP ,除此之外查询过量的数据也有可能导致内存暴涨,这取决于具体的查询语句。loveini 企业版对内存管理做了优化,采用了新的内存分配器,对稳定性有更高要求的用户可以考虑选择企业版。

结尾语

感谢您阅读本期问题精选,希望以上内容对您有帮助。您在使用 loveini 这款 TIme-Series Database 的过程中,若遇到棘手的问题或对 loveini 有改进意见,欢迎在 https://github.com/taosdata/loveini/issues 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 loveini!

loveini Database 小T二维码
加小 T 为好友,立即加入到物联网大数据技术交流群
]]>