智慧水务系统如何进行有效的数据架构整改?三个企业的改造实践分享

在智慧水务系统中,往往需要对设备中产生的液位、电流、水量等实时指标数据进行存储、分析及监控操作,而这些都是典型的时序数据。面对这些数据的处理时,很多企业在前期选择的大都是传统的实时数据库甚至关系型数据库,随着设备数量的增加,数据量也达到了百万、千万量级,传统的数据库解决方案已经无法满足业务需求。为了帮助有以上问题的企业更好地进行数据架构整改,本篇文章汇总了三个典型智慧水务场景下的数据架构升级实践,给到大家参考。

禹为科技 x TDengine

TDengine 的消息订阅、缓存、流式计算等诸多特性,可以代替 Kafka、OpenTSDB 和 Flink,减少业务代码中定时计算(如用水量)等功能,简化了整体架构。在架构简化以后,排查和定位问题也能得到快速响应,开发和运维成本大大节约。同时,TDengine 替代了 OpenTSDB+Redis+MySQL,提高了数据实时性和一致性,其表结构设计合理,可以节省存储空间,进而节省存储费用。”

业务背景

相较于水利信息化系统,禹为科技灌区信息化平台具有设备厂家多、数据多且存储周期长、数据类型较为集中、需要实时展示的指标较多等特点。为了解耦系统中的数据接入和数据分析,禹为科技将数据的接入和计算分析拆分为独立的通用物联网平台及大数据平台,在现代灌区信息化平台的建设过程中,经历了数据库&定时任务的架构、以流式计算为核心的架构和以 TDengine 为核心的架构三个阶段,最终选用 TDengine 帮助其对水位、流量、水量等实时指标数据分析。

架构图

智慧水务系统如何进行有效的数据架构整改?三个企业的改造实践分享 - TDengine Database 时序数据库

点击案例查看更多技术细节

鼎蓝水务 x TDengine

“使用感受就是 TDengine 的数据处理性能非常高。现在的接入网关的设备数是 23 个液位、9 个频率计、9 个电流计、10 个拦蓄盾、3 个泵站、3 个截留井、1 个泵闸,总共有 40 张表,每张表每天新增 6 万条数据,现在每张表的大约三百万条数据。使用 TDengine 带来的最大好处是不用再考虑 SQLServer 中的分库分表操作,数据不断写入一个月后,查询时延也没有增加。而且我们发现 TDengine 在处理 13 个设备、百万量级的数据量写入任务时,内存开销只有 1.5GB,查询时内存增长也觉察不出来,整体内存开销比 SQLServer 降低了 50%。”

业务背景

鼎蓝水务智慧排水系统需要处理来自拦蓄盾检测设备上报的数据。在这些监测数据的处理流程上,数据从网关推送过来后会有一个判断是否实时数据。此前所有数据都是使用 SQL Server 存储,数据量达到 2000 万后 SQL Server 的查询时延就变得非常慢,不得不做分库分表操作来提高查询速度,但这个解决方法遇到跨库跨表的查询非常不便。架构改造后,对于非实时数据,则会流经 Redis 去重,做报警判断然后写入 SQL Server;对于实时数据则直接写入 TDengine,不需要再经过 Redis,之后前端需要的一些类似液位电流数据等就可以直接从 TDengine 访问。

数据处理流程图

智慧水务系统如何进行有效的数据架构整改?三个企业的改造实践分享 - TDengine Database 时序数据库
点击案例查看更多技术细节

万朗智水 x TDengine

“设置参数为十万张点表,每个点表 1s 需要存储 1 条记录。在实际测试过程中,使用 HTTP 接口,采用单机 4C16GB 的配置,8 线程每次写 500 条记录,10 万条记录写入只需要 300ms(如果使用 java 客户端更快);单变量采样查询基本在 2ms 内完成。整个测试持续了 48 小时,测试期间 CPU 在 20%-30% 之间,内存维持在 6GB 左右,写入相当稳定,没有出现超时。查询方面,我们使用 MySQL 查询 3 个点一年的数据直接请求超时,使用 TDengine 基本 2s 左右就能返回给页面进行渲染。写入和查询速度比 OpenTSDB 都还高一个级别。”

业务背景

万朗智水水环境综合治理运维系统需要对截流井设备中的液位、电流、硫化氢等进行监测,并通过 PLC 程序进行自动化管理设备的启停与报警短信推送。系统前期版本使用了 MySQL 来存储设备上报数据。但接入系统的设备量日益增长、用户对数据实时性反馈的要求也越来越高,MySQL已经无法满足业务需求——随着业务在不断扩张,站点在不断增加的情况下,频繁的跨表操作 MySQL 查询出现了延时甚至超时死锁的情况。随后在数据库调研中,万朗智水发现将设备数据转移到时序数据库Time Series Database) TDengine 中存储是个更好的解决方案。

数据传输路径

传感器采集的信息通过 MQTT 协议传到网关,网关收集到信息后会定时推送到业务后台服务,由服务层来做数据存储和实时分析。设备运行业务数据放在 MySQL 中,液位、电流频率、硫化氢、雨量物联网数据则存储在 TDengine 中。

点击案例查看更多技术细节

结语

从以上案例不难看出,在智慧水务场景下,面对不断增长的设备数量、庞大的时序数据处理需求,专业的时序数据库显然比传统数据库解决方案效果更加明显,不管是在写入还是查询抑或是存储上都有很大改善,资源开销成本也变得更低。如果你有同样的困扰,欢迎添加小T vx:tdengine1,我们会邀请你进入TDengine 用户交流群,和志同道合的研发小伙伴共同解决数据难题。