当前位置:网站首页>苏州大学:从PostgreSQL到TDengine
苏州大学:从PostgreSQL到TDengine
2022-08-03 10:22:00 【涛思数据(TDengine)】

小 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 适配非常顺利,为我们的系统提供了非常大的助力。
想了解更多 TDengine Database的具体细节,欢迎大家在GitHub上查看相关源代码。
边栏推荐
猜你喜欢

SQL exam questions

APENFT FOUNDATION官宣2022艺术梦想基金主题征集

消费者认可度较高 地理标志农产品为啥“香”

Go Redis database operation

被审稿人吐槽没有novelty!深度学习方向怎么找创新点?

DOM0, DOM2, DOM3 events

With strong network, China mobile to calculate excitation surging energy network construction

三大产品力赋能欧萌达OMODA5

select statement in go

聊天app开发——防炸麦以及节省成本的内容鉴定方法
随机推荐
迅为IMX6开发板QT系统创建AP热点基于RTL8723交叉编译hostapd
GBase 8c分布式数据库,数据如何分布最优?
What is the IDE?Novice with which the IDE is better?
ImportError: DLL load failed with error code -1073741795
With strong network, China mobile to calculate excitation surging energy network construction
混合型界面:对话式UI的未来
error C2872: “flann”: 不明确的符号 解决方法
聊天app开发——防炸麦以及节省成本的内容鉴定方法
Mysql 主从复制 作用和原理
VL53L0X V2激光测距传感器 采集距离数据串口输出
cass9.1快捷键怎么设置_cass9.1格式刷快捷键命令
集成学习、boosting、bagging、Adaboost、GBDT、随机森林
有大佬用flink读取mysql binlog分表后再写入新表吗
Oracle 数据如何迁移到MySQL 图文详细教程
MySQL 中 is null 和 =null 的区别
后台图库上传功能
ECCV2022 | RU&谷歌:用CLIP进行zero-shot目标检测!
按位取反怎么运算_按位取反运算
MySQL中的视图、索引以及事务的简单使用
机器学习(公式推导与代码实现)--sklearn机器学习库