IoT物联网技术 02月10日
物联网 IoT 传感器点位时序数据存储、实时监测预警和智能决策解决方案——一张表格全搞定!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了DolphinDB推出的IOTDB引擎,旨在解决物联网应用中点位数据管理难题。传统宽表和窄表建模方式存在数据稀疏、多表管理不便、存算效率低等问题。DolphinDB的IOTDB引擎通过支持可变类型IOTANY,实现一张表高效管理所有类型的点位数据。该引擎由TSDB引擎、点位最新值缓存表、点位静态信息表三部分构成,通过缓存最新数据和优化存储引擎层算法,大幅提升查询速度和性能。文章还通过自来水管道数据采集的案例,展示了如何使用IOTDB引擎进行点位数据的存储和管理。

🔑**IOTDB引擎核心技术**:DolphinDB IOTDB 引擎由 TSDB 引擎、点位最新值缓存表、点位静态信息表三部分构成,实现高效点位数据管理。

💾**IOTANY可变类型支持**:通过支持可变类型 IOTANY,DolphinDB 能够在一张表中存储和管理所有类型的点位数据,避免了传统宽表和窄表建模的弊端。

⏱️**最新值缓存与优化算法**:IOTDB 引擎利用点位最新值缓存表缓存最新数据,并结合存储引擎层实现的 context by 最新值算法,显著提升了查询性能,尤其是在最新状态查询方面。

2025-01-08 19:18 上海

车联网、智慧水务、楼宇能耗监控

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

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


宽表建模 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 列来存储。




第三步:写入数据

本案例中五种类型传感器点位编号如下所示:

向点位表写入数据时,不同类型的数据需要分别组装在不同的内存表中,再调用 append! 将数据写入。写入数据后,我们就能得到一张将所有点位数据都存储在同一列的表格:




第四步:最新状态查询

需要查询点位最新状态时,通过 context by+csort+limit -1 语法来查询最新值,结果如下:

以上就是使用一张表存储、管理多种点位数据的示例,完整信息可前往 https://zhuanlan.zhihu.com/p/7660541631 获取。

未来,DolphinDB 还将探讨更为复杂的应用场景,包括异构点位数据的存储与写入、实时状态查询,展示如何使用 IOTDB 引擎进行数据采集、实时监控、智能分析等高阶操作,欢迎大家持续关注!

点击【阅读原文】,预约“DolphinDB 物联网点位管理创新与实践直播。

扫描二维码,添加 DolphinDB 小助手

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

DolphinDB IOTDB引擎 物联网 点位管理 时序数据库
相关文章