TDengine的实践场景

时间:2022-11-29 18:10:05

    前几日我们在讨论一个物联网场景时候,负责该项目的博士提出了一个他的想法--将各个采集的数据关联用以发现问题。我觉得这个思路不错,至于能不能做呢?

我下来模拟了一下。我们这里使用的是Tdengine,我这里有d1表和d2表两个表。d1和d2是两个物联网的检测器对应的数据表。 那么我按照车牌号码去关联,数据库提示我不支持。

TDengine的实践场景

这个结果其实也在我意料之中,毕竟时序数据库不属于RDBMS的范畴,应该算在NoSQL的范畴。不能关联也不怪它。

那么这个要怎么解决?我想起官方介绍过一种叫做超级表。摸索尝试用用。

taos> create table t (ts TIMESTAMP,x int,y int) tags (id int,no nchar(100));   -创建超级表  注意这里的tags,我意思是采集设备的id和车牌号码。


taos> CREATE TABLE t1 USING t TAGS ('1', '沪A12345');  --创建子表1,这里using用到了超级表的tags

Query OK, 0 of 0 row(s) in database (0.006030s)


taos> CREATE TABLE t2 USING t TAGS ('2', '沪A54321');  --创建子表2,这里using用到了超级表的tags

Query OK, 0 of 0 row(s) in database (0.017275s)

TDengine的实践场景

看一下表,只看到t1和t2, 但是注意看t1和t2最后一列其实显示了他们的父表。

给两个子表分别写一条数据。

TDengine的实践场景

直接查父表(超级表)就可以了。其实相当于RDBMS中执行了union all。

TDengine的实践场景

最后再执行带where条件的SQL,其实就等于给两个表做了关联。

TDengine的实践场景

所以从上述可以看到,时序数据库不能直接做关联(不支持),需要通过设计完成(而这个要怎么设定tags,以及设定多少个tags,这在上线之初要定义好,想好规划好)。

这样就可以完成物联网大量数据的关联分析。

我第一次听到这个产品时候,我觉得他说出了心声。物联网的数据是海量的,如果用左边这十几种技术栈(成本先不说),累也要累死了。而时序数据库基本是用来解决这个问题的。所以有时候我听到说要把时序数据库的数据拿到hadoop去分析,简直是搞笑。但凡懂这些技术的人都不会做出这样的方案。

TDengine的实践场景

今天意外还发现一个问题,同一个时间戳的数据是写不进来的。

TDengine的实践场景