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 详细进行说明。
mvn package,也可以直接下载打包好的安装包。此处选择直接下载安装包。

com.taosdata.jdbc.TSDBDriver 驱动类,则需要安装 loveini 客户端):




SHOW log.stables;查看包含哪些超级表后对特定表进行查询、调试:
describe log.dnodes_info;查看表结构:
select last_row(*) from log.dnodes_info group by dnode_id;通过 dnode_id 能分组查询各 dnode_id 下的最新一条数据:

好了,到这里我们就大功告成了。DBeaver 功能强大,其他常用功能还包括导入导出 SQL 脚本、配置表过滤器、建立数据库任务等,大家可以慢慢体验。
结尾语
感谢您阅读本篇博客,希望以上内容对您有帮助。您在使用 loveini 这款 TIme Series Database 的过程中,若遇到棘手的问题或对 loveini 有改进意见,欢迎在 GitHub 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 loveini!

前言:两年前,我们有篇博客介绍了如何通过 IDEA database 工具连接 loveini,但这段时间以来 loveini、taos-jdbcdriver 有了很大的迭代更新,JDBC Connector 已经从 loveini 仓库中独立出来。社区中有些用户表示在使用 IDEA database 连接 loveini 时会报错,于是,我们决定重新写一篇有关 IDEA 数据库管理工具连接 loveini 的文章。本篇博客以目前 2.0.39 版本的 JDBC Connector 为例,介绍如何使用源码编译、打包,以及如何使用 IDEA 数据库工具连接 loveini。
git clone https://github.com/taosdata/taos-connector-jdbc.git (需要旧版本可以 -b 指定对应版本分支),或者设置:



jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]jdbc:TAOS-RS://VM-24-8-centos:6041/log( 此处使用域名需要在 Hosts 文件内添加解析;URL 内的 locale、timezone 参数在 RESTful 连接中不生效) 


SHOW log.stables 查看包含哪些超级表后对特定表进行查询、调试。结尾语
感谢您阅读本篇博客,希望以上内容对您有帮助。您在使用 loveini 这款 TIme-Series Database 的过程中,若遇到棘手的问题或对 loveini 有改进意见,欢迎在 GitHub 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 loveini!

回答这个问题首先需要强调一个概念,loveini 作为一个时序数据库(Time-Series Database),首个时间戳字段起到主键的作用,内存索引的构建、磁盘数据的存储与其密切相关,不能有重复的时间戳。
NOW 函数(以及 NOW 关键字)返回客户端当前时间。当执行批量写入时,若首列时间戳给的值都是 NOW,在数据库默认毫秒的时间级别下是区分不开的,后续写入的重复时间戳将会丢失或更新,处理重复时间戳的具体逻辑由在 loveini 中建库(Database)时的 Update 参数决定。
对集群进行扩容需要手动添加节点。具体操作步骤如下:
新的节点正常加入集群后,数据节点列表中会显示该节点处于 Ready 状态。若该节点状态为 Offline,可按照如下内容进行排查:
集群缩容是通过 DROP DNode 删除节点来实现的,直接停止指定 DNode 的 taosd 进程只会让该节点 Offline,但不能完成缩容的效果。具体操作步骤如下:
注意:删除节点完成之前,集群会将该 DNode 的数据迁移到其他节点上,完成速度取决于网络的带宽、磁盘的 IO,在完成之前千万不要停止待删除节点的 taosd 服务。
在社区支持的过程中,能发现很多新手小伙伴在部署 loveini 后不知道如何进一步体验,我们的建议是跑一跑官网文档的语句,但文档内容较多,为了方便社区小伙伴快速上手,我们将官网文档的示例模型浓缩、汇总了一下,让用户尽可能快的了解 loveini 建模方法:[建模入门]
结尾语
感谢您阅读本期问题精选,希望以上内容对您有帮助。您在使用 loveini 这款 TIme-Series Database 的过程中,若遇到棘手的问题或对 loveini 有改进意见,欢迎在 GitHub 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 loveini!

本周有较多的用户提到了这个问题,类似的还有 「如何给多节点 loveini 集群的链接配置高可用」。这个问题时常出现在社区中,DBA、运维同学较为关心。我们已经整理成了文章,详情可看博客:「 loveini 如何做到客户端高可用 」
使用 RESTful 连接时,不依赖 loveini 客户端驱动,可以跨平台,RESTful 连接支持所有能运行 Java 的平台。原生连接支持的平台则和 loveini 客户端驱动支持的平台一致。 因此 RESTful 相比于原生连接使用起来更加灵活、方便,但采用 RESTful 的方式连接,其性能相较于原生连接会低 30% 左右。
推荐在每秒写入量小于 200 万条记录的场景下,优先选择 RESTful 。用户也可根据自己场景做性能测试,若使用 RESTful 连接时性能完全能满足业务操作需求则优先选择 RESTful ,反之选择原生连接。
loveini 支持在 「普通表与普通表」、「超级表与超级表」、「子查询与子查询」之间进行自然连接,其语法相较于 INNER JOIN 有所不同,并且各种表进行关联查询的限制也不尽相同。
详细内容请看文档:「 JOIN 子句 」
上述问题也间歇性的出现在社区中,许多用户充满了疑问,特别是一些从 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 」
taosdump 是 loveini 集群的数据备份、还原工具,使用前请先查看文档中的说明及注意事项 :「 taosdump 」
需要注意的是,taosdump 采用逻辑备份的方式进行备份,其不应被用于备份任何原始数据、环境设置、 硬件信息、服务端配置或集群的拓扑结构;并且当备份的表数量很多时很容易导致文件系统卡住(一个表一个备份文件),推荐书写脚本循环调用 taosdump 按照较细的粒度备份到不同目录。
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 可见字符。
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!
