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

news2025/1/10 16:01:18

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

禹为科技 x TDengine

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

业务背景

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

架构图

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

鼎蓝水务 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 访问。

数据处理流程图

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

万朗智水 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用户交流群,和志同道合的研发小伙伴共同解决数据难题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/567723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字段信息 详解,以易举例,创建数据库,程序自动创建数据库的前提,程序读写数据库的第一步

今天要做一个处理比较多数据的工具,就是桌面小软件,重新收拾起以前的易语言来编写,C#等也可以,反正就是最后的成品是绿色免安装。 数据多,优先考虑的就是数据库操作了,又快又好是吧? 第一步&am…

MyBatis源码学习五之插件

MyBatis源码学习五之插件 官网MyBatis插件介绍:https://mybatis.org/mybatis-3/zh/configuration.html#plugins MyBatis的插件使用的范围比较广,像PageHelper就是利用的插件的原理去实现的。插件会做一些通用的功能,比如打印日志&#xff0…

行业报告 | 2022文化科技十大前沿应用趋势(下)

原创 | 文 BFT机器人 04 商业创新 趋势7:区块链技术连接传统文化,数字藏品市场在探索中发展 核心内容: 2022年,数字藏品在区块链技术的助力下应运而生。狭义的数字藏品是指使用区块链技术、基于特定的文化资源所生成唯一的数字凭…

Linux学习记录——이십사 多线程(1)

文章目录 1、以Linux角度理解2、并不是所有的操作系统都这样管理3、页表和物理内存4、线程优缺点5、进程和线程的区别6、线程接口1、pthread_create.2、pthread_join3、线程终止取消正在终止的线程 4、线程分离 1、以Linux角度理解 创建一个进程时,会有pcb结构体&a…

Java集合回顾

能不能和你竭尽全力奔跑 / 向着海平线 / 余晖消逝之前都不算终点 文章目录 集合概述Java 集合概览List, Set, Queue, Map 四者的区别?集合框架底层数据结构总结如何选用集合?为什么要使用集合? ListArrayList 和 Array(数组)的区…

Java SpringBoot自动化网页爬虫项目

介绍 Java SpringBoot自动化网页爬虫,以图形化方式定义爬虫流程,不写代码即可完成爬虫。 平台以流程图的方式定义爬虫,是一个高度灵活可配置的爬虫平台 功能根据需要可定制化开发。 特性 支持Xpath/JsonPath/css选择器/正则提取/混搭提取 支持JSON/XML/二…

aop+springboot实现数据字典表

文章目录 概要整体架构流程目录结构方式pom文件信息application.yml文件信息aop实现方式(重点方式)我们这里主要的实现了,就是在前段请求数据的时候,我们利用aop,拦截数据,将code编码进行翻译,翻译的方式就是我们将cod…

LabVIEWCompactRIO 开发指南34 在模拟模式下调试

LabVIEWCompactRIO 开发指南34 在模拟模式下调试 在仿真模式下执行LabVIEW FPGA VI时,可以访问标准LabVIEW调试功能,包括突出显示执行、探测和断点。LabVIEW2013及更高版本包含了一个额外的调试工具,称为采样探针。在仿真中运行时插入FPGA设…

U盘超级加密3000试用版与正式版的区别有哪些?

U盘超级加密3000是一款专业的U盘加密软件,它可以为U盘、移动硬盘、内存卡等移动存储设备加密。软件拥有正式版和试用版,那么这两个版本有什么区别呢?下面我们就一起来了解一下。 U盘超级加密3000试用版和正式版的区别 打开软件时的区别 试用…

C++第三章:字符串、向量和数组

字符串、向量和数组 一、命名空间的using声明每个名字独立using声明头文件不应包含using声明 二、标准库类型string2.1 定义和初始化string对象直接初始化和拷贝初始化 2.2 string对象上的操作读写string对象读取未知数量的string对象使用getline读取一整行string的empty和size…

TypeScript9-声明文件

