TDengine简介

TDengine 是一款开源、高性能、云原生时序数据库,且针对物联网、车联网、工业互联网、金融、IT 运维等场景进行了优化。您可以像使用关系型数据库 MySQL 一样来使用它.

数据模型和整体架构

在典型的物联网, 运维检测场景中, 往往有多种不同类型的传感器用来采集各种不同类型的数据, 而每种类型的数据又有多个同种类型的设备分布在不同的空间. 最后需要将它们采集到的的数据汇总,

计算和分析, 而同种类型的设备采集到的数据结构又是完全相同的.

需要采集的数据的特点总结就是:

  1. 数据连续性,时序性
  2. 数据结构化
  3. 数据量巨大

因此TDengine的特点就是:

  1. 因为采集的数据结构固定, 都是结构化数据, 因此可以使用关系型数据库模型来管理数据, 便于根据各种条件进行查询归档
  2. 每个设备都是单独对一个表进行写入, 每个表数据源唯一,因此TDengine对每个采集器单独建表, 这样就不需要加锁进行隔离
  3. 对于一个数据采集点而言,其产生的数据是时序的,因此写的操作可用追加的方式实现,进一步大幅提高数据写入速度。

超级表:同一类型数据采集点的集合

TDengine把每一类不同的采集点都作为一个超级表, 每个超级表下又根据该类设备不同设备编号分为多个子表.  子表用来存储每个采集点采集到的数据, 超级表用于聚合, 计算, 分析.
每个超级表下的子表的表结构都是完全相同的, 只有标签不同, 标签的格式在超级表中定义, 且后期可以修改.

TDengine主节点写入流程:

  1. master vnode主节点收到应用的数据插入请求,验证OK,进入下一步;
  2. 如果系统配置参数 walLevel 大于 0,vnode 将把该请求的原始数据包写入数据库日志文件 WAL。如果 walLevel 设置为 2,而且 fsync 设置为 0,TDengine 还将 WAL 数据立即落盘,以保证即使宕机,也能从数据库日志文件中恢复数据,避免数据的丢失;
  3. 如果有多个副本,vnode 将把数据包转发给同一虚拟节点组内的 slave vnodes, 该转发包带有数据的版本号(version);
  4. 写入内存,并将记录加入到 skip list跳表(缓存);
  5. master vnode 返回确认信息给应用,表示写入成功。
  6. 如果第 2、3、4 步中任何一步失败,将直接返回错误给应用。

SQL语法可以参照官方文档:https://www.taosdata.com/docs/cn/v2.0/taos-sql#-7

最新文章

  1. [LeetCode] Minimum Path Sum 最小路径和
  2. Spring4学习笔记2-配置Bean
  3. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)
  4. 添加css的方式:link与@import区别
  5. 图解Tomcat类加载机制
  6. ACM 推桌子
  7. HttpWatch 安装后在IE上打开
  8. TP复习16
  9. WPF笔记(1.8 资源与映射)——Hello,WPF!
  10. vs2013搭建团队版本控制 TFS、SVN
  11. 提升Delphi编程效率必须使用的快捷键(Delphi2007版本)
  12. 乐在其中设计模式(C#) - 享元模式(Flyweight Pattern)
  13. MyEclipse打不开 报xxxxxx. log。
  14. JDK8新特性:default方法的应用实践
  15. TCP/IP ARP
  16. 微信小程序之跳转、请求、带参数请求小例子
  17. MariaDB——(一)CentOS 6.5 下 MariaDB 10.0.15 YUM 安装
  18. -Dmaven.multiModuleProjectDirectory system property is not set.
  19. java模拟http请求(代理ip)
  20. js中typeof与instanceof用法

热门文章

  1. Python爬虫:原来微博上的视频下载链接在这啊
  2. 关于Intent Uri页面跳转
  3. 【win+r】快速打开软件
  4. Java学习笔记(一)环境安装与java基础
  5. Vulnhub:CK-00靶机
  6. Redis Stream类型的使用详解
  7. 二叉树TwT
  8. 常用 包vue-clipboard2
  9. 【Go】时间
  10. getClassLoader