1.TDengine介绍

官网简介:

TDengine是涛思数据专为物联网、车联网、工业互联网、IT运维等设计和优化的大数据平台。除核心的快10倍以上的时序数据库功能外,还提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度,且核心代码,包括集群功能全部开源(开源协议,AGPL v3.0)。

  • 10 倍以上性能提升。定义了创新的数据存储结构,单核每秒就能处理至少2万次请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快了十倍以上。
  • 硬件或云服务成本降至1/5。由于超强性能,计算资源不到通用大数据方案的1/5;通过列式存储和先进的压缩算法,存储空间不到通用数据库的1/10。
  • 全栈时序数据处理引擎。将数据库、消息队列、缓存、流式计算等功能融合一起,应用无需再集成Kafka/Redis/HBase/Spark等软件,大幅降低应用开发和维护成本。
  • 强大的分析功能。无论是十年前还是一秒钟前的数据,指定时间范围即可查询。数据可在时间轴上或多个设备上进行聚合。即席查询可通过Shell/Python/R/Matlab随时进行。
  • 与第三方工具无缝连接。不用一行代码,即可与Telegraf, Grafana, EMQ X, Prometheus, Matlab, R集成。后续还将支持MQTT, OPC, Hadoop,Spark等, BI工具也将无缝连接。
  • 零运维成本、零学习成本。安装、集群一秒搞定,无需分库分表,实时备份。标准SQL,支持JDBC,RESTful,支持Python/Java/C/C++/Go/Node.JS, 与MySQL相似,零学习成本。

文档:

文档

TDengine 是一个高效的时序数据存储、查询、分析平台。它是专为物联网、车联网、工业物联网、IT基础设施和应用监控等而设计和优化的。它的工作原理类似于关系数据库,如MySQL,但强烈建议您在体验之前通读以下文档,尤其是数据模型和数据建模部分。除了本文档,您还应该下载并阅读我们的技术白皮书。对于较旧的 TDengine 1.6 版文档,请单击此处。

TDengine简介

  • TDengine介绍及特点
  • TDengine使用场景
  • TDengine 性能指标和验证

入门

  • 快速安装:在几秒钟内通过源代码/包/ Docker 安装

  • 易于启动:使用 systemctl 启动/停止 TDengine

  • 命令行:访问 TDengine 服务器的简单方法

  • 体验闪电般的速度:运行演示,插入/查询数据以体验更快的速度

  • List of Supported Platforms : TDengine 服务端和客户端支持的平台列表

  • Deploy to Kubernetes:Kubernetes环境中TDengine部署的详细指南

整体架构

  • 数据模型:关系型数据库模型,但一表一设备,静态标签
  • 集群和主逻辑单元:利用NoSQL,支持横向扩展和高可靠性
  • 存储模型和数据分区/分片:标签数据将与时间序列数据分离,按 vnode 和时间分段
  • 数据写入和复制过程:接收到的记录写入WAL,缓存,确认发送回客户端,同时支持多副本
  • Caching and Persistence:最新记录缓存在内存中,但以柱状格式写入,具有超高压缩比
  • 数据查询:支持多种功能,时间轴聚合、插值、多表聚合

数据建模

  • 创建数据库:为所有具有相似特征的数据采集点创建一个数据库
  • 创建超级表(STable):为所有同类型的数据采集点创建一个STable
  • 创建表:以STable为模板,为每个数据采集点创建一个表

TAOS SQL

  • 数据类型:支持timestamp、int、float、nchar、bool等类型
  • 数据库管理:添加、删除、检查数据库
  • 表管理:添加、删除、检查、更改表
  • STable 管理:添加、删除、检查、更改 STables
  • 标签管理:添加、删除、更改标签
  • 插入记录:支持每表写单项/多项,跨表多项,支持写入历史数据
  • 数据查询:支持时间段、值过滤、排序、查询结果手动分页等
  • SQL Function:支持各种聚合函数、选择函数和计算函数,如avg、min、diff等
  • 时间维度聚合:按时间段对表数据进行聚合和降维
  • 边界限制:对库、表、SQL 等的限制
  • 错误代码:TDengine 2.0 错误代码及对应的十进制代码

高效的数据摄取

  • SQL 摄取:通过 SQL 插入命令将一条或多条记录写入一个或多个表中
  • Prometheus Ingestion:配置Prometheus直接写入数据,无需任何代码
  • Telegraf Ingestion : 配置 Telegraf 直接写入收集的数据,无需任何代码
  • EMQ X Broker : 配置 EMQ X 直接写入 MQTT 数据,无需任何代码
  • HiveMQ Broker : 配置 HiveMQ 直接写入 MQTT 数据,无需任何代码

高效的数据查询

  • 主要查询功能:支持各种标准功能,设置过滤条件,按时间段查询
  • 多表聚合查询:使用 STable 并设置标签过滤条件进行高效的聚合查询
  • Downsampling to Query Value : 在连续时间窗口聚合数据,支持插值

高级功能

  • 连续查询:基于滑动窗口,定期自动查询和计算数据流
  • 数据发布者/订阅者:像典型的消息传递系统一样订阅新到达的数据
  • Cache : 每个设备/表新到达的数据都会被缓存
  • 告警监控:自动监控超限数据,根据配置规则主动推送

