PS:我个人是觉得,超级表这个取名是个败笔,容易误导人。取名“母表”更好。
从如下的sql语句可以得出
create table不带tags建表,成普通表create table带tags建表,成超级表taos> use test;
Database changed.
taos> create table test1(ts timestamp, temperature float);
Query OK, 0 of 0 rows affected (0.000728s)
taos> create table test2(ts timestamp, temperature float) tags(groupId int);
Query OK, 0 of 0 rows affected (0.001273s)
taos> show tables;
table_name |
=================================
test1 |
Query OK, 1 rows in database (0.003077s)
taos> show stables;
stable_name |
=================================
test2 |
Query OK, 1 rows in database (0.001557s)
标签,英文:TAG
TDengine的标签和InfluxDB的标签,差异较大:
TDengine标签的增加和删除只能作用于超级表。
TDengine标签数据的修改只能作用于子表。
标签是静态的。
数据点是动态的,随着时间变化而变化。
这就是时序数据库最大的特点。所有的数据点都带有时间戳。
如果脱离了时间,数据点就没有了意义。
因地制宜,我们基于TDengine和InfluxDB两类不同特性的时序数据库,以电表数据为例,进行数据库设计。
电表数据主要有
| 数据点 | 标识 | 类型 | 特性 |
|---|---|---|---|
| 电表编号 | id | vchar | 静态 |
| 电表位置 | location | vchar | 静态 |
| 电表类型 | ttype | int | 静态 |
| 分组编号 | groupId | int | 静态 |
| 正向有功总电量 | electricity | float | 动态 |
设计一张超级表,一个电表一张子表。
电表编号作为子表的表名。
create table test.weather(ts timestamp, electricity float) tags(location nchar(64), groupId int, ttype int)
子表d1存储编号为d1电表的数据:
| 电表位置 | 电表类型 | 分组编号 | 时间 | 正向有功总电量 |
|---|---|---|---|---|
| 福建省厦门市 | 1 | 1 | 2022/09/18 00:15:00 | 0 |
| 福建省厦门市 | 1 | 1 | 2022/09/18 02:15:00 | 0.11 |
子表d2存储编号为d2电表的数据:
| 电表位置 | 电表类型 | 分组编号 | 时间 | 正向有功总电量 |
|---|---|---|---|---|
| 福建省福州市 | 1 | 1 | 2022/09/18 00:15:00 | 10 |
| 福建省福州市 | 1 | 1 | 2022/09/18 02:15:00 | 20.2 |
InfluxDB 为无模式写入。
所有电表数据都往一张表里面写入。
| 电表编号 | 时间 | 正向有功总电量 |
|---|---|---|
| d1 | 2022/09/18 00:15:00 | 0 |
| d1 | 2022/09/18 02:15:00 | 0.11 |
| d2 | 2022/09/18 00:15:00 | 10 |
| d2 | 2022/09/18 02:15:00 | 20.2 |
至于电表的静态数据,无需存入到InfluxDB数据库中,可以存入MySQL关系型数据库。
因为这些静态数据如果存入InfluxDB数据库,则很浪费资源。
电表属性表
| 电表编号 | 电表位置 | 电表类型 | 分组编号 |
|---|---|---|---|
| d1 | 福建省厦门市 | 1 | 1 |
| d2 | 福建省福州市 | 1 | 1 |
实话实说,InfluxDB概念更加简单,上手更快。具体可以参考:InfluxDB入门系列教程① 概念简介
TDengine主要是引入了超级表和子表的概念,有点绕,不是那么好理解。
理解清楚了,倒也还好。据说这么设计得目的是:采用一个数据采集点一张表的方式,能最大程度的保证单个数据采集点的插入和查询的性能是最优的。
有实际的存在意义,倒也说得过去。
觉得好,就一键三连呗(点赞+收藏+关注)