章
目
录
本文将为你提供TDengine 快速入门指南,帮助你快速掌握 TDengine 的安装和基础使用方法。所有内容均基于官方文档整理,旨在为你提供一个简洁明了的入门路径。
一、TDengine 简介
TDengine 是一款专为时序数据设计的高性能分布式数据库,支持高并发写入和查询,同时具备强大的数据压缩和存储优化能力。它提供了丰富的功能,包括数据自动分区、灵活的表结构设计以及高效的聚合计算等。无论是开源版本还是商业版本,TDengine 都能满足不同场景下的需求,具体功能对比可以参考官方文档。
二、基于 Docker 的单节点安装
1. 编写 docker-compose.yml 文件
以下是基于 Docker Compose 的 TDengine 单节点安装配置文件示例:
version: '3'
services:
nexus:
image: tdengine/tdengine:3.3.3.0
container_name: tdengine
networks:
- default
ports:
- "6030:6030"
- "6041:6041"
- "6043:6043"
- "6044-6049:6044-6049"
- "6044-6045:6044-6045/udp"
- "6060:6060"
volumes:
- ./taos:/var/lib/taos
- ./log:/var/log/taos
networks:
default:
external:
name: nisec
2. 启动服务
在配置文件所在目录下运行以下命令,即可启动 TDengine 服务:
docker compose up -d
三、数据库操作指南
1. 创建数据库
创建数据库时,需要指定数据精度、保留时间、数据文件存储周期等参数。例如:
CREATE DATABASE power PRECISION 'ms' KEEP 3650 DURATION 10 BUFFER 16;
PRECISION 'ms'
:设置时间戳精度为毫秒级。KEEP 3650
:数据保留 3650 天,超出时间范围的数据将自动删除。DURATION 10
:每 10 天的数据存储在一个数据文件中。BUFFER 16
:写入操作使用 16MB 的内存缓冲区。
2. 创建超级表
超级表是 TDengine 的核心概念之一,它类似于传统数据库中的表模板,用于定义一组具有相同结构的子表。例如:
CREATE STABLE meters (
ts timestamp,
current float,
voltage int,
phase float
) TAGS (
location varchar(64),
group_id int
);
- 第一列必须是时间戳类型(如
ts timestamp
)。 - 后续列是数据采集列,支持多种数据类型(如
current float
)。 TAGS
是超级表的标签,用于区分不同的子表(如location
和group_id
)。
3. 创建子表
基于超级表,可以快速创建具体的子表。例如:
CREATE TABLE d1001
USING meters (
location,
group_id
) TAGS (
"California.SanFrancisco",
1
);
USING meters
表示基于超级表meters
创建子表。TAGS
指定了子表的具体标签值。
4. 数据写入
TDengine 提供了灵活的数据写入方式,支持单条、批量和多表写入。
单条写入
INSERT INTO d1001 (ts, current, voltage, phase) VALUES ("2018-10-03 14:38:05", 10.3, 219, 0.31);
批量写入
insert into d1001 values
( "2018-10-03 14:38:05", 10.2, 220, 0.23),
( "2018-10-03 14:38:15", 12.6, 218, 0.33),
( "2018-10-03 14:38:25", 12.3, 221, 0.31)
多表写入
INSERT INTO d1001 VALUES
("2018-10-03 14:38:05", 10.2, 220, 0.23),
("2018-10-03 14:38:15", 12.6, 218, 0.33),
("2018-10-03 14:38:25", 12.3, 221, 0.31)
d1002 VALUES
("2018-10-03 14:38:04", 10.2, 220, 0.23),
("2018-10-03 14:38:14", 10.3, 218, 0.25),
("2018-10-03 14:38:24", 10.1, 220, 0.22)
d1003 VALUES
("2018-10-03 14:38:06", 11.5, 221, 0.35),
("2018-10-03 14:38:16", 10.4, 220, 0.36),
("2018-10-03 14:38:26", 10.3, 220, 0.33)
;
指定列写入
insert into d1004 (ts, voltage, phase) values("2018-10-04 14:38:06", 223, 0.29)
自动建表写入
insert into d1005
using meters (location)
tags ( "beijing.chaoyang")
values ( "2018-10-04 14:38:07", 10.15, 217, 0.33)
通过超级表写入
TDengine 提供了一种高效的数据写入方式,允许直接向超级表插入数据。超级表本质上是一个结构模板,它本身并不直接存储数据,而是将数据存储到对应的子表中。例如,通过以下 SQL 语句,可以指定 tbname 列将数据写入子表 d1001,如果子表不存在,系统会自动创建该表。这种操作模式不仅简化了数据写入流程,还提高了开发效率,因此非常推荐使用。
insert into meters (tbname, ts, current, voltage, phase, location, group_id)
values( "d1001", "2018-10-03 14:38:05", 10.2, 220, 0.23, "California.SanFrancisco", 2)
5. 数据更新与删除
更新数据
推荐直接使用超级表进行更新操作:
INSERT INTO d1001 (ts, current) VALUES ("2018-10-03 14:38:05", 22);
删除数据
同样推荐使用超级表进行删除操作:
DELETE FROM meters WHERE ts < '2021-10-01 10:40:00.100';
四、总结
通过本文的介绍,你已经掌握了 TDengine 的基本安装和操作方法。从基于 Docker 的快速部署到数据库的创建、超级表的设计、数据的写入与管理,TDengine 提供了一套高效且灵活的解决方案。