连接器

  • C/C++ 连接器:通过 libtaos 客户端库连接到 TDengine 服务器的主要方法
  • [Java Connector(JDBC)]:使用JDBC API从Java应用程序连接到服务器的驱动程序
  • Python 连接器:用于从 Python 应用程序连接到 TDengine 服务器的驱动程序
  • RESTful 连接器:一种通过 HTTP 与 TDengine 交互的简单方法
  • Go Connector:用于从 Go 应用程序连接到 TDengine 服务器的驱动程序
  • Node.js 连接器:用于从 Node.js 应用程序连接到 TDengine 服务器的驱动程序
  • C# 连接器:用于从 C# 应用程序连接到 TDengine 服务器的驱动程序
  • Windows Client : 编译你自己的 Windows 客户端,这是 Windows 环境下各种连接器所需要的

与其他工具的连接

  • Grafana:查询TDengine中保存的数据并提供可视化
  • MATLAB : 通过在 MATLAB 中配置的 JDBC 访问存储在 TDengine 服务器中的数据
  • R : 通过 R 中配置的 JDBC 访问存储在 TDengine 服务器中的数据
  • IDEA 数据库:通过 IDEA 数据库管理工具直观地使用 TDengine

TDengine集群的安装与管理

  • 准备:部署 TDengine 用于生产用途之前的重要考虑事项
  • 创建您的第一个节点:易于遵循快速设置
  • 创建后续节点:为新节点配置 taos.cfg 以向现有集群添加更多节点
  • 节点管理:增加、删除、检查集群中的节点
  • Vnode高可用:通过多副本实现Vnode的高可用
  • Mnode 管理:自动创建系统,无需任何人工干预
  • 负载均衡:一旦节点数量或负载变化自动执行
  • 离线节点处理:任何离线超过一定时间的节点都会从集群中移除
  • Arbitrator:用于偶数副本的情况,防止裂脑

TDengine运维

  • 容量规划:根据场景估算硬件资源
  • 容错和灾难恢复:设置正确的 WAL 和数据副本数
  • 系统配置:端口、缓存大小、文件块大小等系统配置
  • 用户管理:添加/删除TDengine用户,修改用户密码
  • 导入数据:将数据从脚本或 CSV 文件导入 TDengine
  • 导出数据:从 TDengine shell 或从 taosdump 工具导出数据
  • 系统监控:监控系统连接、查询、流计算、日志和事件
  • 文件目录结构:TDengine数据文件和配置文件所在的目录
  • 参数限制和保留关键字:TDengine 的参数限制和保留关键字列表

TDengine技术设计

  • 【系统模块】:taosd功能和模块划分
  • 【数据复制】:支持实时同步/异步复制,保证系统高可用
  • 技术博客:更多技术分析和架构设计文章

常用工具

  • TDengine 样本导入工具
  • TDengine 性能对比测试工具
  • 通过IDEA数据库管理工具可视化使用TDengine

性能:TDengine 对比其他

  • 性能:TDengine 与 InfluxDB 使用 InfluxDB 的开源性能测试工具
  • 性能:TDengine 与 OpenTSDB
  • 性能:TDengine 与 Cassandra
  • 性能:TDengine 与 InfluxDB
  • TDengine vs InfluxDB/OpenTSDB/Cassandra/MySQL/ClickHouse的性能测试报告

更多关于物联网大数据

  • 物联网与工业互联网大数据的特点
  • 物联网大数据平台的特点和功能
  • 为什么通用大数据平台不适合物联网场景?
  • 为什么TDengine是物联网、车联网、工业互联网大数据平台的最佳选择?

常问问题

  • 常见问题:常见问题和解答

关于时序数据库的概念,请参考下面的文章:

时序数据库概念


阅读后理解:

我们在进行物联网数据开发过程中,会发现很多数据使用传统数据库存储已经无法满足需求,这个时候我们会考虑到使用大数据技术来解决大数据的问题。

然而在实际过程中,大数据有很多中间件,但是集成起来会遇到很大的技术成本,数据查询操作成本在离线情况下并不能做到实时查询千万条数据。

由此TDengine应运而生。

TDengine说是大数据平台,更多的是时序数据库的功能。包括时序数据的存储,查询,分析。其本身具备了大数据,流式处理,队列,缓存,时序数据库,集群功能等多种功能。

其架构简单来讲,是服务器和客户端的架构。

一般情况下,Linux下安装服务端,windows安装客户端。

所以安装和部署,也应该分为两部分:

1.Linux下的服务器端的安装部署

2.windows下的客户端的安装部署。

源码下载与源码开发环境的搭建:

由于是java语言开发,GitHub托管,所以直接使用idea即可下载源码,

1.项目在GitHub托管,java语言开发

2.源码下载地址:

https://github.com/taosdata/TDengine/

3.idea gitclone项目到本地

4.前置条件:jdk8,git,maven安装成功

方式:略

但我们正常不是在源码的基础上开发,而是基于项目,开发业务代码,进行时序数据的增删改查,分析统计等。

那么需要创建对应的项目。引入时序数据库的连接文件。

这个和连接mysql是一个思路。

具体不详解。操作sql语句,应该也差不多。

在启动服务上之后创建数据库语句:

1systemctl start taosd//启动服务 2taos//打开数据库 3create database edenginedb; 4use edenginedb; 5

实际 的项目中

需要引入jar包,如下:

1<!-- https://mvnrepository.com/artifact/com.taosdata.jdbc/taos-jdbcdriver --> 2<dependency> 3 <groupId>com.taosdata.jdbc</groupId> 4 <artifactId>taos-jdbcdriver</artifactId> 5 <version>2.0.30</version> 6</dependency> 7 8

https://mvnrepository.com/artifact/com.taosdata.jdbc/taos-jdbcdriver/2.0.30

代码交流 2021