TDengine 入门教程②——基础概念和知识点

一、前文

TDengine 入门教程——导读

二、库(Database)

  • TDengine 容许一个运行实例有多个库。
  • 每个库可以配置不同的存储策略,包括内存池,缓存子表,数据保留策略等
  • 一个库可以有多个表。

三、超级表(STable)

  • 超级表不是传统意义上的数据表,超级表只是一个表的模板,不能存储任何数据。
  • 超级表的数据存储在它的子表。
  • 超级表可以有多个子表。

PS:我个人是觉得,超级表这个取名是个败笔,容易误导人。取名“母表”更好。

四、普通表(Table)

  • 普通表就是常规意义上的表,既有表的定义,又能存储数据。
  • 普通表跟超级表对比没有意义,不是一个层级的。
  • 普通表适合跟子表对比。

五、子表(Subtable)

  • 子表本质就是普通表。
  • 子表的表定义从超级表继承,普通表的表定义是自己有的。
  • 子表跟普通表的不同在于静态标签。子表有静态标签,普通表没有静态标签。
  • 子表一定属于一张超级表,但普通表不属于任何超级表。
  • 普通表无法转为子表,子表也无法转为普通表。

从如下的sql语句可以得出

  • create table不带tags建表,成普通表
  • create tabletags建表,成超级表
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)

标签,英文:TAG

TDengine的标签和InfluxDB的标签,差异较大:

  • TDengine的标签指的是静态属性。
  • InfluxDB的标签指的是索引。

TDengine标签的增加和删除只能作用于超级表。

  • 超级表添加一个标签以后,该超级表下的所有子表会自动增加该标签。
    • 对于数值型的标签,新增加的标签的默认值是 0。
  • 超级表删除一个标签以后,该超级表下的所有子表会自动删除该标签。
    • 说明:第一列标签不能删除,至少需要为超级表保留一个标签。

TDengine标签数据的修改只能作用于子表。

七、数据点(Data Point)

标签是静态的。

数据点是动态的,随着时间变化而变化。

这就是时序数据库最大的特点。所有的数据点都带有时间戳。

如果脱离了时间,数据点就没有了意义。

八、数据库设计

因地制宜,我们基于TDengine和InfluxDB两类不同特性的时序数据库,以电表数据为例,进行数据库设计。

电表数据主要有

数据点标识类型特性
电表编号idvchar静态
电表位置locationvchar静态
电表类型ttypeint静态
分组编号groupIdint静态
正向有功总电量electricityfloat动态

8.1 TDengine数据库设计

设计一张超级表,一个电表一张子表。

电表编号作为子表的表名。

create table test.weather(ts timestamp, electricity float) tags(location nchar(64), groupId int, ttype int)

子表d1存储编号为d1电表的数据:

电表位置电表类型分组编号时间正向有功总电量
福建省厦门市112022/09/18 00:15:000
福建省厦门市112022/09/18 02:15:000.11

子表d2存储编号为d2电表的数据:

电表位置电表类型分组编号时间正向有功总电量
福建省福州市112022/09/18 00:15:0010
福建省福州市112022/09/18 02:15:0020.2

8.2 InfluxDB数据库设计

InfluxDB 为无模式写入。

所有电表数据都往一张表里面写入。

电表编号时间正向有功总电量
d12022/09/18 00:15:000
d12022/09/18 02:15:000.11
d22022/09/18 00:15:0010
d22022/09/18 02:15:0020.2

至于电表的静态数据,无需存入到InfluxDB数据库中,可以存入MySQL关系型数据库。

因为这些静态数据如果存入InfluxDB数据库,则很浪费资源。

电表属性表

电表编号电表位置电表类型分组编号
d1福建省厦门市11
d2福建省福州市11

九、总结

实话实说,InfluxDB概念更加简单,上手更快。具体可以参考:InfluxDB入门系列教程① 概念简介

TDengine主要是引入了超级表和子表的概念,有点绕,不是那么好理解。

理解清楚了,倒也还好。据说这么设计得目的是:采用一个数据采集点一张表的方式,能最大程度的保证单个数据采集点的插入和查询的性能是最优的。

有实际的存在意义,倒也说得过去。

觉得好,就一键三连呗(点赞+收藏+关注)

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小康师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值