小T导读:在金融、交通、医疗、教育等关键行业,UPS(不间断电源)设备是保障基础设施稳定运行的”最后一道防线”。然而,多网点、多机房、多设备的分散部署格局,让 UPS 运维长期陷于”人工巡检、被动响应”的困境。杭州华渚物联科技有限公司(以下简称”华渚物联”)在核心平台中,引入 TDengine TSDB 时序数据库,构建了覆盖设备物联、实时监控、健康管理、预测维护的 UPS 全生命周期数字化底座。本文将介绍华渚物联如何借助 TDengine 应对海量设备时序数据管理挑战,为多行业用户提供”安全、经济”的不间断电源智慧运维服务。
转型驱动:华渚物联为何选择 TDengine TSDB
华渚物联定位为以不间断电源全生命周期管理为核心的产业服务平台,面向金融、交通、医疗、教育等行业的”多网点、多机房、多设备”场景,打造了电源设备全生命周期管理平台。平台需要接入大量不同品牌、不同型号的 UPS 设备,通过智能网关加密采集设备运行数据,实现资产数字化、运维流程化、监控实时化、健康智能化的统一管理。
在平台建设过程中,数据层面呈现出典型的物联网特征,我们也面临着以下核心挑战:
- 海量设备数据的高并发写入瓶颈:单一项目中往往涉及数十至上百个网点,每个网点部署多台 UPS 设备,每台设备需实时采集输入/输出电压、输入/输出电流、电池电压、电池内阻、电池温度、负载率、频率、环境温湿度等 20 余项参数,采集频率从 1 秒到 1 分钟不等。高峰期每秒可达数万乃至十万级数据点涌入,传统关系型数据库(如 MySQL)在高并发写入下极易出现锁表、延迟堆积,难以稳定支撑。
- 多网点多设备的统一管理难题:不同行业客户、不同网点、不同品牌的 UPS 设备结构相似但标签属性各异(如客户名称、网点编号、设备品牌、设备型号、安装位置等),传统方式需为每类设备创建大量独立的数据表,跨网点、跨设备的统一查询和聚合分析极其低效。
- 实时告警与电池健康分析的延迟痛点:UPS 设备的核心价值在于”不间断”——一旦输入电压异常、电池欠压或温度超标,必须在秒级内触发告警。同时,电池健康度(SOH)评估需要持续追踪充放电曲线、内阻变化趋势,依赖大规模历史数据的快速聚合计算。传统数据库在复杂时序查询上的性能瓶颈,导致告警延迟、健康分析无法实时化。
- 长期数据存储成本与运维复杂度:UPS 设备需要 7×24 小时不间断运行,按照行业规范需保存至少 1~3 年的历史运行数据用于追溯分析和合规审计。传统数据库存储膨胀快、查询效率随数据量增长急剧下降,运维成本持续攀升。
选型决策:经过对 InfluxDB、TimescaleDB、TDengine 等多种时序数据库的对比测试,我们最终选择了 TDengine TSDB 来替换MySQL。其超高性能的数据写入/查询效率、极具创新的超级表数据模型以及极低的学习和运维成本,完美契合了 UPS 物联网监控场景对海量设备时序数据管理的苛刻要求。特别是在多设备统一建模、标签维度灵活过滤、降采样连续查询等方面,TDengine 展现出了明显的技术优势。
整体技术架构
为支撑海量 UPS 终端的高并发接入与低时延运维分析,平台采用“端–边–云”协同的五层技术架构(如下图所示)。设备层:多品牌、多网点、多机房的 UPS 终端及配套传感器持续产生高频时序数据。
采集层:通过智能网关完成多协议解析、边缘缓存、加密传输与断点续传,确保弱网环境下数据不丢不重。
数据层:基于 TDengine TSDB 构建,利用其超级表(Super Table)模型实现海量设备的统一建模,依托标签(Tag)体系支持灵活的多维过滤,并通过降采样连续查询(CQ)与高压缩比(80%+)能力,轻松承载 10 万级点/秒的写入吞吐。
分析层:实时告警引擎基于秒级阈值检测与状态机判断触发异常通知,同时结合 SOH/SOC 计算、内阻趋势分析与寿命预测模型输出主动更换建议。
应用层:最终落地为全国监控大屏、自动派单工单系统与季度趋势报表,并通过微信/短信/邮件等多通道完成告警触达与运维闭环。
该架构将 TDengine 的时序数据能力与业务运维逻辑深度耦合,既保障了海量测点高倍率采集下的存储与查询性能,也为 UPS 智慧运维提供了从“实时监控”到“健康预测”的全栈技术支撑。

