TDengine 是一个专为物联网、大数据、实时监控等场景设计的高性能、分布式时序数据库。以下是一个基于 TDengine 的基础使用教程,涵盖从数据库创建到数据插入、查询、表结构修改等常用操作。
1. 创建数据库
创建一个数据库,与其他库不同的是,需要设置数据的保存天数。例如,创建一个名为 POWER 的数据库,数据保存365天:
CREATE DATABASE POWER KEEP 365;
2. 使用数据库
创建数据库后,需要切换到该数据库以进行后续操作:
USE POWER;
3. 创建超级表
超级表是 TDengine 中用于定义数据采集点数据结构的模板。这里我们创建一个名为 meters 的超级表,用于存储电流和电压数据,并附带地理位置和设备组ID作为标签:
CREATE TABLE meters(
ts timestamp,
current float,
voltage int
) TAGS(
location binary(64),
groupId int
);
4. 创建子表并插入数据
每个数据采集点对应一个子表,子表基于超级表创建并指定具体的标签值。例如,为位于“CQ.YB”的设备组ID为4的数据采集点创建子表并插入数据:
CREATE TABLE DD USING meters TAGS("CQ.YB", 4);
INSERT INTO DD(ts, current, voltage) VALUES(NOW, 1.0, 1);
INSERT INTO DD(ts, current, voltage) VALUES(NOW, 2.0, 2);
如果尝试插入数据到一个尚未创建的子表(如 TT),TDengine 会自动根据超级表 meters 创建该子表并插入数据:
INSERT INTO TT(ts, current, voltage) USING meters TAGS("CQ.SPB", 3) VALUES(NOW, 10, 219);
5. 多列模型与单列模型
多列模型:适用于同时采集的物理量,可以提高插入和存储效率。
单列模型:适用于物理量种类经常变化的场景,每个物理量单独建表。
6. 查看和管理数据库及表
查看所有数据库:
SHOW DATABASES;
切换数据库:
USE 数据库名;
删除数据库:
DROP DATABASE IF EXISTS 数据库名;
查询所有表(包括超级表和子表):
SHOW TABLES;
查看表结构:
DESCRIBE TT;
7. 修改超级表结构
新增列:
ALTER STABLE meters ADD COLUMN ID NCHAR(64);
删除列:
ALTER STABLE meters DROP COLUMN 字段名;
8. 查询超级表下的子表
TDengine 没有直接的 SQL 命令来列出超级表下的所有子表,我们可以通过查询系统表或使用应用逻辑来管理子表列表。
9. 注意事项
性能优化:尽可能采用多列模型,减少表的数量,提高查询和写入效率。
标签管理:标签值在创建子表时指定,并可以事后修改。
数据持久性:设置合适的数据保留策略,避免不必要的存储空间浪费。
通过以上步骤,你可以开始使用 TDengine 进行时序数据的存储和管理。TDengine 的高性能和易用性使其成为处理物联网大数据的理想选择。