我有一台设备将数据帧发送到azure iot集线器,“转换这些帧”并将其保存到SQL Db或Cosmos Db的最佳实践是什么?
答案 0 :(得分:1)
您可以使用Azure流分析或Azure函数来处理来自Azure IoT中心的传入遥测数据:
Azure流分析是一种实时分析和复杂的事件处理引擎,旨在同时分析和处理来自多个源的大量快速流数据。可以在从许多输入源(包括设备,传感器,点击流,社交媒体供稿和应用程序)中提取的信息中识别模式和关系。这些模式可用于触发动作和启动工作流,例如创建警报,将信息提供给报告工具或存储转换后的数据以供以后使用。此外,流分析可在Azure IoT Edge运行时上使用,并支持与云相同的语言或语法。
在此快速样本中,您将学习如何从设备或传感器捕获数据,对该数据执行聚合,过滤或其他自定义处理,以及如何将其存储在数据库中。所有这些都将通过设置IoT中心和Azure功能之间的集成来完成,同时学习一些有关Azure功能的触发器和绑定的知识,并将处理后的数据放在Cosmos DB上。
希望这会有所帮助!
答案 1 :(得分:0)
尝试阅读/浏览Azure IoT参考体系结构:ref to architecture document
在大多数情况下,Cosmos DB将是我的首选起点。
请记住在扩展应用程序之前先研究分区。还要考虑如何在出站侧使用数据-因为这将为您应该如何组织和处理入站数据流提供有价值的输入。 尝试搜索Lambda IoT架构。
答案 2 :(得分:0)
Azure IOT集线器具有一个内置的终结点,默认情况下可以使用它称为事件集线器。您可以创建一个Azure功能,该功能使用和处理与路由到该事件集线器的消息相关的所有事件。默认情况下,所有发送到IOT Hub的遥测消息将被路由到EventHubs端点中的内部版本。
在您的函数中,可以根据需要使用sql或cosmos客户端写入数据。这是一个可能看起来像的示例:
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using Microsoft.Azure.EventHubs;
using System.Text;
public static class EventHubFunctions
{
[FunctionName("ProcessEventHubQueue")]
public static void Run(
[EventHubTrigger("my-iot-eventhub", ConsumerGroup = "consumergroup1", Connection = "EventHubConnectionString")]
EventData[] eventHubMessages,
ILogger log)
{
foreach (EventData myEventHubMessage in eventHubMessages)
{
String messageBody = Encoding.UTF8.GetString(myEventHubMessage.Body);
log.LogInformation($"EventData MessageBody: {messageBody}");
}
}