TDengine 流计算实践指南:从平均风速到复杂流计算解析

在新能源行业中,多采用数据中台来管理业务数据,使用时序数据库(Time Series Database)来管理时序数据,他们的数据都来自数采网关。以风力发电场景为例,需要实时计算风机的各种 KPI 指标,往往通过数据中台的定时任务来完成这些计算。目前,现有的方案存在几个方面的问题:首先,由于是定时任务,KPI 计算的实时性无法保证,特别是在 KPI 的计算需要多个步骤才能完成的情况下,延迟可能会长达几分钟甚至十几分钟。其次,由于数据中台基于 Hadoop 生态,架构臃肿、组件繁多,需要大量服务器,不仅导致业务应用开发成本高昂、同时也导致系统的运维成本居高不下。

因此,为了提高业务响应速度和实时性,客户希望将 KPI 计算任务卸载到 TDengine。希望借助 TDengine 的流计算功能,大幅度提升 KPI 计算的效率和实时性。采用 TDengine 流计算后,简单的 SQL 即可实现 KPI 计算需求,业务响应时间(流计算的开发时长)从数周缩短一两天甚至数小时,极大地提高了业务响应能力显著地提高了企业的竞争力。

此外,引入 TDengine 流计算后,KPI 计算的延迟从几分钟甚至十几分钟缩短到秒级甚至毫秒级,大幅度地提升了实时性。从基于 Hadoop 生态的批任务到基于 SQL 的流式计算,不仅降低了开发复杂度和开发测试成本,还减少了数据中台的服务器集群规模,显著降低了成本和运维复杂度,实现了降本增效的目标

本文将从“实时计算 95 个风机的平均风速”到“复杂 KPI 的流计算”两大场景进行阐述,从代码层面为你解读 TDengine 流计算的强大功能,助力新能源行业的应用。

实时计算 95 个风机的平均风速

为尽可能还原真实业务场景,我们模拟 95 个风机,1 秒钟上报 1 条数据的场景。

创建数据库

来百度APP畅享高清图片

创建超级表

创建子表

注意:流计算会考虑过期数据以及乱序数据,如果原来的表中已经有数据,新写入的数据时间若早于已有数据,有可能因为数据过期被丢弃。如果数据被丢弃,有可能无法生成新的流计算结果。

模拟 95 个风机,1 秒钟上报 1 条数据的场景:

其中,insert_1s1row.json是taosBenchmark的配置文件,配置方法请参考:taosBenchmark插入场景 JSON 配置文件示例 。其中关键参数如下:

查询流计算结果

复杂流计算场景

该场景的 KPI 计算规则复杂,并且数据模拟的难度非常大,因此,本演示只展示复杂 KPI 计算逻辑,不展示流计算实时计算的过程。

业务需求

该 KPI 的计算公式,如下:

其中:

  • n 为该日的样本总数,15 分钟一个点记作 i;pmi 为 i 时刻的实际功率;ppi 为 i 时刻的短期预测功率;

  • 若 pmi = 0,则 i 时刻的预测值直接 = 0;

  • 若 ppi > 2 * pmi,则 i 时刻的结果直接 = 1;

  • 否则,预测值按照上面的公式计算。

创建超级表

创建一阶段流计算

创建二阶段流计算

向源表写入数据

查询计算结果

写在最后

通过本文的介绍和示例,我们可以清晰地看到 TDengine 在处理大规模时序数据和实时流计算方面的强大功能。它不仅显著提高了业务响应速度和实时性,还大幅降低了系统的开发和运维成本。在新能源领域 KPI 计算的实际应用中,TDengine 成功地解决了定时任务的延迟问题,实现了秒级甚至毫秒级的实时计算。

未来,随着业务需求的不断增长和复杂性提升,TDengine 的流计算能力将为更多场景提供高效、可靠的解决方案。希望本文的分析和实操示例能为广大用户带来启发和帮助,让大家在实际项目中充分发挥 TDengine 的优势,实现更高效的业务管理和数据处理。

关于 TDengine 流计算的更详细信息可查阅官方文档:https://docs.taosdata.com/develop/stream/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值