TDengine 常用操作和高级功能
目标
- 掌握TDengine 常用操作和高级功能
步骤
TDengine 是一个专门为物联网(IoT)和大数据场景设计的高性能时序数据库。除了基本的创建数据库、表、插入和查询数据之外,TDengine 还提供了许多其他常用操作和高级功能。
1. 创建超级表(Super Table)
超级表是一种特殊的表,它可以定义一组子表(子表继承超级表的结构),并且可以为每个子表添加标签(tag)。标签用于区分不同的子表。
sql
CREATE TABLE meters (
ts TIMESTAMP,
current FLOAT,
voltage INT,
phase FLOAT
) TAGS (location BINARY(20), groupId INT);
CREATE TABLE d1001 USING meters TAGS ('California.SanFrancisco', 2);
CREATE TABLE d1002 USING meters TAGS ('California.LosAngeles', 2);
2. 插入数据到超级表的子表
sql
INSERT INTO d1001 VALUES ('2023-10-01 00:00:00', 12.3, 220, 0.2);
INSERT INTO d1002 VALUES ('2023-10-01 00:00:00', 11.8, 220, 0.1);
3. 查询超级表及其子表
sql
-- 查询所有子表的数据
SELECT * FROM meters;
-- 查询特定子表的数据
SELECT * FROM d1001;
-- 查询特定标签的数据
SELECT * FROM meters WHERE location = 'California.SanFrancisco';
4. 聚合查询
TDengine 支持各种聚合函数,如 SUM
, AVG
, MAX
, MIN
等。
sql
-- 计算每个子表的平均电流
SELECT AVG(current) FROM meters GROUP BY tbname;
-- 计算每个地点的最大电压
SELECT MAX(voltage) FROM meters GROUP BY location;
5. 时间窗口查询
TDengine 提供了强大的时间窗口查询功能,可以按时间段进行聚合。
sql
-- 按小时计算每个子表的平均电流
SELECT tbname, TIME_WINDOW(ts, 1h) AS time_window, AVG(current)
FROM meters
GROUP BY tbname, time_window;
6. 实时订阅(Subscribe)
TDengine 支持实时订阅功能,可以实时获取数据变化。
sql
-- 创建订阅
CREATE SUBSCRIBE sub1 FROM meters WHERE location = 'California.SanFrancisco';
-- 查看订阅状态
SHOW SUBSCRIBE;
-- 取消订阅
CANCEL SUBSCRIBE sub1;
7. 数据保留策略
TDengine 允许设置数据保留策略,自动删除过期数据。
sql
-- 创建数据库时设置数据保留时间为3天
CREATE DATABASE weather KEEP 3;
-- 修改现有数据库的数据保留时间
ALTER DATABASE weather KEEP 7;
8. 数据压缩
TDengine 支持数据压缩,以节省存储空间。
sql
-- 创建数据库时启用数据压缩
CREATE DATABASE weather COMPRESSION 1;
-- 修改现有数据库的数据压缩设置
ALTER DATABASE weather COMPRESSION 2;
9. 数据导入导出
TDengine 提供了数据导入和导出的功能。
sql
-- 导出数据
EXPORT DATA FROM meters TO '/path/to/export/file.csv';
-- 导入数据
IMPORT DATA FROM '/path/to/import/file.csv';
10. 用户管理
TDengine 支持用户管理和权限控制。
sql
-- 创建用户
CREATE USER john PASSWORD 'password123';
-- 授予权限
GRANT ALL ON weather TO john;
-- 删除用户
DROP USER john;
11. 监控和日志
TDengine 提供了监控和日志功能,帮助您管理和调试系统。
sql
-- 查看系统状态
SHOW Databases;
SHOW STATUS;
-- 查看日志
SHOW LOGS;
12. 备份和恢复
TDengine 支持数据备份和恢复功能。
sql
-- 备份数据库
BACKUP DATABASE weather TO '/path/to/backup';
-- 恢复数据库
RESTORE DATABASE weather FROM '/path/to/backup';