# Ruoyi-Plus-TDengine **Repository Path**: zhangbg/ruoyi-plus-tdengine ## Basic Information - **Project Name**: Ruoyi-Plus-TDengine - **Description**: ruoyi连接时序数据库 时序数据https://docs.taosdata.com/intro/ - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 30 - **Forks**: 16 - **Created**: 2023-05-15 - **Last Updated**: 2025-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **常见问题** ``` 使用 Statement 的 addBatch() 和 executeBatch() 来执行“批量写入/更新”,为什么没有带来性能上的提升? 原因:TDengine 的 JDBC 实现中,通过 addBatch 方法提交的 SQL 语句,会按照添加的顺序,依次执行,这种方式没有减少与服务端的交互次数,不会带来性能上的提升。 解决方法:1. 在一条 insert 语句中拼接多个 values 值;2. 使用多线程的方式并发插入;3. 使用参数绑定的写入方式 java.lang.UnsatisfiedLinkError: no taos in java.library.path 原因:程序没有找到依赖的本地函数库 taos。 解决方法:Windows 下可以将 C:\TDengine\driver\taos.dll 拷贝到 C:\Windows\System32\ 目录下,Linux 下将建立如下软链 ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so 即可,macOS 下需要建立软链 ln -s /usr/local/lib/libtaos.dylib。 java.lang.UnsatisfiedLinkError: taos.dll Can't load AMD 64 bit on a IA 32-bit platform 原因:目前 TDengine 只支持 64 位 JDK。 解决方法:重新安装 64 位 JDK。 java.lang.NoSuchMethodError: setByteArray 原因:taos-jdbcdriver 3.* 版本仅支持 TDengine 3.0 及以上版本。 解决方法: 使用 taos-jdbcdriver 2.* 版本连接 TDengine 2.* 版本。 java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer; ... taos-jdbcdriver-3.0.1.jar 原因:taos-jdbcdriver 3.0.1 版本需要在 JDK 11+ 环境使用。 解决方法: 更换 taos-jdbcdriver 3.0.2+ 版本。 ``` **使用 ruoyi-vue-plus 开发 https://gitee.com/dromara/RuoYi-Vue-Plus** **TemperatureMapperTest 类是测试用例** **1. docker 安装 tdengine** **_1. 拉取 TDengine 镜像_** ```shell docker pull tdengine/tdengine:latest ``` **_2. 创建挂载目录, 注意给文件赋予读和写的权限。_** ```shell sudo mkdir -p /whale/v-TDengine/taos/log sudo mkdir -p /whale/v-TDengine/taos/data ``` **_3.使用 docker 安装 tdengine 需映射网络端口和文件夹,时间较长_** ![img.png](img.png) ```shell sudo docker run -d --name tdengine -h tdengine -p 6041:6041 -p 6030-6035:6030-6035 -p 6030-6035:6030-6035/udp -v /etc/localtime:/etc/localtime -v /wahle/v-TDengine/taos/log:/var/log/taos -v /whale/v-TDengine/taos/data:/var/lib/taos tdengine/tdengine:lates ``` ##解释 ```shell #--name tdengine ##指定容器名称便于访问 #-h tdengine ##指定容器主机名,用作TDengine的FQDN #-p 6041:6041 ##映射RESTful端口 #-p 6030-6035:6030-6035 #-p 6030-6035:6030-6035/udp ##映射taos客户端使用端口,必须包含TCP和UDP #-v /wahle/v-TDengine/taos/log:/var/log/taos ##映射日志目录 #-v /wahle/v-TDengine/taos/data:/var/lib/taos ##映射数据目录 #tdengine/tdengine:latest ## 最新的映像版本名称为tdengine user:登录 TDengine 用户名,默认值 'root'。 password:用户登录密码,默认值 'taosdata'。 ``` **_4. docker exec -it tdenggine bash_** 可以使用 TDengine 的自带工具 taosBenchmark 快速体验 TDengine 的写入速度。 **_5.启动 TDengine 的服务,在终端执行 taosBenchmark(曾命名为 taosdemo):_** $ taosBenchmark 该命令将在数据库 test 下面自动创建一张超级表 meters,该超级表下有 1 万张表,表名为 d0 到 d9999,每张表有 1 万条记录,每条记录有 ts、current、voltage、phase 四个字段,时间戳从 2017-07-14 10:40:00 000 到 2017-07-14 10:40:09 999,每张表带有标签 location 和 groupId,groupId 被设置为 1 到 10,location 被设置为 California.Campbell、California.Cupertino、California.LosAngeles、California.MountainView、California.PaloAlto、California.SanDiego、California.SanFrancisco、California.SanJose、California.SantaClara 或者 California.Sunnyvale。 这条命令很快完成 1 亿条记录的插入。具体时间取决于硬件性能,即使在一台普通的 PC 服务器往往也仅需十几秒。 taosBenchmark 命令本身带有很多选项,配置表的数目、记录条数等等,您可以设置不同参数进行体验,请执行 taosBenchmark --help 详细列出。taosBenchmark 详细使用方法请参照如何使用 taosBenchmark 对 TDengine 进行性能测试和 taosBenchmark 参考手册。 使用 TDengine CLI 体验查询速度 使用上述 taosBenchmark 插入数据后,可以在 TDengine CLI(taos)输入查询命令,体验查询速度。 查询超级表 meters 下的记录总条数: ```sql SELECT COUNT(*) FROM test.meters; ``` 查询 1 亿条记录的平均值、最大值、最小值等: ```sql SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters; ``` 查询 location = "California.SanFrancisco" 的记录总条数: ```sql SELECT COUNT(*) FROM test.meters WHERE location = "California.SanFrancisco"; ``` 查询 groupId = 10 的所有记录的平均值、最大值、最小值等: ```sql SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters WHERE groupId = 10; ``` 对表 d10 按 10 每秒进行平均值、最大值和最小值聚合统计: ```sql SELECT FIRST(ts), AVG(current), MAX(voltage), MIN(phase) FROM test.d10 INTERVAL(10s); ``` 在上面的查询中,你选择的是区间内的第一个时间戳(ts),另一种选择方式是 \_wstart,它将给出时间窗口的开始。关于窗口查询的更多信息,参见特色查询。 **添加 DataSource 数据驱动** ![img_1.png](img_1.png) ![img_3.png](img_3.png) **添加连接** ![img_2.png](img_2.png) 个人微信: 有问题可以咨询 19955514930