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

TDengine上手笔记的更多相关文章

  1. PYNQ上手笔记 | ① 启动Pynq

    现在人工智能非常火爆,一般的教程都是为博硕生准备的,太难看懂了,分享一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默,点☞这里​​​​​​​☜进入传送门~ = = = = 我是华丽的分割线 = ...

  2. Dubbo | Dubbo快速上手笔记 - 环境与配置

    目录 前言 1. Dubbo相关概念 1.1 自动服务发现工作原理 2. 启动文件 2.1 zookeeper-3.4.11\bin\zkServer.cmd 2.2 zookeeper-3.4.11 ...

  3. CloudFoundry 快速上手笔记

    1.登陆cf 2.登陆进入webservice 3.查看ruby版本 4.查看gem版本 5.安装CF 6.配置cf Download the CLI from github: https://git ...

  4. [工具向]__申请,下载,使用百度地图api

    前言 api即应用程序接口,在我们的日常开发中,我们不仅可以在开源代码仓库(,github,码云)中获得很大的帮助,在日常开发中占重要地位的另一个东西就是api,我们可以使用众多的第三方编写的优秀的a ...

  5. 微服务架构 | 12.1 使用 Apache Dubbo 实现远程通信

    目录 前言 1. Dubbo 基础知识 1.1 Dubbo 是什么 1.2 Dubbo 的架构图 1.3 Spring Cloud 与 Dubbo 的区别 1.4 Dubbo 的特点 1.5 Dubb ...

  6. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  7. JavaWeb和WebGIS学习笔记(七)——MapGuide Open Source安装、配置以及MapGuide Maestro发布地图——超详细!目前最保姆级的MapGuide上手指南!

    JavaWeb和WebGIS学习笔记(七)--MapGuide Open Source安装.配置以及MapGuide Maestro发布地图 超详细!目前最保姆级的MapGuide上手指南! 系列链接 ...

  8. Matplotlib学习笔记1 - 上手制作一些图表吧!

    Matplotlib学习笔记1 - 上手制作一些图表吧! Matplotlib是一个面向Python的,专注于数据可视化的模块. 快速上手 这是使用频率最高的几个模块,在接下来的程序中,都需要把它们作 ...

  9. gRPC官方快速上手学习笔记(c#版)

    上手前准备工作 支持操作系统:windows.OS X.Linux.实例采用.net..net core sdk. The .NET Core SDK command line tools. The ...

  10. Qt快速上手(学习笔记四)

    拖了大半年,今天终于有更新了...我自己都不好意思,最近太忙了! 今天讲一下:QML语法 一 概述 QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QM ...

随机推荐

  1. Mbps 与 MBps

    bps 是速率单位,表示比特每秒(bit per second),单位也可以是 bit/s.1K = 103 bit/s:1M = 106 bit/s.Mbps 中的b不是字节 Byte,而是比特 b ...

  2. Linux的终端(base),进入base环境

    正常界面,如下 带有(base) 一般是由于安装了conda环境管理软件,它自带一个base环境.第一次安装时出现这种情况可能是由于软件将启动base环境的命令写入-/.bashrc 文件,这就相当于 ...

  3. js获取浏览器宽度和高度值

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>请调整浏览器窗口</t ...

  4. 运行Java时报错:Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'

    卸载旧的JAVA JDK,安装新版的JDK时,运行cmd的java -version命令遇到这样的报错: Error: opening registry key 'Software\JavaSoft\ ...

  5. pycharm软件基本使用python语法的注释变量的使用常量的使用变量的命名规范python的优化垃圾回收机制数据类型

    pycharm软件基本使用 1.pycharm基本的使用方法:1.点击file找到settings(设置)打开Appearance&Behavior点击Appearance看theme这个就是 ...

  6. (pymssql._pymssql.OperationalError) (8152, b'String or binary data would be truncated.DB-Lib error message 20 018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')

    (pymssql._pymssql.OperationalError) (8152, b'String or binary data would be truncated.DB-Lib error m ...

  7. oracle收缩表和表空间

    oracle shrink space收缩表 segment shrink分为两个阶段: 1).数据重组(compact):通过一系列insert.delete操作,将数据尽量排列在段的前面.在这个过 ...

  8. VUE学习-表单输入绑定

    表单输入绑定 v-model 可以用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定. v-mode ...

  9. UE打LOG整理

    Kismet库 蓝图方法cpp使用 例:打LOG:Print String 蓝图节点的鼠标tips:Target is Kismet System Library #include "Run ...

  10. linux 下安装django时出的错误

    解决方法 找到widgets.py 之后vim widgets.py 找到出错语句: 去掉末尾那个逗号即可.