当前位置:网站首页>苏州大学:从 PostgreSQL 到 TDengine
苏州大学:从 PostgreSQL 到 TDengine
2022-08-02 13:41:00 【51CTO】
小 T 导读:除了要对几千台摄像头进行数据采集加在线检测,苏州大学还有 1500 多台交换机和 4000 多台服务器,在数据库的选择上,它需要在扛住如此大量设备 24 * 7 高频长期写入的同时,还要确保相当出色的查询效率。从 PostgreSQL 到 TDengine,本文分享了江苏纵目在面对业务难点时,在数据库的选择、应用和成效方面的经验。
企业简介
苏州大学(Soochow University),简称“苏大”,坐落于美丽的江苏省苏州市,是教育部与江苏省人民政府共建高校,国家“双一流”建设高校,国家“211 工程”、“2011 计划”首批入选高校,前身是 1900 年创办的东吴大学,是中国最早以现代大学学科体系举办的大学。
项目介绍
作为一所重点高校,苏州大学具备规模较大的 IT 基础设施及应用系统,资源压力大,网络故障波及用户数量多。为保障全校系统以及网络、服务器硬件、操作系统的可用性、可靠性和安全性,学校必须建立规范且全面的运维管理体系。在此背景下,我们江苏纵目与苏州大学与开展技术合作,打造了苏州大学智慧运维管理平台。
该业务场景面临着以下难点:
- 资源设备类型、品牌、版本繁杂,各厂商协议区别大,人员经验无法全覆盖,原厂难以及时响应。
- 业务应用、服务与资源的关联关系复杂,问题定位时间远超过解决问题的时间。
- 缺乏事前运维的有效工具,系统网络异常会波及各部门/院系师生的教学工作的开展,被动处理负担重,导致业务部门投诉。
海量设备数据的存储和查询问题首当其冲
对于这样一个规模较大的 IT 基础设施及应用系统来说,解决问题本身并不难,难的是如何高效地处理小问题、科学地预防大问题、迅速地定位问题的根本原因。就从监控数据层面来说,如果想对设备进行 24 * 7 不间断监控的话,那么海量的设备数据存储和查询对于 Database 的压力将会非常大。
苏州大学有几千台摄像头,光摄像头的数据采集加在线检测的数据量就已经很大了,更别提还有 1500 多台交换机、4000 多台服务器,在数据库的选择上,它需要在扛住如此大量设备 24 * 7 高频长期写入的同时,还要确保相当出色的查询效率。
此前,我们使用的是 PostgreSQL 数据库单机版,由于是关系型数据库(Relational Database),在该时序数据的场景下数达到亿级数据量时,查询分析延迟会达到大几秒,压缩率上也不太理想(后文会有实际对比),无法撑起一个全域一体化运维监控平台的持续运行。
数据的存储与读写是一切业务的根基,因此数据库选型这个环节尤为重要。早在此前,我们就针对此类业务对 时序数据库(Time Series Database)做了充分的调研与实测。其中 TDengine 作为一个专为物联网、车联网、工业互联网、运维监测等优化而设计的时序数据库,十分契合该场景。最终我们选择将 TDengine 集成到我们自研且专用于监控时序数据的 Argus 平台中 https://zmops.com。
实际应用与效果分析
其实,从 2020 年开始,我们就开始关注和接触 TDengine 了,很开心最终修成了正果,在使用 TDengine 对 Argus 平台进行全面升级后,不管是查询效率、分析性能还是磁盘占用,都得到了质的提升。
在将 TDengine 作为平台时序数据永久存储之后,各项功能都符合甚至超出了我们的预期:
落脚到实践上,我们是在一台 4C 16G 机械硬盘规格的服务器上落地了该项目,使用单列模型建表,针对每个数据类型的指标都创建一个子表,并用一个超级表来统一管理。当前,子表数量已经达到四十多万张,轻松达成了数十万级指标的实时监控。
在写入层面,由于各个设备采集频率不太一样,每秒钟大概写入 6000 多行,这对于 TDengine 来说毫无压力,我们通过官方测试工具 taosBenchmark,在自己的虚拟机上都能跑出每秒写出数百万测点的成绩。
目前,我们的数据存储周期(keep 7天)为一周,TDengine 所包含的数据量如下:
以下为用作对比的 PostgreSQL 中的数据量。
可以看到,TDengine 存储的大概 2 亿行数据,实际占用存储空间不过 2 GB。(注:Vnode2 是 log 库所占用的空间,即 TDengine 用于内部监控而自带的数据库),比起 PostgreSQL 占用的超过 200GB 的空间,几乎可以忽略不计。
在查询上也是一样,针对性能详情页的指标查询,PostgreSQL 的很多查询都需要几秒返回结果,而TDengine 都是毫秒级别。
写在最后
当下,由于我们的重点业务是实时监控,所以对历史数据还没有那么高的安全优先级,但后续业务会涉及到对此前的监控进行复盘,我们将会升级到 TDengine 集群版来确保数据的高可用。总而言之,从当前的应用情况来看,TDengine 适配非常顺利,为我们的系统提供了非常大的助力。
边栏推荐
- RISC-V 指令格式和6种基本整数指令
- 社区收藏缓存设计重构实战
- 电脑死机,Word忘了保存怎么办?怎么恢复?(编辑器是WPS)
- 【C语言】明解数组(1)
- leetcode 504. Base 7 七进制数 (简单)
- Awesome!Alibaba interview reference guide (Songshan version) open source sharing, programmer interview must brush
- 【C语言】手撕循环结构 ——do...while语句及循环练习题(1)
- .Net 5.0快速上手 Redis
- 巴比特 | 元宇宙每日必读:蒂芙尼宣布推出限量版 CryptoPunk 定制吊坠
- 【typescript】使用antd中RangePicker组件实现时间限制 当前时间的前一年(365天)
猜你喜欢
乐心湖‘s Blog——MySQL入门到精通 —— 囊括 MySQL 入门 以及 SQL 语句优化 —— 索引原理 —— 性能分析 —— 存储引擎特点以及选择 —— 面试题
【C语言】明解数组(1)
劲爆!阿里巴巴面试参考指南(嵩山版)开源分享,程序员面试必刷
Kunpeng devkit & boostkit
wx-wow(微信小程序动效库)
节省50%成本!京东云重磅发布新一代混合CDN产品
【C语言】细品分支结构——if-else语句
Awesome!Alibaba interview reference guide (Songshan version) open source sharing, programmer interview must brush
二分查找 && 树
如何通过DBeaver 连接 TDengine?
随机推荐
读《IDEO,设计改变一切》有感
使用Amazon SageMaker 构建基于自然语言处理的文本摘要应用
LeetCode(剑指 Offer)- 53 - II. 0~n-1中缺失的数字
[C language] Analysis of function recursion (1)
Scala基础语法入门(三)Scala中的各种运算符
Mysql视图
C# 编译错误:Compiler Error CS1044
目前想通过提取本地excel文件创建数据表,在sql语句这出了一些问题
Taurus.MVC V3.0.3 microservice open source framework released: Make the evolution of .NET architecture easier in large concurrency.
stack && queue
基于flask商城的管理员功能
栈 && 队列
First acquaintance of scrapy framework 1
SQL函数 TRUNCATE
【C语言】剖析函数递归(2)
Enterprise Network Planning Based on Huawei eNSP
wait() ,notify(),notifyAll()以及wait()与sleep()比较
Large and comprehensive pom file example
【C语言】函数哪些事儿,你真的get到了吗?(1)
HALCON: 对象(object)从声明(declaration)到结束(finalization)