当前位置:   article > 正文

TDengine 基础概念和知识点

tdengine

一、前文

TDengine 入门教程——导读

二、库(Database)

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

三、超级表(STable)

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

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

四、普通表(Table)

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

五、子表(Subtable)

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

从如下的sql语句可以得出

  • create table不带tags建表,成普通表
  • create tabletags建表,成超级表
  1. taos> use test;
  2. Database changed.
  3. taos> create table test1(ts timestamp, temperature float);
  4. Query OK, 0 of 0 rows affected (0.000728s)
  5. taos> create table test2(ts timestamp, temperature float) tags(groupId int);
  6. Query OK, 0 of 0 rows affected (0.001273s)
  7. taos> show tables;
  8. table_name |
  9. =================================
  10. test1 |
  11. Query OK, 1 rows in database (0.003077s)
  12. taos> show stables;
  13. stable_name |
  14. =================================
  15. test2 |
  16. 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主要是引入了超级表和子表的概念,有点绕,不是那么好理解。

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/847871
推荐阅读
  

闽ICP备14008679号