当前位置: 首页 > news >正文

TDengine 在业务落地与架构改造中的应用实践!

前言

  在物联网和大数据时代,时序数据的管理和分析变得至关重要。TDengine,作为一款专为时序数据设计的开源数据库,以其卓越的存储和查询效率,成为众多企业优化数据架构的优选。本文将分享我将TDengine成功应用于实际业务的经验,以及在架构改造过程中的心得体会。

学习TDengine的途径

  在开始使用TDengine之前,我主要通过以下途径获取学习资源:

  • 官方文档:提供了详尽的安装、配置和查询语法,是快速入门的关键。
  • GitHub社区:阅读源码和参与讨论,让我对TDengine的高级特性和应用场景有了更深的理解。
  • 技术论坛:CSDN、掘金等平台上的实践文章和经验分享,为我提供了宝贵的参考。

  通过这些资源的深入学习,我逐步掌握了TDengine的核心概念和功能,包括超级表的设计、高效的查询机制和集群的部署。

使用TDengine的体验

  在实际使用中,TDengine的以下几个特点给我留下了深刻印象:

  • 超级表:非常适合管理物联网设备数据,通过一个表模板即可高效管理海量设备数据,大大简化了数据表的设计。
  • 查询和聚合:TDengine内置了多种聚合函数,并支持窗口查询,使得复杂的统计分析变得轻松,且查询速度非常快。
  • 轻量级部署:TDengine部署简单,资源占用少,即使在资源受限的环境中也能保持稳定的性能。

  据我们研讨时了解,对于TDengine,它作为一个高性能、分布式、支持 SQL 的时序数据库(Time-series Database),TDengine 的典型适用场景包括但不限于 IoT、工业互联网、车联网、IT 运维、能源、金融证券等领域。需要指出的是,它 是针对时序数据场景设计的专用数据库和专用大数据处理工具,因其充分利用了时序大数据的特点,它无法用来处理网络爬虫、微博、微信、电商、ERP、CRM 等通用型数据。从这些点上,我们选择它学习它并使用它进行落地改造,是非常具有明智的举止。

TDengine在物联网数据中的应用

业务背景

  我们的项目涉及大规模的设备监控和数据采集。随着设备数量和数据量的增长,传统关系型数据库在处理时序数据时的性能瓶颈日益凸显。为了提升系统性能,我们决定引入TDengine。

TDengine的应用

  在新架构中,TDengine帮助我们实现了高效的数据存储和查询:

  • 数据写入:利用TDengine的批量写入接口,我们能够每秒处理数百万条数据,而不会遭遇写入瓶颈。
  • 超级表建模:我们根据设备类型或地理位置,为数千台设备的数据存储需求创建超级表,便于统一管理和查询。
  • 查询与分析:TDengine的窗口函数和内置聚合查询能力,使我们能够在毫秒级时间内完成复杂的设备状态分析和异常检测。

  这些改进显著提升了系统的性能,查询响应时间从秒级缩短到毫秒级,写入性能提高了50%以上。

如下是一张TDengine 在钢铁冶金行业能源管理系统中的应用架构图,大家可以参考看下,受益匪浅。

从传统数据库到TDengine集群的架构改造

架构挑战

  在引入TDengine之前,我们的架构面临以下挑战:

  • 写入瓶颈:随着设备数量和数据量的增加,写入速率成为系统瓶颈。
  • 查询延迟:复杂的聚合查询耗时较长,无法满足实时业务需求。
  • 扩展性受限:传统数据库的单节点架构在高并发读写场景下性能下降,扩展能力有限。

引入TDengine集群后的优化

  为了解决这些问题,我们引入了TDengine的集群架构:

  • 分布式存储与查询:数据分散存储在多个节点上,提高了系统的扩展能力。
  • 高可用性:集群的副本机制确保了数据的高可用性和容错性。
  • 查询性能优化:TDengine的时序数据引擎显著提升了查询性能,尤其是在时间范围查询和聚合分析方面。

  这次架构改造使系统整体性能提高了约30%,数据处理能力大大增强。

如何充分利用TDengine的优势

  在业务建模中,我们充分利用了TDengine的超级表功能:

  • 按设备类型划分超级表:为每种设备类型创建超级表,便于管理和查询。
  • 按区域划分:通过地理区域划分超级表,提高查询效率。
  • 事件日志表与统计表:除了传感器数据,我们还设计了事件日志表记录设备异常,结合TDengine的窗口查询功能,定期生成统计数据。

  这种建模方式不仅提高了数据管理和查询的效率,还优化了系统性能。

