数据转发到云原生数据库PolarDB MySQL版

阿里云的PolarDB MySQL版是阿里巴巴自研的云原生HTAP数据库,基于云原生架构、计算存储分离、软硬件一体化设计,为用户提供具备超高弹性和性能、高可用和高可靠保障、高性价比的数据库服务。物联网平台可以将设备的指定Topic消息,先经过解析脚本处理和过滤,再转发到云原生数据库PolarDB MySQL版数据表中存储。本文以物模型数据上报Topic为例,介绍消息转发至PolarDB MySQL版数据表的完整流程。

工作原理

image

云产品流转将设备的Topic消息转发到PolarDB MySQL版集群下数据库的数据表中存储,使用PolarDB MySQL版的数据库服务。详细内容,请参见PolarDB MySQL版

在上图中:

应用场景

对设备存储数据库有如下要求的物联网应用场景:

  • 大中型企业相关设备的生产数据库。

  • 对设备数据安全性要求非常高的核心数据库。

使用限制

  • 物联网平台实例及所在地域支持将数据转发到云原生数据库PolarDB MySQL版。支持的地域详细信息,请参见各地域功能说明

  • 仅支持同地域转发。例如:华东2(上海)的物联网平台实例数据只能转发到华东2(上海)的PolarDB数据表中。

  • 仅支持转发到专有网络VPC下的PolarDB MySQL版集群中。

  • 仅支持PolarDB的MySQL 5.6、MySQL 5.7、MySQL 8.0.1和MySQL 8.0.2四种引擎类型。

  • 仅新版云产品流转功能支持将数据流转到云原生数据库PolarDB MySQL版中。

  • 物联网平台实例下设备消息转发的更多使用限制,请参见使用限制

前提条件

  • 已创建数据源具体步骤,请参见添加待流转的数据源

    本文以物模型数据上报Topic为例,创建数据源DataSource并添加物模型数据上报Topic。

  • 已在您的物联网平台实例所在地域,创建专有网络下的PolarDB MySQL版集群,并创建数据库和数据表,以及创建管理数据库的账号和密码。PolarDB MySQL实例的使用方法,请参见快速入门

背景信息

转发的数据目的配置完成后,会自动完成以下配置,实现设备数据通过物联网平台的消息转发功能流转到云原生数据库PolarDB MySQL版。

  • 物联网平台占用PolarDB MySQL版集群所在虚拟交换机的2个IP地址;将虚拟交换机的IPv4网段配置到PolarDB MySQL版集群的白名单中。

  • 在PolarDB MySQL版集群所在的VPC网络下创建托管安全组,安全组名称默认以sg-nsm-开头。

创建数据目的

  1. 登录物联网平台控制台

  2. 实例概览页签的全部环境下,找到对应的实例,单击实例卡片。

  3. 在左侧导航栏,选择消息转发 > 云产品流转

  4. 云产品流转页面,单击右上角体验新版,进入新版功能页面。

    说明

    如果您已执行过此操作,再次进入云产品流转页面,会直接进入新版功能页面。

  5. 单击数据目的页签,然后单击创建数据目的

  6. 创建数据目的对话框,输入数据目的名称,例如DataPurpose,按照以下参数说明,完成配置,然后单击确定

    参数

    描述

    选择操作

    选择存储到云原生数据库(PolarDB MySQL版)中

    授权

    单击授权,系统创建角色和授权策略,授权物联网平台将数据写入PolarDB MySQL版数据表。详细说明,请参见数据转发到云原生数据库PolarDB MySQL版的服务关联角色

    说明

    若已授权,忽略此操作。

    地域

    固定与您的物联网平台实例所在地域一致。

    PolarDB集群

    选择数据转发目的为您已创建的专有网络(VPC)下的PolarDB集群。

    您可单击创建集群,新增PolarDB MySQL版集群。具体操作,请参见购买集群

    数据库

    选择PolarDB MySQL版集群下接收数据的目标数据库名称。

    创建数据库的具体操作,请参见创建数据库

    账号

    输入管理数据库的账号和密码。账号应具有该数据库的读写权限,否则消息转发无法将数据写入PolarDB MySQL版数据库。

    数据库管理账号和密码说明,请参见创建和管理数据库账号

    密码

    表名

    输入目标数据库下接收数据的数据表名称。消息转发会把数据写入这张表中。

配置并启动解析器

  1. 创建解析器,例如DataParser。具体操作,请参见创建解析器

  2. 解析器详情页面,关联数据源。

    1. 在配置向导的数据源下,单击关联数据源

    2. 在弹出的对话框中,单击数据源下拉列表,选择已创建的数据源DataSource,单击确定

  3. 解析器详情页面,关联数据目的。

    1. 单击配置向导的数据目的,然后单击数据目的列表右上方的关联数据目的

    2. 在弹出的对话框中,单击数据目的下拉列表,选择已创建的数据目的DataPurpose,单击确定

    3. 在数据目的列表,查看并保存数据目的ID,例如为1000

      后续解析脚本中,需使用此处的数据目的ID

  4. 解析器详情页面,单击解析器

  5. 在脚本输入框,输入如下解析脚本。

    脚本编辑方法,请参见脚本示例。函数参数说明,请参见函数列表

    // 通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。
    var data = payload("json"); 
    // 筛选出上报的温湿度值。
    var h = data.items.Humidity.value;
    var t = data.items.Temperature.value;
    // PolarDB MySQL表结构为id[自增主键] deviceName、temperature、humidity、time,在writePolarDB方法中,可以按column:value的形式,将值写入对应的列。
    // 设置温度值大于30时触发规则。
    if (t > 30) { 
        writePolarDB(1000, {"deviceName":deviceName(), "temperature":t, "time":timestamp(), "humidity":h});  
    }
  6. 单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。

    调试参数示例:

    调试示例

    运行结果如下,表示脚本执行成功。

    action: 
        transmit to polardb[destinationId=1000], data:{"temperature":38,"humidity":25,"time":1700631588609,"deviceName":"devce****"}
    variables: 
        data : {"deviceType":"CustomCategory","iotId":"JCp9***","requestId":"16269*******7","checkFailedData":{},"productKey":"ic*******z","gmtCreate":1626948134445,"deviceName":"devce****","items":{"temperature":{"time":1626948134319,"value":38},"humidity":{"time":1626948134319,"value":25}}}
        t : 38
        h : 25
  7. 单击发布

  8. 回到云产品流转页面的解析器页签,单击解析器DataParser对应的操作列的启动,启动解析器。

后续操作

  • 您可在物联网平台控制台对应实例下监控运维 > 日志服务页面的云端运行日志页签,查看设备到云消息云产品流转的运行日志。具体操作,请参见云端运行日志

  • 您可登录PolarDB控制台,连接数据库查询存储的物联网平台数据。具体操作,请参见连接数据库集群

相关文档

  • 设备接入物联网平台上报数据的操作指导,请参见设备接入引导

  • 您可在实例详情页面,查看消息转发TPS可用资源,确保设备消息能正常转发到PolarDB MySQL版存储。具体操作,请参见查看实例信息和运行数据。如果可用资源不足,可进行升配。具体内容,请参见升配

  • 使用PolarDB MySQL版存储数据时,费用、集群访问(读写分离)、性能和容量、稳定性和存储空间等常见问题,请参见PolarDB MySQL版的常见问题和解答