• 售前

  • 售后

热门帖子
入门百科

助力地质灾害专业监测,TDengine为和谐社会保驾护航

[复制链接]
123457505 显示全部楼层 发表于 2022-1-14 11:25:32 |阅读模式 打印 上一主题 下一主题
作者:小牛   ,专注于地理信息系统、物联网大数据、微服务、云原生
公司:
苍穹数码技术股份有限公司2001年创建于北京,是一家专业从事3S技术研究、开发与应用服务,致力于政府、国防和企业信息化建设的高新技术企业,也是业内率先打通地理信息全产业链的平台级产品、技术与服务提供商,在信息化相关技术领域具有核心竞争优势。
背景:
我国常见的地质灾害共有12类、48种。在所有的地质灾害中,崩塌、滑坡、泥石流是最为严重的,其以分布广、灾发性和破坏性强,具有隐蔽性及容易链状成灾的特点,对工程建筑、交通运输、居民生命财产等造成直接危害,间接影响社会安定、引发生态环境恶化,加剧各种自然灾害,引发次生灾害。
国家突发事件应急体系建设“十三五”规划强调预防与准备,提高综合风险研判能力、灾害监测和预警预报能力,真正体现风险防范的效益。建设地灾专业监测物联网平台势在必行。

场景与痛点
一、应用场景
物联网监测平台主要包含一下5个方面:
1、数据采集
不同时期不同采集频率,设备自适应,监测到异常数据,自动提高采集频率,且支持设备反控。
2、数据传输
考虑断网,断电情况(丘陵地区监测特殊性要求,对设备稳定性,阴雨绵绵,对太阳能供电考虑)
3、数据存储(强依赖入库性能)
考虑后期设备增多,数据存储问题 ,高频采集数据入库效率问题
4、数据分析(强依赖查询性能)
一点一策,一设备一策
充分考虑灾害发育特征,岩土体结构,基于主要诱因设置阈值模型(单因子、多因子模型设置)
基于人工智能模型
5、预警预报
虚报不漏报,宁愿听骂声也不听哭声
二、应用痛点
解决海量时序数据的存储和计算,有着体量大、时间长,写入,查询要求高的特点,传统关系型数据库无法满足实时写入与高性能查询要求。
技术选型
我们的地灾物联网专业监测平台研发于2018年,当时选用的大型企业级数据库ORACLE,随着接入的设备传感器越来越多数据量越来越大,数据入库与数据查询越来越慢。特别是雨季来临,传感器数据采集频率提高到秒级、毫秒级别,数据入库会阻塞,效率严重跟不上。
自2019年我们便开始关注一些国内外的时序数据库,通过调研发现 TimescaleDB、 TDengine两款比较合适,主要从数据写入、查询、团队上手难度等指标项考察。
下面以近10年全省的雨量站小时雨量数据为例,从常用的应用场景为例对2个数据库进行比对分析。
测试机器配置信息

一、历史数据批量入库场景比对:
数量
 timescaledb _1.7.0
tdengine_2.0.22
125958796
24小时
2小时
二、入库后数据文件大小比对:
数量
 timescaledb _1.7.0
tdengine_2.0.22
125958796
38G
698M
三、常见查询场景比对:
1、查询全省全部站点累计降雨(10-30天),按站点分组,汇总累计降雨
2、查询单一站点、区县所有站点, 多年年数据 按照年,月,日,小时统计汇总 (全省2138个雨量站点,单位S)
应用场景
 oracle  11g
 timescaledb _1.7.0
tdengine_2.0.22
查询全省全部站点累计降雨(10-30天)
7.125
1.57
0.579
1月每小时雨量
12.297
1.92
0.027954
1年每日雨量
7.234
1.988
0.025952
1年每月雨量
7.232
1.913
0.020388
10年单个站点每年雨量
7.243
4.275
0.141484
10年全省站点每年雨量
超时了
920.434
3.608482
结论:从入库、压缩比、与查询3个维度,TDengine 都是完胜。
基于以上信息综合比对如下:


TimescaleDB
TDengine
时序数据库


开源数据库


集群释是否开源


传统关系型数据库查询支持

×
查询性能
×

写入性能
×

数据压缩比
×

超级表


子表
×

标签
×

聚合查询(sum、count、 min、 max、 avg等)


滑动窗口
×

团队人员学习曲线

×
信创名录产品
×

数据库设计与应用
TDengine在物联网监测平台中的数据采集侧架构图如下所示:

TDengine存储从空间与时间2个维度分层分级存储:

一、数据库
1、创建数据库
地灾专业监测数据库设置保存20年,分片参数90天,每个vnode 30个内存块(根据机器内存调大),允许编辑,建库语句如下:
CREATE DATABASE IF NOT EXISTS geohazard_monitor KEEP 7300 DAYS 90 BLOCKS 30 UPDATE 1 ;
2、创建超级表
根据传感器类型 ,创建超级表以水压力计含水率为例 ,例如传感器类型编码:201,超级表命名 m_201 ,其他传感器 m_xxx(传感器类型编码) ,统一命名规则。统一约定t20采集时间, t30同步入库时间 ,超级表2个tag ,传感器编码,编号(注意每个子表 tag值一样),建超级表语句如下:
CREATE STABLE IF NOT EXISTS m_201 (t20 TIMESTAMP, t30 TIMESTAMP ,v_water FLOAT) TAGS (sensor_code BINARY(20), sensor_id INT);
3、数据入库
使用超级表模板入库 ,子表命名规则 m_XXX( 传感器编码)
入库语句如下:
INSERT INTO m_05162300008 USING m_201 TAGS ('05162300008', 2) VALUES ('2021-01-01 00:00:00.000','2021-01-01 00:00:00.001', 0.02);
4、查询
时间窗口(interval)avg聚合滚动查询,时间窗口单位可以是 b(纳秒)、u(微秒)、a(毫秒)、s(秒)、m(分)、h(小时)、d(天)、w(周)、 n(自然月) 和 y(自然年) 。查询每天含水率平均值语句如下:

SELECT AVG(v_water) FROM m_05162300008 WHERE t20 >= '2020-01-01 00:00:00.000' AND t20

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作