如下是TDengine官方总结的角色扮演,相对具有价值借鉴。

  其中对于上图中,官方给出的解答是:左侧是各种数据采集或消息队列,包括 OPC-UA、MQTT、Telegraf、也包括 Kafka,他们的数据将被源源不断的写入到 TDengine。右侧则是可视化、BI 工具、组态软件、应用程序。下侧则是 TDengine 自身提供的命令行程序(CLI)以及可视化管理工具。同时我也把它分享给大家。

总结

  通过引入TDengine,我们成功解决了传统数据库在时序数据存储和查询上的瓶颈,系统性能和可扩展性得到了显著提升。TDengine在海量数据存储、超级表设计、高效查询和集群扩展方面展现了强大的能力。

  未来,我们计划进一步探索TDengine的高级功能,如流数据分析和订阅机制,以持续提升系统的智能化和数据处理能力。


参考链接:

  1. TDengine 官网:https://www.taosdata.com/
  2. TDengine GitHub 社区:https://github.com/taosdata/TDengine

– End

相关文章:

TDengine 在业务落地与架构改造中的应用实践!

前言 在物联网和大数据时代,时序数据的管理和分析变得至关重要。TDengine,作为一款专为时序数据设计的开源数据库,以其卓越的存储和查询效率,成为众多企业优化数据架构的优选。本文将分享我将TDengine成功应用于实际业务的经验&am…...

Python3爬虫教程-HTTP基本原理

