我有一个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实际上是否可行,如果不是,我该怎么做?
由于多种原因,您不应该使用Stream Analytics(SA)进行尝试。它不是为这样的工作负载而设计的,因为否则SA将无法执行此工作的性能。它只是根据输入数据将数据发送到一个或多个接收器。
我建议将数据传递给能够在输出端执行逻辑的组件。有一些选择。 2个例子可能是:
Azure Function
(通过服务总线触发器指向物联网中心内置端点,如here所述)此解决方案还附带每个传入数据包将调用逻辑单元的价格,您必须另外支付该逻辑单元。请注意,Azure功能上存在计费选项,这些选项不依赖于调用量,而是为您提供类似于应用服务的模型中的逻辑。
如果您要处理大量数据,可以考虑使用Data Lake Storage Account与Data Lake Analytics结合使用的架构。后者也可以收集,汇总和分发您的传入数据到不同的数据存储。