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

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

企业简介

北京数字政通科技股份有限公司是北京市认证的高新技术企业和拥有多项自主知识产权的软件企业,专业从事电子政务和 GIS 应用平台的开发和推广工作,专注于网格化新型智慧城市管理,城市大脑,智慧执法,城市运营服务等助力城市智慧管理。

scene

随着 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 版本单副本模式落地了一个三节点的集群,备份目前依靠其他方式完成。

三节点的集群
57634 个表

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

超级表结构
超级表信息

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

9亿条数据

压缩与查询效果

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

TDengine 时序数据库 - 助力 60+ 市区管理建设,TDengine 联手数字政通打造智慧城市平台 10 1
TDengine 时序数据库 - 助力 60+ 市区管理建设,TDengine 联手数字政通打造智慧城市平台 11 1
TDengine 时序数据库 - 助力 60+ 市区管理建设,TDengine 联手数字政通打造智慧城市平台 12 1
TDengine 时序数据库 - 助力 60+ 市区管理建设,TDengine 联手数字政通打造智慧城市平台 13 1

我们常用的业务 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>=1645963
586260 and time<=1648555586260 interval(1000a) order by time;
设备指标日月年线
查询耗时0.22秒
  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-4
bd83-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_c
ode like 'WATER_LEVEL' interval(1d) group by field_id order by time;

写在最后

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

作者简介

胡自和、张东旭,数字政通 Java 研发,负责城市管理物联网产品,专注于解决物联设备数据挖掘。