HTTP基本原理 1,URL组成部分详解2,HTTP和HTTPS3,HTTP请求过程4,请求(Request)请求方法(Request Method)请求的网址(Request URL)请求头(Request H…...

竹云赋能“中国·贵州”全省统一移动应用平台建设,打造政务服务“新引擎”

近日,2024中国国际大数据产业博览会在贵州贵阳圆满落幕。会上,由贵州省政府办公厅牵头建设的“中国贵州”全省统一移动应用平台正式发布,聚焦民生办事、政务公开、政民互动、扁平高效、数据赋能五大模块,旨在打造公平普惠的服务平…...

【MySQL 04】数据类型

目录 1.数据类型分类 2.数值类型 2.1 tinyint 类型 2.2 bit类型 2.3 float类型 2.4decimal 3.字符串类型 3.1 char类型 3.2 varchar类型 4.日期和时间类型 6. enum和set类型 6.1.enum和set类型简介: 6.2.enum和set的一般使用方法 6.3.用数字的方式…...

夹耳式蓝牙耳机哪个牌子最好,教你如何不踩雷

近年来,夹耳式耳机备受众人喜爱。主要原因在于其不入耳的特性,既能保护听力健康,又能让人享受到极致的音乐体验。久而久之,人们对入耳式耳机反而感到不习惯了。然而,一些想要入手夹耳式耳机的小伙伴却犯了难&#xff0…...

亿发零售云解析:新零售破局与年轻群体消费趋势变化

近年来,随着数字化、智能化的快速发展,“新零售”概念逐渐成为商业领域的热门话题。相比传统零售,新零售通过线上与线下的深度融合,利用大数据、人工智能等技术,赋能消费者与品牌之间的互动。尤其在年轻消费群体中&…...

zabbix“专家坐诊”第257期问答

问题一 Q:zabbix5.0监控项里的键值,怎么设置变量值?{#ABC} {$ABC} 都识别不到变量。 A:可以参考一下这个。 问题二 Q:我想问一下用odbc创建监控项,生成了json格式,如何创建一个触发器去判断里面…...

【代码笔记】

1级 第一课——cout /* C01.L01.程序的基本结构、cout语句 杨彦彬 2024.9.23日作业 &#xff08;2024.9.23做&#xff09; */ //调用头文件 #include<bits/stdc.h> //使用标准名字空间 using namespace std; //代码主体 int main(){//输出数字cout<<25;cout<&…...

CentOS上使用Mosquitto实现Mqtt主题消息发布和订阅mqtt主题消息连同时间戳记录到文件

场景 CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载&#xff1a; CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载-CSDN博客 上面介绍了mosquitto的离线安装。 如果业务场景中需要订阅某mqtt主题的消息并将收到消息的时间以…...

COMTRADE 录波文件 | 可视化工具 | 电能质量查看软件

COMTRADE 录波文件 | 可视化工具 | 电能质量查看软件 主要功能介绍 支持 IEEE Std C37.111-1991/1999/2013 规范。读取 ASCII 或二进制 COMTRADE 文件。查看来自 COMTRADE 配置文件的模拟和数字通道列表。将图表导出为 SVG、BMP、JPEG 和 PNG 图形格式。将显示的观察结果以 C…...

【面试宝典】面试基础指导

目录 &#x1f354; 简历怎么写 &#x1f354; ⾯试前针对项⽬撰写完成项⽬⽂档 &#x1f354; ⾯试前 &#x1f354; ⾯试中 4.1 投递简历当天没有收到⾯试邀约 4.2 讲解项⽬ 4.3 讲解知识 4.4 ⾯试中关于技术选型的演变 &#x1f354; ⾯试后 &#x1f354; 小结 &…...

Linux·权限与工具-git与gdb

1. git工具 git是一款软件&#xff0c;发明它的人同时发明了Linux操作系统&#xff0c;也就是大名鼎鼎的Linus Torvalds 林纳斯托瓦兹。后来人们把git软件包装&#xff0c;产生了github、gitee等平台。 git产生的初衷就是便于进行多人协同管理&#xff0c;同时它还可以用来将本…...

unity 如何 团队协作避免文件冲突?

在Unity团队协作中&#xff0c;避免文件冲突的关键在于版本控制、场景和Prefab的管理、以及沟通。以下是具体方法&#xff1a; 1. 使用版本控制系统 (VCS) Unity支持多个版本控制系统&#xff0c;如Git和Perforce。通过版本控制&#xff0c;每位团队成员可以独立工作&…...

VOC2007 的ImageSets/Main目录下通常有四个文件test.txt val.txt train.txt trainval.txt

在 VOC2007 的ImageSets/Main目录下通常有四个文件&#xff1a; test.txt&#xff1a;这个文件列出了用于测试的图像文件名。这些图像将在评估模型性能等测试阶段被使用。train.txt&#xff1a;此文件包含用于训练的图像文件名。在模型的训练过程中&#xff0c;程序会读取这些图…...

JavaScript中的parseInt(), Number(),+有啥区别?

文章目录 parseInt()Number()一元加号 处理 NaN 的常见方法1. 使用 isNaN() 函数检查值2. 使用 Number.isNaN() 方法3. 提供默认值4. 使用 try...catch 结构5. 使用类型守卫 在JavaScript中&#xff0c;parseInt(), Number(), 和一元加号 都可以用来转换值到数字类型&#xff…...

java核心基础

文章目录 1. Java开发基础1.1 DOS常用命令:&#xff08;以MAC常用命令比较&#xff09;1.2 JVM、JRE、JDK之间的关系1.3 Java开发环境的搭建1.4 Java的注释&#xff0c;标识符、标识符的命名规范1.5 变量和常量的定义及初始化1.6 Java的运算符1.7 三大语句1.8 常用的类1.8.1 ja…...

java 字符串如何通过占位符替换字符串

在Java中&#xff0c;可以使用String.format()方法或者MessageFormat.format()方法来通过占位符替换字符串。 例子1&#xff1a;使用String.format()方法 String str "Hello, %s! Today is %s."; String result String.format(str, "Alice", "Sun…...

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【LMS调测】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 LMS全称为Lite Memory Sanitizer&#xff0c;是一种实时…...

2024.9.24 数据分析

资料 111个Python数据分析实战项目&#xff0c;代码已跑通&#xff0c;数据可下载_python数据分析项目案例-CSDN博客 【数据挖掘六大项目实战】敢说这是全B站讲的最详细最通俗易懂的数据挖掘教程&#xff01;整整60集&#xff01;学不会来找我&#xff01;-数据挖掘、数据挖掘…...

企业急于采用人工智能,忽视了安全强化

对主要云提供商基础设施上托管的资产的安全分析显示&#xff0c;许多公司为了急于构建和部署 AI 应用程序而打开安全漏洞。常见的发现包括对 AI 相关服务使用默认且可能不安全的设置、部署易受攻击的 AI 软件包以及不遵循安全强化指南。 这项分析由 Orca Security 的研究人员进…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...