作者:黄培健,陈驰|叁零肆零科技有限公司

小 T 导读:上海叁零肆零科技有限公司致力于能源(气和热)的数字化转型,以现阶段压力和流量监测物联为切入,结合企业已有的信息化数据,利用物联技术解决能源企业的安全运行痛点,助力其提升智慧运营效率。

依托数字孪生和人工智能算法模型,我们构建了实时反映管网实际运营工况的瞬态的仿真平台。该平台致力于为能源企业提供包括客户认知、需求负荷分析、管网状态监控和优化、多工况计算、气(热)源匹配、通路寻优等一系列数据服务。下图为平台实际运作场景画面。

在此项目中,构建数字孪生的主要数据来源于以下两个地方:

  1. 物联数据:物联设备每 5 分钟上报一次物联数据;

  2. 仿真数据:依托于大量物联设备的接入,将工况数据进行实时对齐上传做仿真求解以此得到仿真数据。

在项目即将投入研发测试之际,我们却发现了一些会影响到项目正常运作的问题——两种数据类型都非常庞大,此前常用的数据库难以支撑如此庞大数据量的存储查询等操作。带着这个问题,我们将目光转移到当前市面上的数据库产品上,试图从中筛选到最适合本项目的数据库。

波折重重的数据库选型

从项目涉及到的数据类型来看,物联数据具有典型的时序数据特点,量大但不会变化,仿真数据的计算结果量同样很大。这两类数据都需要快速的存储、实时的查询响应,但相比于存储来讲,查询并不会过于复杂。

基于以上背景需求,我们开始进行数据库产品选型。

首先尝试使用的是非关系数据库 MongoDB,在通用数据库中 MongoDB 已经是佼佼者了,但是查询和存储效率仍然都没有达到我们的预期。在思考过后,我们从数据类型出发缩小数据库选型范围,最终决定从时序数据库中进行选择。

我们率先将目光锁定在当前市面比较流行的时序数据库 InfluxDB 上,一套测试下来发现,尽管业务需求将将能够满足,但 InfluxDB 的运维成本太高,而且其集群版并未开源,使用成本不低,因此 InfluxDB 也排除在我们的选型范围之外。

一次偶然的机会,我们了解到了时序数据库 TDengine,发现这一款数据库性能胜于 InfluxDB 的同时,甚至把集群也做了开源,方便进行水平扩展,且在成本管控上也达到了最优的状态,轻量化、类 SQL 的结构设定大幅降低运维和学习成本。在众多优点的推动下,我们便尝试将 TDengine 投入测试使用。

非常高兴的是,期间我们在 TDengine 的官方社群中获得了及时专业的技术支持,最终顺利地把开源版 TDengine 应用到了项目开发中。而 TDengine 也没有让我们失望,成功上线后其在运行上十分高效稳定。

具体场景与配置

目前我们选用的 TDengine 版本是 2.2.0.1,单机版暂时毫无压力,但出于业务扩展的需求,同时也在筹备单机横向拓展为集群的工作。

在实际操作中,当前服务器配置是“24G 内存 + 12 核 3.60GHzCPU +机械硬盘”。如下图所示,库中共有子表 20000+,超级表 6 张,其中常用的有 4 张表。数据保留日期为 10 年,数据周增幅大概为 1000 余万行。

根据涛思数据提供的资料,我们通过合理的配置参数让数据库的 Vnode 数量恰好等于计算机的 CPU 核数,从而可以充分利用计算机性能,顺利完成环境搭建。

千万级别数据量的查询效果

超级表 computing_result 保存了所有仿真计算的结果,单表总计 21 列,单行长度 1.8k,当前数据量为千万级别,是我们的主要查询对象——

针对以上的查询数据,具体的查询效果如下:

1. 查询某些设备的所有仿真计算结果为 0.09 秒,代码示例如下:

select * from slsl_digital_twin.computing_result r where r.batch_no in ( 'c080018_20211029080000' ) and r.device_id in ( '347444', '73593', '18146', '235652', '350382' );

2. 查询某些设备在一定时间范围内的,最新的压力数据耗时 7.8 毫秒。

3. 根据区域 id 分组,查询该区域下不同设备的最新数据,耗时 9 毫秒(由于 2.1 版本增加了嵌套查询功能,我们得以更好地实现相对复杂的逻辑去得到查询结果)。代码示例如下:

select sum(pressure) as pressure, sum(flow) as flow, sum(temperature) as temperature,last(on_off) as onOff,gis_id from (select last(pressure) as pressure, last(flow) as flow, last(temperature) as temperature,last(on_off) as on_off  from slsl_digital_twin.enn_iot where in_out_flag = 'OUT' and gis_id in( '347444', '73593', '18146', '235652', '350382') group by device_id,gis_id ) group by gis_id;

值得一提的是,在实现高效的存储查询性能下,TDengine 占用的存储空间不足 500MB。但事实上,仅仅 computing_result 单张超级表的实际数据量理论上就应为(8*2+(40+125+31+225)*4+8*11+2+4*2+10)字节*12409408 行数,即 21GB 左右,更不用提把静态数据抽取出来做成内存里的标签大幅度减少了原数据量。

但由于 nchar 类数据中有部分 null 值,在本文中我们无法精准计算压缩率。即便如此,TDengine 的表现也已经令我们足够惊艳了。

写在最后

未来,随着我们接入更多城市的管网仿真、爆炸辐射、泄漏预警等计算模型,产生的数据量将会达到 10 亿+,子表数量也会达到数千万级。TDengine 即将上线的 3.0 版本可以轻松支持亿级别的表数量,这一点让我们更加期待未来和 TDengine 的深度合作,同时也对 TDengine 抱以更大的信心。在合作的过程中,我们也会继续探索如何将 TDengine 应用于更多的业务场景,以更好地满足我们的各类仿真计算环节的业务需求。