本篇文章来讲 TypeScript 的声明文件。 当我们在使用第三方库的时候,很多第三方库不是用 TS 写的,它们是通过原生的 JavaScript 或者是浏览器 / 或者是 node 提供的 run time 对象。如果我们直接使用 TS 肯定就会报编译不通过。 1. 声明语句 假设一个…

【学习日记2023.5.24】 之 用户端模块开发 用户端小程序_服务端接入微信认证_完善用户端商品浏览模块

文章目录 6. 用户端模块开发6.1 HttpClient6.1.1 介绍6.1.2 入门案例6.1.2.1 GET方式请求6.1.2.2 POST方式请求 6.2 微信小程序开发6.2.1 介绍6.2.2 准备工作6.2.3 入门案例6.2.3.1 小程序目录结构6.2.3.2 编写和编译小程序6.2.3.3 发布小程序 6.3 微信登录6.3.1 导入小程序代码…

MATLAB 之 绘制三维图形的基本函数、三维曲面和其他三维图形

文章目录 一、绘制三维曲线的基本函数二、三维曲面1. 平面网格坐标矩阵的生成2. 绘制三维曲面的函数3. 标准三维曲面 三、其他三维图形1. 三维条形图2. 三维饼图3. 三维实心图4. 三维散点图5. 三维杆图6. 三维箭头图 三维图形具有更强的数据表现能力,为此 MATLAB 提…

关于CSDN如何获得铁粉

一、发表高质量技术博客 获得铁粉首先是需要有粉丝关注,在CSDN有粉丝关注,就需要多发表写技术文章而且最好是高质量文章,条理清晰,复合当下主流技术,或者新的技术方向,图文并茂的那种。这样通过搜索引擎搜到…

虚拟专用网络-那些年你错过的“VPN 盲点”

我们先和海翎光电的小编一起了解一下什么是VPN,VPN的分类。对基础知识有一定的了解后,我们再来讲一下VPN的盲点。 VPN(全称:Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信的网络技术…

Linux 网络基础(2)应用层(http/https协议、请求格式、响应格式、session、cookie、加密传输)

说明:网络基础2讲解的是应用层的典型协议, 通过对于典型协议的理解,来体会数据的网络传输的软件层面的流程与原理。 面试中网络通信相关问题占了很大的比重,而网络通信相关的问题大多都集中在网络基础2这个单元中 下面是应用层的位…

解决dpdk reserve的内存返回的虚拟地址和iova地址一样的问题

1. 背景: 在ubuntu20.04上用dpdk API: rte_memzone_reserve_aligned("L1L2_PCIE_MEMORY", 1.5*1024*1024*1024, rte_socket_id(), RTE_MEMZONE_1GB|RTE_MEMZONE_IOVA_CONTIG, RTE_CACHE_LINE_SIZE); 分配1.5…

a-form中的label超出隐藏

效果 代码: :deep(.ant-form-item-label) {display: flex;justify-content: flex-end;line-height: 16px; //这个数值视具体情况而定label { //这是关键white-space: nowrap;text-align: right;// color: #8a8a8a;max-width: 150px;// padding-right: 3…

OpenCV+ Qt Designer 开发人脸识别考勤系统

文章目录 1. 系统介绍2. 系统架构3. 开发步骤3.1 安装必要的库3.2 设计用户界面3.3 编写代码3.3.1 导入库3.3.2 连接数据库3.3.3 定义主窗口类3.3.4 实时显示摄像头画面3.3.5 进行人脸识别3.3.6 手动打卡3.3.7 显示打卡时间3.3.8 显示图片3.3.9 运行主程序 4. 总结 1. 系统介绍…

day13 - 对指纹图片进行噪声消除

在指纹识别的过程中,指纹图片通常都是现场采集的,受环境的影响会有产生很多的噪声点,如果直接使用,会对指纹的识别产生很大的影响,而指纹识别的应用场景又都是一些比较严肃不容有错的场合,所以去除噪声又不…