专栏名称: IoT物联网技术
聊聊 云计算,IoT物联网。
目录
相关文章推荐
51好读  ›  专栏  ›  IoT物联网技术

物联网 IoT 传感器点位时序数据存储、实时监测预警和智能决策解决方案——一张表格全搞定!

IoT物联网技术  · 公众号  ·  · 2025-01-08 19:17

正文

在物联网应用场景中, 点位 是设备上用于采集、监测和控制的各类传感器和执行器。无论是车联网、智能制造还是环境监控等领域,管理和分析这些点位数据对于实现设备监控预警、实时监测和智能决策至关重要。

然而,随着点位数量的增加和数据类型的多样化,如何 高效管理点位数据 成为企业普遍面临的一个难题。


宽表建模 vs 窄表建模


例如,在 车联网场景 中,一辆车会配备多个传感器,用于采集电池电量、车速、发动机状态等数据,具体如下:

//电池电量{"time":2024.01.01 00:00:10.000,"carID":"0001","elec":90}{"time":2024.01.01 00:00:20.000,"carID":"0001","elec":89}//车速{"time":2024.01.01 00:00:00.000,"carID":"0001","speed":80.17}{"time":2024.01.01 00:00:01.000,"carID":"0001","speed":80.29}//发动机状态{"time":2024.01.01 00:02:00.000,"carID":"0001","engineStatus":"level1"}{"time":2024.01.01 00:04:00.000,"carID":"0001","engineStatus":"level2"}
我们会发现,这些数据具有类型不同、采样频率不同、生成时间不同的特点。为了管理这些数据,我们可以选择 宽表或窄表模式建模

如果采用 宽表模式 ,我们会得到这样一张数据表:

不难看出,这种方式会导致 数据稀疏 的问题。设备下的点位数越多,数据就会越稀疏,不便于管理。

如果采用 窄表模式 ,我们可以为每一种不同数据类型的点位维护一张数据表。以上述数据为例,一共有 INT、DOUBLE、STRING 三种类型的点位,我们就建立三张数据表进行存储和管理。尽管这种方案解决了数据稀疏的问题,但随着点位类型的增加, 管理和维护成本仍会增加

于是,我们选择 将所有点位类型转换成字符串 进行存储,这样仅需一张表便能管理所有的点位数据。可是,这种方案同样存在不足:将数据转换成字符串不仅会 增加存储成本 ,也会 降低查询和计算的效率

数据稀疏、多表管理不便、存算效率低……是否有一种解决方案能规避这些常见问题呢?

一家国产数据库厂商给出了答案。


创新型点位管理解决方案


作为一款基于高性能分布式时序数据库、支持复杂分析与流式处理的实时计算平台, DolphinDB 适用于实时数仓、实时数据处理、投研和数据分析以及后台批处理等场景。其底层基于 C++ 优化,可以极大提升数据处理速度。目前,DolphinDB 已服务于长江电力、比亚迪等多家行业领军企业。依托丰富的实践经验,DolphinDB 针对业务痛点提出各项创新型解决方案,助力客户实现更高效的数据价值转化。
本次,针对点位管理难题,DolphinDB 推出 IOTDB 引擎 ,通过支持可变类型 IOTANY,实现 一张表高效管理所有类型的点位数据

1月9日(本周四)19:30 ,DolphinDB 应用研发总监林亮将在 DolphinDB 直播间为大家深度解析 IOTDB 引擎的核心技术、特性和应用优势。武汉水务数能科技分公司技术研发部部长朱晓鹏也将分享 DolphinDB 在武汉水务厂网时序数据管理中的实践经验和成果。更有圆桌讨论、抽奖互动等精彩环节, 欢迎扫描海报下方二维码报名~

DolphinDB IOTDB 引擎介绍


DolphinDB IOTDB 引擎由三部分构成:TSDB 引擎、点位最新值缓存表、点位静态信息表。

其中, 点位静态信息表 主要记录点位数据的真实类型,初次写入时,系统会将数据类型记录到静态信息表中,后续每一次写入都会检查待写入点位的类型与静态表的类型是否一致,类型不一致会抛出异常。 TSDB 引擎 负责存储点位的历史数据,IOTANY 列将在 TSDB Level File 层级单独存储不同类型的值。 点位最新值缓存表 负责缓存所有点位在时间戳上的最新数据,每一点位只会缓存一条,查询时直接从缓存而非磁盘中读取数据,大幅提升查询速度。针对最新值查询,IOTDB 引擎还在存储引擎层实现了 context by 最新值算法,用于支持缓存未命中的情况,进一步提升性能。

IOTDB 引擎与 TSDB 引擎性能对比


DolphinDB IOTDB 引擎应用典例


在自来水管道数据采集场景中,压力、流速、浊氯等级、阀门开关、状态是五种常见的点位数据。现在,我们使用 DolphinDB IOTDB 引擎对这五类数据进行管理。




第一步:创建 IOTDB 引擎数据库

通过指定参数 engine 为 “IOTDB” 创建点位管理引擎:

create database "dfs://IOTDB" partitioned by HASH([SYMBOL,10]),VALUE([today()]),engine = "IOTDB";





第二步:创建点位数据表

通过指定参数 latestKeyCache 为 ”true”,开启最新值缓存功能;通过创建含有 IOTANY 类型的列,开启点位管理。将 Value 列设置为 IOTANY 类型后,所有点位的采样数据都将通过 Value 列来存储。




第三步:写入数据







请到「今天看啥」查看全文