本文介绍如何存储和计算已接入物联网平台设备的数据,以挖掘设备数据更多的价值。
背景信息
物联⽹平台数据一般来⾃于已接入的智能设备、传感器设备等。只要设备在运⾏中,就会持续不断地产⽣设备数据。
设备数据的使⽤价值根据场景千差万别,其中时效性对不同场景有不同影响,场景如下。
场景 | 说明 |
监控运维场景 | 超过⼩时周期的数据参考价值很小,并且需要有秒级处理要求。 |
事务型在线业务场景 | 应⽤系统需要使⽤⼀定周期(例如7天)的数据,用于事务型应⽤场景,并且需要分钟级处理要求。 |
经营统计分析场景 | 数据统计分析需要保持1年至2年的数据周期,并且需要按⼩时或按天得出计算结果。 |
基于⼈⼯智能的分析场景 | 设备全周期的数据是AI模型的基础,并且处理要求跟业务场景各不相同。 |
面临的挑战
在不同的数据⽣命周期中,您需要采⽤不同的技术⽅案去存储和计算是设备数据,在不同的业务场景中,以下是较为典型的选型模式:
场景 | 说明 |
监控运维场景 | 数据存储在RocketMQ等流数据存储产品中,并使⽤实时计算Flink等流计算框架进⾏计算。 |
事务型在线业务场景 | 数据存储在Tablestore、TSDB等在线数据库进⾏存储和计算。 |
经营统计分析场景 | 数据存储在MaxCompute、Hadoop等⼤数据仓库中,使⽤Spark或Python进⾏计算。 |
基于⼈⼯智能的分析场景 | 与⼤数据仓库组合使⽤,例如在DataWorks上使⽤PAI,Hadoop上使⽤Spark ML等。 |
当您在⾯对以上⼏种或全部存储计算场景时,需要采用不同的技术⽅案进行选择和使⽤,⾯临的主要挑战如下:
数据链路和架构过于复杂,技术⽅案选型眼花缭乱。
同一时间的产品间数据同步和存储,存在数据冗余和⼀致性⻛险。
不同⽣命周期的数据存储,使⽤最优化成本的存储⽅案。
解决方案
针对以上共性问题的抽象和思考,阿⾥云物联网平台逐步建设了⼀套物联⽹数据存储、计算的⽅案。物联网平台提供数据存储服务,包括数据分层存储,并且在数据存储上提供数据导出、变更通知订阅、及连接⼤数据产品的组件等必要的存储相关服务。同时支持搭配计算组件(实时数据处理、交互式分析和离线计算),供您快捷地处理物联网平台设备数据。
分层存储
例如:物联网平台某家摩托⻋⼚商的客户每天产⽣约20 GB数据,按3年时间会产⽣21 TB数据。按照存储产品年费用预计在18万~28万不等,采⽤物联网平台归档存储,年费用不到1万元。如果客户需要分析数据,可以从归档存储中取回数据,假设取回全部21 TB数据,年费⽤预计5万元。更合理的方式是按照数据使⽤情况来规划备份⽣命周期和存储类型,同时切分⼀个归档存储和标准存储的时间范围,以达到成本最优存储⽅案。
如下所示存储规划:
计算模式
实时计算
为了满⾜物联⽹实时计算场景,物联网平台提供了实时数据解析功能,基本功能如下:
功能项 | 数据解析 |
数据源 | 支持解析设备数据源和API数据源。 |
时效性 | 实时地抽取和转化数据,延迟在秒级。 |
数据格式 | 支持JSON、ProtoBuf、Base64(to_JSON)和原始数据类型的数据格式。 |
计费 | 数据解析任务需要消耗数据处理单元(CU)。 |
⽀持的详细功能项如下表:
功能 | 节点 | 说明 |
输入 | 源节点 | 选择待处理数据的数据源。 |
自定义 | 仅源节点中数据源的Topic格式为原始数据时,在源节点后会自动添加并连接自定义节点,用于配置自定义脚本解析原始数据。 | |
处理 | 数据计算 | 根据源节点配置,自动匹配显示相关字段数据。 您可通过配置表达式,计算已有字段数据,来生成新字段数据。 |
数据过滤 | 配置过滤条件,指定只输出满足特定条件的数据。 | |
值转化 | 配置判断条件,将解析任务中流转消息的某个字段的值,转化为另一个值,该值可以输出到原字段或新定义的字段。 | |
数据聚合 | 类比为Flink SQL的窗口函数,将解析任务中流转消息的字段按照窗口进行聚合计算。 | |
超时插值 | 在数据上报产生中断时,配置固定的策略进行补值,防止数据出现中断。 | |
相邻消息计算 | 取当前消息与前一条消息中的同一数值字段的值(仅支持BIGINT、DOUBLE类型),按照定义的表达式进行计算,将计算的结果输出到定义的输出字段上。 | |
输出 | 目标节点 | 将解析后的数据转入IoT实例Topic、IoT孪生引擎中使用,或IoT实例自定义存储表中存储。 选择在自定义存储表中存储时,根据处理功能节点的输出配置,自动匹配显示可输出的字段。您可根据需要删除、修改字段,完成最终输出结果配置。 |
详细使用内容,请参见数据解析。
交互查询
为了满⾜数据洞察分析,物联网平台提供了SQL⼯作台,可以直接在⼯作台上编写任意SQL脚本分析观察数据。
另外为满⾜物联⽹场景,在⼯作台上提供了可直接使用的物联网平台数据,具体如下表所示:
选项 | 说明 |
产品属性时序表 | 存储了设备上报至物联网平台的物模型属性、事件数据。 |
产品属性快照表 | |
产品事件表 | |
IoT孪生引擎时序表 | 存储了IoT孪生引擎对应孪生空间中孪生实体图中孪生节点的物模型属性数据。 |
IoT孪生引擎快照表 | |
自定义存储表 | 存储了已完成自定义初始化配置的数据。即数据解析或SQL分析任务,调度任务后,输出至自定义存储表的数据。 |
平台系统表 | 存储了产品、设备、设备分组、设备标签和设备位置等基本信息。 |
详细使用内容,请参见SQL分析。
离线统计分析
SQL⼯作台编写的脚本完成了数据分析洞察,可以配置⼩时、⽇调度,物联网平台系统会定时产出SQL脚本的分析洞察结果。
详细使用内容,请参见设置任务调度策略。
⼈⼯智能分析
针对于特定场景,平台内置了⼈⼯智能算法模型,这些模型原⽣对接存储的数据,最⼤限度降低算法的使⽤⻔槛。
详细使用内容,请参见算法模板。
数据获取
针对分析洞察后数据,物联网平台提供了多种⽅式获取:
方式 | 说明 | 相关文档 |
免费报表 | 免费的可视化报表,可临时查看相关数据。 | |
云云对接 | 提供数据API,在业务系统使⽤相关数据。 | |
数据集成 | 提供IoT Reader,通过企业数据仓库(DataWorks)集成相关数据。 | |
CSV导出 | 提供数据本地导出功能,可以按照时间段导出相关数据的CSV⽂件。 |