MySQL 无法满足查询性能?北明天时选择 TDengine 实现热网监控和能源分析

news/2024/7/6 0:20:19 标签: tdengine, 数据库, 时序数据库

小 T 导读:目前,北明天时已经在热网监控和能耗分析系统上应用了 TDengine,相比于 MySQL,当前在存储和查询上都获得了显著提升。在其他项目中,他们也正在加速 TDengine 对其他数据库产品的替代。本文中北明天时分享了关于 TDengine 的应用实践,以供参考。

 

企业简介

北明天时能源科技(北京)有限公司(简称北明天时)成立于 2000 年,在 2015 年发展成为常山北明(股票代码:000158)的全资子公司。其以智慧能源服务为核心,聚焦政府能源监管系统、公共能源服务行业管控系统、园区和企业综合能源管控系统的建设和服务,致力于将云计算、大数据、物联网和人工智能等先进信息技术与业务应用深度融合,为企业和政府提供 “智慧、节能、低碳” 的全集成解决方案和一体化服务。

项目介绍

我们的智慧供热项目最初是使用 MySQL 来存储历史数据,但随着数据量的上升,查询性能越发难以满足业务需求。为了缓解现状,我们开始研究 TDengine Database,在深入了解后发现它真的是一款适合物联网的时序数据库,甚至可以直接使用 SQL 语句。于是在经过一段时间的测试后,我们果断选择将 TDengine 接入项目。

目前,我们已经在热网监控和能耗分析系统上应用了 TDengine Database,具体的应用场景如下图标红处所示。

  • 热网监控系统

热网监控系统目前包括热源监测和热力站监控,用于实时远程监控热源、热力站等的运行状态,将供热数据进行可视化展示,便于运行管理人员掌握整个供热系统的运行状况。

  • 能耗分析系统

用于实时统计、计算和监测系统能耗,建立分级能耗评价体系,通过数据的同比、环比和指标完成度评价,实现对系统能耗情况的全面分析。同时通过能耗排名找出能源浪费的关键点,有针对性地进行改善与优化控制,从而减少能源浪费,实现真正意义上的节能。

在分析之后可以发现,这两个系统都有一个相同的特点,即对数据的实时查询展示有很高的需求,比如实时管理供热系统、能耗趋势实时呈现等。

对于这种由设备产生的高频时序数据的处理,TDengine 无疑是很合适的选择。鉴于其显著的改善效果,在其他项目中我们也正在加速 TDengine 对其他数据库产品的替代。

当然在落地的过程中我们也遇到过一些小问题:比如,旧版本 TDengine 不支持对时间戳的 group by,经过升级后解决。再比如查询时不同客户端得到的表结构并不一样,这是因为客户端的各自缓存的元数据不一致,通过 reset query cache 命令得到了解决。还有一些日常的小问题,我们都在 TDengine 的技术交流群中得到了官方或社区网友的及时反馈和帮助。

一、效果分析

我们以 TDengine 2.2.2.0 版本落地了一个三节点三副本的集群,机器配置为 16C + 32G + 1T 的机械硬盘。具体到实际路径上,我们的设备数据是先经过实时采集写入 Kafka 后,再通过 Python 连接器消费入库的。

在当前环境下,我们共创建了 5,500 多张子表,存储了大概九千万行左右的数据,最大一张超级表的数据接近 7,300 万行,单行大概 180 字节。即便是在三个副本的情况下,当前磁盘空间总共也只占用了 10.2G,再加上数据过期删除的机制,我们基本不用再需要担心磁盘存储的成本问题了

而内存和 CPU 的使用率,日常也都是分别维持在 1.9% 和 0.3% 左右,可以说是毫无压力。

下图是我们的热网监控平台查询业务对应的 SQL,常用查询基本都是毫秒级返回数据

select sum(Ep) as Ep,sum(HM_HT) as HM_HT .............. interval(1d);

SELECT AVG(heatsourcepg) AS heatsourcepg,AVG(heatsourcetg) AS heatsourcetg,AVG(heatsourcef_mtrg) AS heatsourcef_mtrg .............. FROM iot_device.source_minute WHERE ts >="2022-04-06 12:00:00" AND ts <"2022-04-06 13:00:00.000" GROUP BY groupid,level

写在最后

2019 年北明天时开始积极开拓智慧能源服务新市场,开发包含供热、供冷、供电、供气等能源综合管控系统和智慧水务监管平台。一年之后我们便正式引入了 TDengine 这款优秀的开源时序数据库(Time-Series Database),而 TDengine 也确实没让我们失望。今后,北明天时将和 TDengine 一起,为推动城市能源高效利用、清洁能源替代、创建低碳智慧城市持续做贡献。

作者 | 贾苗苗,北明天时能源科技(北京)有限公司研发工程师


想了解更多TDengine的具体细节,欢迎大家在GitHub上查看相关源代码。


http://www.niftyadmin.cn/n/983074.html

相关文章

mongoose crud

Js代码 exports.insert function(modelname, data) { var model require(./models/ modelname); model.create(data, function(err, doc) { if (err) return next(err); }); }; //Model.remove function remove (conditions, ca…

快速安装samba

现下载samba http://pan.baidu.com/s/1eRq9lIy 简介&#xff1a;Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。SMB&#xff08;Server Messages Block&#xff0c;信息服务块&#xff09;是一种在局域网上共享文件和打印机的一种…

【直播】通过一条 SQL 语句,看透分布式数据库的查询优化

我们先看一下&#xff0c;一条 SQL 语句从客户端发起到服务端执行所经历的过程。图片来源于网络优化器是这个过程中的关键环节&#xff0c;它决定了如何更好地执行一条 SQL 语句。优化器中包含很多优化规则&#xff0c;比如子查询提升、条件优化、无用列裁剪、子链接转换等。各…

新项目:思考(Terminal Think Music)

Are you executing a process that takes a long time? Do you want to know that it’s still working while you are in another terminal/making coffee? Do you have a favorite game show tune to play while doing something? 您正在执行需要很长时间的过程吗&#xf…

“一个扫描枪一张表”,韵达选择 TDengine 应对每日亿级数据量

小 T 导读&#xff1a;此前&#xff0c;韵达使用 MySQL 分区索引处理订单数据的方式遭受到了挑战&#xff0c;面对每日亿级的数据量&#xff0c;MySQL 显然已经无法满足当下的数据处理需求。为更好地发展业务&#xff0c;在此基础上韵达新增了 TDengine 的数据源&#xff0c;用…

MFC单文档应用程序显示图像

1 利用VS2010向导创建一个MFC单文档应用程序MFCTest 2 在MFCTestView.h中引用<atlimage.h>&#xff0c;并创建一个CImage对象 #include <atlimage.h>private:CImage image;3 打开资源文件&#xff0c;选中Menu下面的IDR_MAINFRAME&#xff0c;添加一个新的菜单项“…

替代 Elasticsearch,TDengine 助力四维图新将存储空间利用率提升 8 倍

小 T 导读&#xff1a;面对海量的车载轨迹数据&#xff0c;四维图新数据存储面对非常大的压力——每分钟的轨迹数据大概有 2000 万条记录&#xff0c;他们此前使用的 Elasticsearch 存储方式不仅造成了严重的物理资源浪费&#xff0c;还存在查询瓶颈&#xff0c;所以急需转换数…

从Github用Python安装软件包

翻译自: https://www.pybloggers.com/2015/06/install-package-in-python-from-github/