写点什么

助力 60+ 市区管理建设,TDengine 联手数字政通打造智慧城市平台

作者:TDengine
  • 2022 年 4 月 15 日
  • 本文字数:1944 字

    阅读完需:约 6 分钟

小 T 导读:随着智慧城市的加速建设,物联设备的管理问题凸显,数字政通研发“城市管理物联网平台”对物联网设备实行监督,通过鸟瞰整体数据来发现设备问题,便于及时派单处理。面对海量物联网数据的处理,TDengine 的高效存储给了数字政通相当大的助力。


企业简介

北京数字政通科技股份有限公司是北京市认证的高新技术企业和拥有多项自主知识产权的软件企业,专业从事电子政务和 GIS 应用平台的开发和推广工作,为政府部门提供 GIS、MIS、OA 一体化的电子政务解决方案,并提供政府各个部门间基于数据共享的协同工作平台。

随着 5G 基站等通信工程的加快建设,城市治理、城市安全管理成为热门话题,物联设备在我们的社会中扮演的角色也变得越来越重要,智慧燃气、智能电表、智能井盖等项目在众多城市开始布局。项目的快速爆发也让“如何管理物联设备”成为一个待解的难题。

作为一个设备数据中台,由数字政通研发的“城市管理物联网平台”致力于为智慧园林、智慧井盖、智慧排水、智慧市政等城市管理项目的各子系统,提供数据清洗、数据接入、数据计算、数据存储的能力。通过接入各个市区的智能设备,该平台能够提供各类设备的实时监测数据及报警数据,进一步满足各类设备的数据分析、关联分析、历史分析、对比分析等需求。简单来讲,平台功能的实现就是通过鸟瞰整体数据来发现设备问题,便于及时派单处理,助力智慧城市管理。  


目前,我们已经在全国累计接入 60 余个市区项目,累计合作 100 余家设备厂商,累计接入 69 种设备类型、9 万余设备量,全国范围下日累计 5000 万数据量,全国范围下有效报警累计 20 万 +,解决 10 万 + 报警案件。  


面对海量物联网数据的处理,时序数据库 TDengine 的高效存储给了我们相当大的助力。

技术架构分析

设备数据的处理路径如下:通过各个协议(MQ、MQTT、AMQP、HTTP、TCP、HJT212、ModBus、NB 等)接入物联设备到 Kafka 中进行消费,随后进行设备数据的噪点清洗,将有用的数据及时更新到 MySQL 以及 TDengine 中,同时根据配置的报警策略生成报警数据。

平台的报警是通过应用层来控制的,按照优先级排位如下:1-强制报警、2-具体监测项报警、3-全局报警、4-基础报警。

落地经验分享

因为我们的数据库服务众多,而且物联网平台主要工作是对接物联网设备,所以不同的数据库服务对硬件的需求配置要以项目实际接入的设备数量为衡量标准。本文案例中的场景有 57,634 个设备,对应的服务器配置为:CPU 16 核、内存 32G、硬盘 1T、带宽 120MB/s。


我们以 TDengine 2.0.22.3 版本单副本模式落地了一个三节点的集群,备份目前依靠其他方式完成。


上文中提到的 57,634 个设备属于同一类型,所以归属于同一个超级表,表结构和相关信息如下:


通过 select count(*) from iot_equip_data 可以看到,我们当前已经保留了 9 亿条数据。

压缩与查询效果

通过查看 3 个节点的 Vnode 目录总大小,可以得知目前数据占用总量为 8.7G。而从上述表结构我们也能看出实际入库数据总量大概为 203GB,经过压缩后为 8.7G,压缩率达到了 4% 左右,大幅节约了存储成本。




我们常用的业务 SQL 大概有如下类型:


  1. 对 9 亿数据量的超级表使用降采样查询,展示设备指标日月年线,耗时仅仅 0.22 秒。

Select first(value) as value from egovaiot.iot_equip_data where field_id='346fb64a-3e0f-4632-bd83-f4830ad91611' and time>=1645963586260 and time<=1648555586260 interval(1000a) order by time;
复制代码



  1. 对 9 亿数据量的超级表使用降采样查询,并计算每个时间窗口的平均值、最大值、最小值,结果如下所示。



select avg(value) as 'avgValue',max(value) as 'maxValue',min(value) as 'minValue' from egovaiot.iot_equip_data where field_id='346fb64a-3e0f-4bd83-f4830ad91611' and time>=1646137565000 and time<=1648556765000 interval(1000a) order by time;
复制代码
  1. 对 9 亿数据量的超级表使用降采样查询,并计算每个时间窗口的最大值最小值后,求出差值。



select spread(value) as value from egovaiot.iot_equip_data where equip_type_id='1' and time>=1633004978592 and time<=1648556978592 and field_code like 'WATER_LEVEL' interval(1d) group by field_id order by time;
复制代码

写在最后

物联设备在我们的生活中扮演的角色越来越重要,是实现智慧生活、智慧城市的重要媒介。携手 TDengine,数字政通一直在致力于做好物联设备的智能化管理,以此助力智慧生活、智慧城市的发展。未来,我们还将会与 TDengine 一起探索更多维度的生态合作,为建设智慧城市、保障社会民生提供自身力所能及的帮助。


作者简介

张东旭,数字政通 Java 研发,城市管理物联网产品负责人。专注于城市物联设备数据采集和交换、数据计算能力。兴趣是看书和爬山。



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


发布于: 刚刚阅读数: 2
用户头像

TDengine

关注

高性能、分布式、支持SQL的时序数据库 2021.11.04 加入

官网:http://www.taosdata.com GitHub:https://github.com/taosdata/TDengine

评论

发布
暂无评论
助力 60+ 市区管理建设,TDengine 联手数字政通打造智慧城市平台_数据库_TDengine_InfoQ写作平台