从IOT中心到Azure SQL数据库中的多个表

问题描述 投票:0回答:2

我有一个IOT集线器,其设备可以将传感器数据推送到它,存储在SQL数据库中。通过Stream Analytics工作,这似乎很容易实现。

但是,棘手的部分如下。我正在推送的数据没有规范化,因为我使用的是SQL数据库,所以我希望在多个表之间构建它。对于Stream Analytics来说,这似乎不是一件容易的事。

这是我推送到物联网中心的有效载荷的一个例子:

{
    "timestamp" : "2019-01-10 12:00",
    "section" : 1,
    "measurements" : 
    {
        "temperature" : 28.7,
        "height" : 280,
        "ec" : 6.8
    },
    "pictures" : {
        "101_a.jpg",
        "102_b.jpg",
        "103_c.jpg"
    }
}

我的数据库有一个表Measurement,MeasurementItem和Picture。我想将时间戳和部分存储在Measurement记录中,MeasurementItem记录中的温度,高度和ec以及Picture表中的图片。填充一个表很容易,但要填充第二个表,我需要生成前一个记录的自动增量ID以保持关系完整。

Stream Analytics实际上是否可行,如果不是,我该怎么做?

azure azure-sql-database azure-iot-hub azure-stream-analytics
2个回答
2
投票

由于多种原因,您不应该使用Stream Analytics(SA)进行尝试。它不是为这样的工作负载而设计的,因为否则SA将无法执行此工作的性能。它只是根据输入数据将数据发送到一个或多个接收器。

我建议将数据传递给能够在输出端执行逻辑的组件。有一些选择。 2个例子可能是:

  • Azure Function(通过服务总线触发器指向物联网中心内置端点,如here所述)
  • 在您将IoT数据写入的存储上基于事件网格的触发器(因此您可以使用Azure功能,但让它由存储帐户中的事件触发)

此解决方案还附带每个传入数据包将调用逻辑单元的价格,您必须另外支付该逻辑单元。请注意,Azure功能上存在计费选项,这些选项不依赖于调用量,而是为您提供类似于应用服务的模型中的逻辑。

如果您要处理大量数据,可以考虑使用Data Lake Storage AccountData Lake Analytics结合使用的架构。后者也可以收集,汇总和分发您的传入数据到不同的数据存储。


0
投票

我最终得到了一个带有IoT集线器触发器的Azure功能。该函数使用EF Core将JSON消息存储在SQL数据库中,分布在多个表中。我对这种方法有点不情愿,因为它引入了额外的逻辑,我希望为此付出额外的费用。

相反的情况似乎是正确的。对于Azure Functions,首先执行的400,000 GB / s和1,000,000次执行是免费的。此外,该解决方案提供了额外的灵活性和控制,因为单表限制不再适用。

Azure function costs

© www.soinside.com 2019 - 2024. All rights reserved.