时序数据库在水电站领域的应用
moboyou 2025-04-05 18:46 11 浏览
大家好,上期经过了王宏志教授对数据库前沿领域的介绍,不知道小伙伴们是否对数据库领域有了更深的认识呢,本期让我们回归时序数据库,再来聊一聊时序数据库在水电站领域的应用。
本文仅代表个人观点,如有偏颇之处,还请海涵~
传统水电站监控系统迎挑战
在水电站的自动化控制过程中,电站的运行数据监控系统举足轻重。其后期为运行分析、趋势判断和事故处理等提供了有力的保障。水电站监控的数据具有采集频次高、并呈现时间序列排序等特点,使用传统的RDB(诸如MySQL、SQL Server、Oracle等)存储带来了诸多的问题。
首先,其存储成本高,写入吞吐低。大型水电站的测点非常之大,即使只是1万个测点,如果每秒采集一次,一天也要占用大约10 ~ 20 GB的磁盘存储空间。普通的磁盘阵列的容量很难满足上述海量数据的存储需求,而且关系型数据库对时序数据的压缩不理想,这也就造成伴随时间推移,其成本还将不断上升。此外,在传统方案下,海量数据写入耗时较长,难以满足千万级的写入需求。
其次,查询性能差。虽然会对关系型数据库进行分库分表、优化索引等技术操作,但随着存储数据的不断增长,其查询效率还是会显著降低,难以在秒级甚至毫秒级获取所需要的数据。同时,分表策略也会增加查询业务的复杂性。比如,如果按月分表,那么查询跨月数据需要通过多条SQL或联合查询才能获得所需结果。
时序数据库解决传统数据库瓶颈
针对水电厂监控系统中存储的数据大部分是时序数据的特点,基于时序数据库搭建水电站的监控系统成为了更好的选择。相比于关系型数据库,时序数据库在数据存储和查询方面,都有明显的性能优势。
时序数据库的高效压缩比可以节省大量的存储空间。这主要是因为其采用了列式存储的方法。其每列都存储了一组有序数据,将这些数据转换为单行“数组”形式的数据。然后针对其数据类型,使用特定压缩算法对每个数组进行单独压缩。
在查询方面,时序数据库的数据通常每秒或者每毫秒记录一次,这导致数据增长很快。而对于传统关系型数据库来说,由于大量地使用B+树进行索引,当数据量到达一定量级后,其写入性能就会出现明显的下降。而时序数据库可以进行自动分区,随着不断地数据写入,以时间戳来自动建立分区,将时序数据分区存放,保证每一个分区的索引维持在一个较小规模,从而维持住写入性能。查询时也可以快速定位到所需的数据分区,保证查询性能。
基于时序数据库提供更优服务
水电站监控系统的时序数据库主要用于曲线查询、报表查询等服务,根据相关的查询请求到时序数据库中查询相应的数据,生成相应的结果集返回。比如报表查询功能,主要是进行时序数据采样、输出,要实现可选间隔时序数据的平均值、最大值、最小值、均值等统计功能。同时也要求,通过配置界面配置所需要的测点统计功能,前端页面能够展示所需要的统计值。目前看来时序数据库提供的聚合查询函数完全能够满足水电站监控系统的所需要的统计功能,并且请求时间均在1秒以内。再比如,曲线查询功能,其要求系统可由时序数据库提供任意历史时间段的实时数据,供电站人员查询实时曲线,并要求可同时查询多个测点的曲线,以便进行分析比较。
好了各位小伙伴,本期我们就聊到这里,我们下次再见。
CnosDB简介
CnosDB是一款高性能、高易用性的开源分布式时序数据库,现已正式发布及全部开源。
欢迎关注我们的代码仓库,一键三连:
https://github.com/cnosdb/cnosdb
相关推荐
- php通过IP地址查询详细信息_php根据ip获取位置
-
前言:以前找过很多查询ip地址信息的工具,有的没有经纬度,有的没有国外的信息。现在本人制作的这个可以查询全国ip的信息,并且给出ip地址所在地的经纬度信息!以下为php程序代码截图...
- 今晚拿下PHP反序列化的一系列操作
-
引言在CTF中反序列化类型的题目还是比较常见的,之前有学习过简单的反序列化,以及简单pop链的构造。这次学习内容为php内置的原生类的反序列化以及一点进阶知识。在题目给的的代码中找不到可利用的类时,这...
- 关于 PHP 启动 MongoDb 找不到指定模块问题
-
前言:最近有一个小demo,需要通过PHP将用户行为记录储存到MongoDB,再用Spark做协同过滤。由于以前处理跨语言交互是通过消息中间件,这次本地使用MongoDB却弄出了几个问...
- PHP8中查询数组中指定元素-PHP8知识详解
-
php是使用最广泛的web编程语言,数组是一个数据集合,数组是一种非常常用的数据类型。在操作数组时,有时我们需要查询数组中是否有某个指定元素。在实际的程序开发中,我们用到了下列方法来查询数组中指定的元...
- 通过代码执行或命令执行写Shell_命令执行和代码执行
-
公众号:白帽子左一专注分享渗透经验,干货技巧...本文由团队手电筒分享,如果你还是个小白担心看不懂,没关系,“三步写马””如何上传木马”“如何拿下服务器并妥善管理”等实战内容可以结合视频观看,视频演示...
- ThinkPHP6初步搭建API服务_thinkphp6 api
-
ThinkPHP6正式发布已有一小段时间,按照官方文档实操了一遍。中间也遇到些小问题,在网上找解决方案花费了一些时间。本次分享整理了ThinkPHP6从头开始部署的详细操作步骤,希望能够帮助大家节省探...
- 第②章 在逃火锅难民与椒盐喷嚏_椒盐蛋解说我的世界
-
意识像沉在深海的破船,一点一点被光线和声音打捞上来。林琳,不,现在是李琳琅了,躺在宽大得能跑马的雕花拔步床上,瞪着头顶繁复的藻井彩绘,第无数次确认自己不是在做梦。鼻腔里充斥着淡淡的、混合了药味、熏...
- 美团外卖特征平台的建设与实践_美团外卖的技术分析
-
随着美团外卖业务的发展,算法模型也在不断演进迭代中。本文从特征框架演进、特征生产、特征获取计算以及训练样本生成四个方面介绍了美团外卖特征平台在建设与实践中的思考和优化思路。1背景美团外卖业务种类繁多...
- 分库分表实战(第2期):最初的我们——了解一下单库外卖订单系统
-
前言上一期内容我们整体了解了分库分表实战项目当前使用的系统架构,也就是单库版本订单系统的系统架构。同时,我们也知道了未来要做的分库分表版本的订单系统架构。现在,我们就从单库版本的订单系统开始,一步一...
- “美团外卖小哥帮崩溃程序员写代码”视频遭质疑:自编自导自演
-
来源:三言财经近日,有网友质疑走红网络的“青岛外卖小哥帮崩溃程序员写代码”的视频是一起策划。有网友认为,就算是行业人员转行送外卖,一上手就能看懂对方的代码并开始马上写的行为太假;还有网友表示,配音搞成...
- HarmonyOS NEXT仓颉开发语言实战案例:外卖App
-
各位周末好,今天为大家来仓颉语言外卖App的实战分享。我们可以先分析一下页面的布局结构,它是由导航栏和List容器组成的。幽蓝君目前依然没有找到仓颉语言导航栏的系统组件,还是要自定义,这个导航栏有三部...
- 基于微信小程序的外卖点餐的设计与实现-计算机毕业设计源码
-
摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序外卖点餐的设计与实现的开发全过程。通过分析微信小程序外卖点餐的设计与实现管理的不足,创建了一个...
- 外卖源码和外卖平台系统租赁有什么区别?
-
外卖源码和外卖平台系统租赁是两种不同的模式,它们之间有什么区别?我们来看看吧。1.概念不同:外卖源码是指一种软件源代码,包括了外卖平台的核心代码、框架、功能模块等,需要用户自己进行二次开发和定制。更...
- Java项目本地部署宝塔搭建实战java外卖小程序源码
-
大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套java开发的外卖小程序源码,这套系统已经完成了线下配送的大部分功能,适合学习与二次开发。技术架构技术框架:springboot+ssm...
- 一周热门
- 最近发表
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- php小说爬取源码 (23)
- 云电脑app源码 (22)
- html画折线图 (24)
- docker好玩的应用 (28)
- linux有没有pe工具 (34)
- mysql数据库源码 (21)
- php开源万能表单系统源码 (21)
- 可以上传视频的网站源码 (25)