应用成效:TDengine TSDB 带来的核心收益
引入 TDengine 时序数据库后,华渚物联构建了核心平台统一的数据底座,获得了显著收益,主要体现在以下四个方面:
- 性能提升
数据写入速度提升数十倍,单节点即可支撑每秒十万级数据点的稳定写入;设备状态查询响应时间从秒级降至毫秒级,跨网点聚合分析从分钟级降至秒级。
- 成本降低
TDengine 的高效列式压缩技术将原始数据存储空间降低 80% 以上,3 年历史数据的存储成本仅为传统数据库的五分之一,大幅降低了长期数据留存的经济压力。
- 运维简化
得益于超级表+标签的数据模型,数百台不同品牌 UPS 设备的数据统一存储在少数几张超级表中,无需分表管理。标准 SQL 语法降低了开发门槛,运维效率显著提升。
- 决策增强
基于 TDengine 的实时数据能力,平台实现了从”被动响应”到”主动预防”再到”预测托管”的三级跃升,为客户提供电池寿命预测、负载趋势分析等高价值数据服务。
核心业务场景与 TDengine TSDB 实践
以下展示的是核心平台中的典型业务场景及其在 TDengine 中的技术实现。
场景一 UPS 运行参数实时监控与异常告警
通过实时采集 UPS 设备的输入/输出电压、电流、频率、负载率、电池电压、电池温度等关键运行参数,当参数超出安全阈值时,秒级触发告警并通过短信、微信、邮件等方式推送至运维人员,实现从”人工巡检”到”实时监管”的升级。
# 建表语句 - 创建 UPS 运行参数超级表
CREATE STABLE IF NOT EXISTS ups_runtime_data (
ts TIMESTAMP, -- 时间戳
input_voltage FLOAT, -- 输入电压(V)
input_current FLOAT, -- 输入电流(A)
input_frequency FLOAT, -- 输入频率(Hz)
output_voltage FLOAT, -- 输出电压(V)
output_current FLOAT, -- 输出电流(A)
output_frequency FLOAT, -- 输出频率(Hz)
load_rate FLOAT, -- 负载率(%)
battery_voltage FLOAT, -- 电池电压(V)
battery_current FLOAT, -- 电池电流(A)
battery_temp FLOAT, -- 电池温度(℃)
env_temp FLOAT, -- 环境温度(℃)
env_humidity FLOAT, -- 环境湿度(%)
ups_status NCHAR(16) -- 运行状态: normal/bypass/battery/fault
) TAGS (
device_id NCHAR(32), -- 设备唯一标识
customer NCHAR(64), -- 客户名称
site_name NCHAR(64), -- 网点名称
brand NCHAR(32), -- 设备品牌
model NCHAR(32), -- 设备型号
install_date NCHAR(16), -- 安装日期
region NCHAR(16) -- 所属区域
);
# 查询语句 — 实时检测异常设备并输出告警信息
SELECT
ts AS 检测时间,
device_id AS 设备编号,
customer AS 客户名称,
site_name AS 网点名称,
output_voltage AS 输出电压,
battery_voltage AS 电池电压,
battery_temp AS 电池温度,
load_rate AS 负载率,
CASE WHEN ups_status = 'fault' THEN '设备故障告警'
WHEN ups_status = 'battery' THEN '市电中断,电池供电'
WHEN battery_voltage < 10.5 THEN '电池欠压告警'
WHEN battery_temp > 45 THEN '电池高温告警'
WHEN load_rate > 90 THEN '负载过载告警'
WHEN output_voltage < 200 OR output_voltage > 250 THEN '输出电压异常'
ELSE '正常'END AS 告警类型,
CASE WHEN ups_status = 'fault' THEN '紧急'
WHEN battery_voltage < 10.5 OR battery_temp > 45 THEN '严重'
WHEN load_rate > 90 OR output_voltage < 200 OR output_voltage > 250 THEN '警告'
ELSE '提示'END AS 告警级别
FROM ups_runtime_data
WHERE ts >= NOW - 1m
AND (output_voltage < 200 OR output_voltage > 250 OR battery_voltage < 10.5 OR battery_temp > 45 OR load_rate > 90 OR ups_status != 'normal') ORDER BY ts DESC;
在 UPS 实时监控场景中,传统架构下数百台设备的并发写入和实时查询往往成为系统瓶颈。TDengine TSDB 的超级表模型通过 标签维度 实现了多客户、多网点、多品牌设备的统一建模——所有 UPS 设备数据汇聚于一张超级表,通过 device_id 自动分片,通过标签灵活过滤。其原生时间窗口聚合与 降采样连续查询 能力,使得系统可以在每秒十万级写入的同时,保持毫秒级的状态查询和秒级的异常检测,真正实现了 “写入零延迟、告警零滞后” 的实时监管目标。
场景二 电池健康度(SOH)评估与寿命预测
通过持续记录 UPS 电池的充放电过程,提取每次放电的持续时间、放电深度、端电压变化曲线和电池内阻趋势,计算电池健康度(SOH)和荷电状态(SOC),为电池更换决策和预测托管式服务提供数据支撑。
# 建表语句 — 电池充放电循环事件超级表CREATE STABLE IF NOT EXISTS battery_cycle_events (
ts TIMESTAMP, -- 事件开始时间 bat_event_type NCHAR(16), -- 事件类型: discharge/charge/float duration_sec INT, -- 持续时间(秒) start_voltage FLOAT, -- 放电起始电压(V) end_voltage FLOAT, -- 放电结束电压(V) avg_current FLOAT, -- 平均放电电流(A) max_current FLOAT, -- 最大放电电流(A) discharge_depth FLOAT, -- 放电深度(%) internal_resist FLOAT, -- 电池内阻(mΩ) soc FLOAT, -- 荷电状态(%) soh FLOAT -- 健康度(%)) TAGS (
device_id NCHAR(32), -- 设备唯一标识 battery_pack NCHAR(16), -- 电池组编号 customer NCHAR(64), -- 客户名称 site_name NCHAR(64), -- 网点名称 install_date NCHAR(16) -- 安装日期);# 查询语句 — 计算各设备电池健康度趋势并识别需更换设备SELECT device_id AS 设备编号,
customer AS 客户名称,
site_name AS 网点名称,COUNT(*) AS 充放电次数,AVG(soh) AS 平均健康度,LAST(soh) AS 最新健康度,LAST(internal_resist) AS 最新内阻_mΩ,LAST(ts) AS 最后记录时间,LAST(internal_resist) / AVG(CASE WHEN ts >= NOW - 60d AND ts < NOW - 30d THEN internal_resist END) AS 内阻增长率,CASE WHEN LAST(soh) < 60 THEN '建议立即更换' WHEN LAST(soh) < 80 THEN '建议纳入更换计划' WHEN LAST(soh) >= 80 THEN '健康状态良好' END AS 更换建议FROM battery_cycle_events WHERE ts >= NOW - 90d GROUP BY device_id,customer,site_name ORDER BY LAST(soh) ASC;
电池健康度评估是核心平台从”被动响应”迈向”预测托管式服务”的核心能力。传统方案下,电池充放电数据的存储和跨周期对比分析极为低效,内阻增长趋势的计算常需离线批处理,无法及时预警。TDengine TSDB 凭借其 超级表标签聚合 和 时序窗口函数,使得跨数十台设备、近百天充放电记录的 SOH 趋势分析可以在秒级内完成。运维团队可以实时掌握每台设备电池的健康状态和老化速率, 将电池更换从”故障后被动替换”升级为”基于数据预测的主动更换”,有效避免了因电池老化导致的断电事故。
场景三 多网点设备集中监控大屏与运维工单派发
面向金融、交通等行业客户的”多网点、多机房、多设备”场景,平台需要在一块监控大屏上实时展示全国所有网点 UPS 设备的运行状态、告警分布和工单进度,并基于设备位置和故障级别自动派发运维工单至最近的服务网点。
# 查询语句 — 按客户和区域聚合设备状态概览
SELECT
customer AS 客户名称,
region AS 区域,
COUNT(device_id) AS 设备总数,
SUM(CASE WHEN ups_status = 'normal' THEN 1 ELSE 0 END) AS 正常设备数,
SUM(CASE WHEN ups_status = 'battery' THEN 1 ELSE 0 END) AS 电池供电数,
SUM(CASE WHEN ups_status = 'bypass' THEN 1 ELSE 0 END) AS 旁路运行数,
SUM(CASE WHEN ups_status = 'fault' THEN 1 ELSE 0 END) AS 故障设备数,
SUM(CASE WHEN battery_temp > 45 THEN 1 ELSE 0 END) AS 高温告警数,
AVG(load_rate) AS 平均负载率
FROM ups_runtime_data
WHERE ts >= NOW - 5m
GROUP BY customer, region
ORDER BY 故障设备数 DESC, 高温告警数 DESC;
# 查询语句 — 识别需立即派单的故障设备并匹配最近服务网点
SELECT
ts AS 告警时间,
device_id AS 设备编号,
customer AS 客户名称,
site_name AS 故障网点,
ups_status AS 设备状态,
battery_temp AS 电池温度,
CASE WHEN ups_status = 'fault' THEN '紧急派单'
WHEN battery_temp > 50 THEN '加急派单'
ELSE '常规派单' END AS 派单级别
FROM (
SELECT
LAST(ts) AS ts,
device_id,
LAST(customer) AS customer,
LAST(site_name) AS site_name,
LAST(ups_status) AS ups_status,
LAST(battery_temp) AS battery_temp
FROM ups_runtime_data
GROUP BY device_id
) t
WHERE ups_status = 'fault' OR battery_temp > 50
ORDER BY
CASE WHEN ups_status = 'fault' THEN 0 ELSE 1 END,
battery_temp DESC;
多网点集中监控是核心平台面向行业客户的核心场景。传统架构下,跨数百台设备的实时状态聚合需要多次全表扫描,延迟常达数分钟,无法支撑监控大屏的实时刷新需求。TDengine TSDB 通过 GROUP BY 标签分组聚合 和 子查询取最新状态 的能力,将全量设备状态汇总的响应时间压缩到秒级以内。运维人员可以 在一块大屏上实时掌握全国所有网点 UPS 的运行态势,故障设备自动触发工单派发至最近的县域服务网点,实现了”发现—告警—派单—响应”的 分钟级闭环。
场景四 历史运行数据降采样存储与趋势分析报表
UPS 设备原始数据采集频率为 1 秒~1 分钟,长期保存原始数据存储成本极高。平台利用 TDengine 的降采样连续查询功能,自动将高频原始数据聚合为分钟级、小时级、日级摘要数据,在保留关键统计指标的同时大幅降低存储量,支撑季度运行报告和趋势分析。
# 建表语句 — 降采样摘要超级表(小时级)
CREATE STABLE IF NOT EXISTS ups_hourly_stats (
ts TIMESTAMP, -- 小时整点时间
avg_input_v DOUBLE, -- 平均输入电压
avg_output_v DOUBLE, -- 平均输出电压
max_load_rate FLOAT, -- 最大负载率
avg_load_rate DOUBLE, -- 平均负载率
min_battery_v FLOAT, -- 最低电池电压
max_battery_temp FLOAT, -- 最高电池温度
max_env_temp FLOAT, -- 最高环境温度
fault_count BIGINT, -- 故障次数
alarm_count BIGINT -- 告警次数
) TAGS (
device_id NCHAR(32),
customer NCHAR(64),
site_name NCHAR(64)
);
# 连续查询 — 每小时自动聚合原始数据写入降采样表
CREATE STREAM IF NOT EXISTS ups_hourly_downsample INTERVAL(1h) SLIDING(1h)
FROM ups_runtime_data PARTITION BY tbname, device_id,customer,site_name
INTO ups_hourly_stats NODELAY_CREATE_SUBTABLE
OUTPUT_SUBTABLE(concat(tbname,'_ds'))
TAGS (device_id NCHAR(32) as %%2, customer NCHAR(64) as %%3, site_name NCHAR(64) as %%4)
AS
SELECT _twstart AS ts,
AVG(input_voltage) AS avg_input_v,
AVG(output_voltage) AS avg_output_v,
MAX(load_rate) AS max_load_rate,
AVG(load_rate) AS avg_load_rate,
MIN(battery_voltage) AS min_battery_v,
MAX(battery_temp) AS max_battery_temp,
MAX(env_temp) AS max_env_temp,
SUM(CASE WHEN ups_status = 'fault' THEN 1 ELSE 0 END) AS fault_count,
SUM(CASE WHEN ups_status != 'normal' THEN 1 ELSE 0 END) AS alarm_count
FROM ups_runtime_data
WHERE _c0 >= _twstart and _c0 <= _twend;
# 查询语句 — 生成季度运行报告(以负载率趋势为例)
SELECT
_wstart AS 日期,
device_id AS 设备编号,
site_name AS 网点名称,
AVG(max_load_rate) AS 日均最大负载率,
AVG(avg_load_rate) AS 日均负载率,
MAX(max_load_rate) AS 季度峰值负载率,
SUM(fault_count) AS 故障总次数,
SUM(alarm_count) AS 告警总次数,
CASE WHEN AVG(avg_load_rate) > 75 THEN '负载偏高,建议扩容'
WHEN AVG(avg_load_rate) < 20 THEN '负载偏低,资源浪费'
ELSE '负载正常' END AS 负载评估
FROM ups_hourly_stats
WHERE ts >= NOW - 90d
PARTITION BY device_id, site_name
INTERVAL(1d)
ORDER BY device_id, 日期;
长期数据存储与报表分析是核心平台”数据应用”板块的技术基石。传统方案下,高频原始数据长期保存导致存储成本呈线性增长,跨季度趋势查询响应极慢。TDengine TSDB 的 流计算机制可以自动将秒级原始数据降采样为小时级、日级摘要,配合 列式高压缩比,在保留关键统计指标的前提下,将 3 年历史数据的存储空间 降低 80% 以上。季度运行报告中的负载率趋势、故障频次统计、电池性能衰退曲线等分析,均可通过标准 SQL 在秒级内完成,为平台为客户提供 “季度报告、数据决策” 的高增值服务提供了坚实的数据保障。
结语
TDengine TSDB 作为华渚物联核心平台数字化转型的核心数据引擎,成功地将物联网时序数据处理能力深度融入了 UPS 设备从”设备物联”到”预测托管”的全生命周期管理链条中。它不仅解决了海量设备数据带来的高并发写入、统一管理、实时告警、长期存储等技术挑战,更赋能华渚物联持续引领不间断电源行业向 资产数字化、运维流程化、监控实时化、健康智能化 方向迈进,为金融、交通、医疗、教育等关键行业用户构筑了一道坚实可靠的”数字供电防线”。
客户简介
作者:华渚物联技术团队
杭州华渚物联科技有限公司定位于以不间断电源全生命周期管理为核心的产业服务平台。公司锚定终端用户”安全”、”经济”的价值诉求,引入全生命周期管理理念,打造电源行业的数字化底座——电源设备全生命周期管理平台。
华渚物联融合物联网 IoT、AI、大数据、边缘计算技术,打通设备物理实体与数字空间,构建”资产数字化、运维流程化、监控实时化、健康智能化”的一体化管理体系。

























