一篇入门物联网大数据:TDengine时序数据库

Posted 陆海潘江小C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇入门物联网大数据:TDengine时序数据库相关的知识,希望对你有一定的参考价值。

目录

一、大数据时代

二、TDengine设计思想

三、CAP理论和TDengine的特性

1、CAP理论

 2、TDengine特性

四、数据模型

1、数据特点

2、超级表和表

3、数据查询

a. 单表查询

b. 多表聚合查询

五、存储模型

1、时序数据

2、标签数据

3、元数据



【本文正在参与“拥抱开源”|涛思数据TDengine有奖征稿】传送门:https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857c

一、大数据时代

大数据,已是技术发展中的重要领域,数据无处不在,支撑着大数据的中间件也不断迭代更新,TDengine成为当中的优势产品,生产应用场景不断扩大,这一篇入门物联网大数据:TDengine时序数据库,从零学习了解大数据时代的解决方案!

二、TDengine设计思想

在生活中,各种IOT的联网设备,比如智能手表、水表、汽车等,每时每刻都产生数据,这样的数据是按时间顺序的。

时间序列的数据一旦产生便是历史不再发生变化。因此,数据写入后不再有删除和修改的操作,因此,与mysql等数据库相比较,TDengine简化了数据存储的数据结构上,使得一些聚合查询上可以通过预计算得到,更加高效。

TDengine最佳实践说明,为每一个独立产生数据 的IOT设备建立一张独立的表,这样保证了,不同设备之间存在时钟不同步或者服务器网络延时的情况下,同一张表(来自同一个设备)的数据仍然可以保证是顺序写入的。

三、CAP理论和TDengine的特性

1、CAP理论

CAP理论在互联网产品中是必然会应用到的理论,一致性Consistency、可用性Availability、分区容错性Partition tolerance。

一个分布式数据存储系统最多只能同时满足其中两点。因此,分布式系统势必只能在一致性和可用性中权衡做出选择。

一致性:每个读操作都可以得到一个最新写的结果或者明确的错误响应

可用性:每一个读写操作都可以得到一个非错误的响应(不保证最新)。

分区容忍性:无论节点间的网络问题导致了多少消息丢失或者延迟到达,系统可以继续运转。

 2、TDengine特性

TDengine在物联网的场景下以牺牲部分功能支持的代价换来了超过10倍的性能提升。基于顺序表结构的存储,追加写的插入,二分查找的查询,结构化的定长数据,预计算的聚合结果等优化大大提升了时序数据存储的读写性能。

TDengine支持按时间过期的方式删除陈旧的历史数据避免无限量的数据增长。

四、数据模型

1、数据特点

研究发现,物联网、车联网、运维监测类数据还具有很多其他明显的特征:

  1. 时间顺序
  2. 极少更新或删除
  3. 数据量巨大;
  4. 数据高度结构化;
  5. 无需事务处理
  6. 写多读少
  7. 查询分析更关注一段时间的趋势,而不是某个特定时间点的值;
  8. 数据有保留期限
  9. 需要各种统计和实时计算操作;
  10. 流量平稳,可根据设备数量和采集频次预测出来。

 根据这些数据的特征,TDengine采取经过特殊优化的存储和计算设计来处理时序数据,系统处理能力很大提高,而且降低了系统运维的复杂度

2、超级表和表

从上面介绍我们知道,TDengine为一个数据采集点建一个表,而且,这个表第一列必须是时间戳timestamp类型

很明显,表的数量巨大,难以管理,当应用需要做采集点之间的聚合操作,聚合的操作也变得复杂起来。为解决这个问题,TDengine引入超级表(Super Table,简称为STable)的概念。

超级表:同一类型数据采集点的集合。指某一特定类型的数据采集点的集合,同一类型的数据采集点的表结构是完全一样的,而静态属性(也叫标签,包括地点、设备的分组id等)不一样。一个系统有N个不同类型的数据采集点,就需要建立个超级表(Super Table)。

 TDengine架构示意图

主要逻辑单元:物理节点(pnode)、数据节点(dnode)、虚拟节点(vnode)、管理节点(mnode)、虚拟节点组(VGroup)、驱动程序(Taosc)

TDengine架构的详细部分这里暂时不展开,不影响后面的阅读。

3、数据查询

TDengine提供丰富地查询功能,除了常规聚合查询,还提供对时序数据的窗口查询、统计聚合等功能。查询处理功能由客户端、vnode、mnode节点协同完成

a. 单表查询

SQL语句解析和校验工作在客户端完成。解析SQL语句并生成抽象语法树(AST),再进行校验和检查,以及向mnode请求查询中指定表的元数据信息。

然后,根据元数据信息中的End Point,将查询请求序列化后发送到该表所在的dnode。dnode接收识别出指向的vnode,将消息转发到vnode查询执行队列。dnode查询执行队列中的工作线程会等待vnode线程执行完成,再将查询结果返回给客户端

b. 多表聚合查询

 

  1. APP应用将一个查询条件发往系统;
  2. Taosc将超级表的名字发往mnode(管理节点);
  3. mnode将超级表拥有的vnode列表发回taosc;
  4. Taosc将计算的请求跟标签过滤条件发往这些vnode对应的数据节点;
  5. 每个vnode先在内存中找出自己节点里符合的标签过滤条件的表集合,然后扫描存储的时序数据完成聚合计算,将结果返回taosc;
  6. Taosc将多个数据节点返回的结果做最后的聚合,返回给应用

这里涉及到的标签数据、元数据的概念,可以继续看以下内容,对于管理节点、数据节点的概念,属于TDengine结构的具体内容,暂时不展开讨论。

五、存储模型

1、时序数据

存放在vnode,由data、head、last三个文件组成,数据量大。不支持删除操作,update参数为1时才能更新操作。一个采集点一种表,一个时间段的数据是连续的,写入是简单追加操作,这样对单个采集点的插入和查询操作,性能达到最优。

2、标签数据

存放在vnode的meta文件,支持CRUD操作,数据量不大。N张表就有N条记录,可以全内存存储。

3、元数据

存放在mnode,包含系统节点、用户、DB、Table Schema,支持CRUD,数据量不大,可全内存存储,而且客户端有缓存,查询量不大。


这一篇主要是学习大数据内容时,入门TDengine应用的简单总结,整理了一些基本且关键知识。

如果觉得不错欢迎“一键三连”哦,点赞收藏关注,评论提问建议,欢迎交流学习!一起加油进步,我们下篇见! 

【本文正在参与“拥抱开源”|涛思数据TDengine有奖征稿】传送门:https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857c

涛思数据TDengine官方文档https://www.taosdata.com/cn/documentation/

本篇内容首发我的CSDN博客:https://csdn-czh.blog.csdn.net/article/details/119089953

以上是关于一篇入门物联网大数据:TDengine时序数据库的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7上使用源码安装物联网大数据平台TDengine

架构设计:比 Hadoop 快至少10倍的物联网大数据平台

Hadoop or TDengine,如何做物联网大数据平台的选型?

让你全面了解TDengine

让你全面了解TDengine

让你全面了解TDengine