关于作者

黄培健,叁零肆零架构师。目前负责公司数字孪生项目和公司整体技术架构。

陈驰,叁零肆零高级工程师。目前负责公司数字孪生项目整体开发。


✨想了解更多TDengine的具体细节,欢迎大家在GitHub上查看相关源代码哦。✨

助力数字孪生,TDengine 在叁零肆零仿真平台中的实践相关推荐

  1. BIM、GIS、CIM等技术共同助力数字孪生城市的建设

    一.从BIM+GIS到CIM 2018年11月,住房和城乡建设部发布了行业标准<"多规合一"业务协同平台技术标准>的征询意见,激励"有条件的城市,可在BIM应 ...

  2. 数字孪生智慧制造生产线项目实施方案,平台认知与概念

    在智能制造领域,数字孪生被认为是一种实现制造信息世界与物理世界交互融合的有效手段,通过数字孪生技术的使用,将大幅推动产品在设计.生产.维护及维修等环节的变革.基于模型.数据.服务方面的优势,数字孪生正 ...

  3. 数字孪生智慧校园三维可视化运维检测平台

    一.案例介绍 浙江工商大学智慧校园信息化建设工程,根据学校自身业务模块需求,采用虚幻引擎开发,结合了物联网\GIS\BIM等数据,利用视频流云渲染BS架构部署方案,量"身"打造了数 ...

  4. 数字孪生技术在智慧公安、警务、磐石中的应用

    近年来,随着大数据.数字孪生.虚拟仿真.人工智能等技术的飞速发展,公安院校也纷纷跟随政策步伐开展高等教育教学改革.贴近实战是公安院校交管专业开设课程的一个显著特点,需要对高速公路执勤执法.交通事故现场 ...

  5. BIM信息技术助力数字孪生城市打造智能化建筑

    8月28日,国家住建部.国家工信部等9个部门联合发文<加速最新型建筑工业化发展的若干意见>,将BIM技术做为发展最新型建筑工业化的主要信息技术手段,BIM的前途可以说是一片大好! BIM以 ...

  6. 数字孪生政务丨构建大数据可视化展现平台,提高行政服务效能

    "全面推进政府履职和政务运行数字化转型,统筹推进各行业各领域政务应用系统集约建设.互联互通.协同联动,创新行政管理和服务方式,全面提升政府履职效能."--<国务院关于加强数字 ...

  7. 安徽合肥芜湖数字孪生智慧工厂,工厂车间数字化三维仿真交互,3d可视化数据大屏展示系统

    安徽合肥芜湖数字孪生智慧工厂,工厂车间数字化三维仿真交互,3d可视化数据大屏展示系统.在数字化时代,传统的工业企业数字化转型迫在眉睫.在宝钢智能化升级项目中,引入了数字孪生这个概念,对工业生产全过程进 ...

  8. 数字孪生技术研究综述

    一.中文摘要 数字孪生作为实现数字化.智能化.服务化等先进理念的重要使能技术,当前备受学术界和工业界关注.模型是数字孪生的基础和核心,而传统数字孪生三维模型已无法满足现阶段技术发展与应用需求.本文基于 ...

  9. 数字孪生及其在航空航天中的应用

    数字孪生及其在航空航天中的应用 人工智能技术与咨询 来源:<航空学报>,作者孟松鹤等 摘要: 数字孪生已引起国内外的广泛重视,可看作是连接物理世界和数字世界的纽带.其通过建立物理系统的数字 ...

最新文章

  1. python 聚类_使用python+sklearn实现聚类性能评估中随机分配对聚类度量值的影响
  2. TaskExecutor设计与实现
  3. 【学生选课系统经典】C#与SQLSERVER连接:Windows应用工程案例
  4. 【程序猿】2016年自己的十年计划篇
  5. unity html get post,使用C#开发HTTP服务器系列之实现Get和Post
  6. 【MB051】炫酷BAT代码 ① 装神系列→可参考
  7. 大专生三面蚂蚁金服,王道训练营java百度云盘
  8. 悉尼大学计算机专业本科学费,悉尼大学
  9. 计算机毕业设计论文——国内外文献查找网站
  10. 基于vmdk文件创建虚拟机
  11. Chrome手势插件
  12. 已知网络号求子网掩码c语言,已知ip地址和其子网掩码如何求网络号子网号主机号 - 已知ip地址求子网掩码_已知ip地址和子网掩码求网络号、子网号和主机号...
  13. 模拟版图layout能否转数字IC后端实现?
  14. css实现半圆(上下左右半圆)
  15. Django项目:LOL学院学员管理系统
  16. “一年前,我来到国企搞IT”
  17. 工作中遇到的小技巧 一(暂停更新)
  18. HP840G3电脑系统安装
  19. 室内导航技术蓝牙aoa定位运用
  20. 期末考各项低控掠过!!!

热门文章

  1. list-style-type:定义列表样式
  2. 《lwip学习6》-- ARP协议
  3. 数据存储需求骤变,联想凌拓多招齐发推动数以致用
  4. MacPorts下载很慢的看过来,MacPorts V2.8.0 For Mac百度网盘分享
  5. 【pytorch】Module.parameters()函数实现与网络参数管理
  6. 数据结构与算法--学习路线
  7. 品味树莓派:设置为无线接入点
  8. 股票走势及K线绘制练习代码笔记(无注释)
  9. 51与STM32单片机寄存器比较
  10. flutter中使用自定义字体(fontFamily)