# springboot-demo-tdengine **Repository Path**: xufengzhu/springboot-demo-tdengine ## Basic Information - **Project Name**: springboot-demo-tdengine - **Description**: springboot 整合 tdengine demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-05-15 - **Last Updated**: 2025-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tdengine ## 简单示例 ### 启动服务 ```shell docker run --name taos -d \ -v /data/taos/dnode/data:/var/lib/taos \ -v /data/taos/dnode/log:/var/log/taos \ -p 6030:6030 -p 6041:6041 -p 6043-6060:6043-6060 -p 6043-6060:6043-6060/udp tdengine/tdengine:3.0.4.1 ``` ```shell # 进入容器 docker exec -it taos /bin/bash ``` ### 创建数据库 输入taos,进入taos终端, 创建示例库,详细的建库配置参见[taos文档](https://docs.taosdata.com/taos-sql/database/) ```shell CREATE DATABASE power KEEP 365 DURATION 10 BUFFER 16 WAL_LEVEL 1; ``` 可以使用 DBeaver 连接 tdengine,默认管理员账户 root/taosdata ### 创建表 创建示例表,官方建议一类设备一张超级表。 ```shell CREATE STABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int); ``` 创建子表,注意 TAGS 是与子表挂钩的,一张子表的所有数据,tags 是固定的。 ```shell CREATE TABLE d_1001 USING meters TAGS ("California.SanFrancisco", 2); CREATE TABLE d_1002 USING meters TAGS ("California.SanFrancisco", 3); ``` 自动建表: ```shell INSERT INTO d_1001 USING meters TAGS ("California.SanFrancisco", 2) VALUES (NOW, 10.2, 219, 0.32); ``` 写入数据 ```shell INSERT INTO d_1001 VALUES (NOW, 10.2, 219, 0.32); ``` 3.3.0.0 之前的版本,子表时间戳相同的情况下,后面插入的数据会覆盖前面的。3.3.0.0 之后,新增了一个特性。 > 除时间戳主键列之外,还可以通过 PRIMARY KEY 关键字指定第二列为额外的主键列。被指定为主键列的第二列必须为整型或字符串类型(varchar) ``` CREATE STABLE meters_1 (ts timestamp,point_id bigint primary key,current float, voltage int, phase float) TAGS (location binary(64), groupId int); ``` ### springboot集成 taos原生连接器是通过jni连接调用的,所以需要安装和server相同版本的客户端。[tdengine-releases](https://docs.taosdata.com/releases/tdengine/#!)] 或者直接拼接此地址下载 `https://www.taosdata.com/assets-download/3.0/TDengine-client-3.0.4.1-Windows-x64.exe` 安装后配置cfg文件,修改firstEp为服务端地址。 ```cfg firstEp 192.168.6.87:6030 ``` 调用接口 MetersController 中提供的默认接口测试。 其它 sql 语法参考 [SQL手册](https://docs.taosdata.com/taos-sql/) ## 企业级理解 ### 表设计 一类设备一张超级表,Tags为区域等固定参数。 例如针对某一类设备,比如电表,可以创建一个超级表,一个具体的电表创建一张子表。tags存储设备不常变动的信息,比如电表的区域等。 例如示例中超级表为 `meters` ,子表为 `d_1001`,tag为 `location` ,`groupId` 。 实战中,应尽量考虑超级表初始化创建,不随业务变化而发生DDL变化;子表应随设备的创建而创建,为提高插入效率,尽量不使用自动创建。 同时为支持查询实时值,不引入 redis,可使用 last_row 函数。在创建数据库时,指定 `CACHEMODEL 'last_row';` 见[tdengine缓存](https://docs.taosdata.com/develop/cache/#%E8%AF%BB%E7%BC%93%E5%AD%98) `TaosController` 中增加了建表接口,动态新增列接口,通用插入接口(无需实体类)。