Azure物联网中心 - 保存遥测最佳实践

时间:2016-07-29 09:22:50

标签: azure-storage-blobs azure-table-storage azure-eventhub azure-iot-hub

我正在研究一种能够保存天气数据的物联网解决方案。 关于如何设置后端,我已经搜索了几天了。 我将使用Azure IoT Hub来处理通信,但下一步就是问题。

我想将遥测存储到数据库中。这是我感到困惑的地方。 一些示例说我应该使用Azure BLOB存储或Azure表存储或Azure SQL。

经过几年的数据收集,我想开始创建数据报告。因此,存储需要善于处理大数据。

我遇到的下一个问题是将接收D2C并将其存储到数据库的工作者。所有Azure IoT示例都使用控制台应用程序,而有些则使用Azure Stream分析将事件移植到数据库。什么是最佳做法?它需要能够扩展并尝试使用最佳实践。

提前致谢!

4 个答案:

答案 0 :(得分:7)

如果您选择IoT Hub来处理通信,您可以选择如何处理数据(确保IoT集线器是您的正确选择,如果您不需要双向通信,Azure Event Hub将会是一个更好的选择,在处理大数据时会更便宜。)

  • 流分析 - 允许您将传入数据输出到SQL数据库,BLOB,事件中心,表存储,服务总线队列和主题,文档DB,Power Bi和DataLake存储。在此选项中,您不必管理自己的工作人员来处理数据。
  • EventProcessorHost - 在这里,您必须编写自己的获取数据并存储它的实现。此选项将使您可以灵活地将数据存储在所需的每个存储中,但您必须管理EPH的托管。 Azure Worker Rule是托管和扩展的不错选择。
  • Storm(HD Insights) - 您可以使用Apache风暴从IoT Hub读取数据,它还将为您提供比Stream Analytics提供的更广泛的实时计算选项。使用Storm读取数据后,您还可以选择将其存储在所需的每个存储中。请注意,Azure上的风暴非常昂贵,可能对您的应用程序来说太过分了。

至于报告 - 它实际上取决于您的需求,我会避免任何复杂报告的blob /表存储,这些2更优化用于存储大量数据而不是用于进行复杂查询。

如果您想让自己的报告/查询,您可以选择Sql / DocumentDb。但请确保如果您选择NoSql解决方案,您将从无架构的架构中受益。

对于Paas解决方案,您可以选择Power BI - https://powerbi.microsoft.com/en-us/blog/outputting-real-time-stream-analytics-data-to-a-power-bi-dashboard/

免责声明 - 我已根据您希望使用Azure堆栈的假设回答了您的问题。

祝你好运

答案 1 :(得分:1)

@KristerJohansson,根据您的描述,根据我的理解,它是一种物联网解决方案,数据采集器从带有​​传感器的某些设备接收天气数据并存储这些数据以供分析和使用。报告。我认为有一些关键基础需要被视为决定数据量的变量,例如天气数据列,数据格式,采样频率,设备数量等。

因此考虑可扩展性和根据我的经验,大数据作为参考,我认为最好的做法是使用IoTHub处理通信并使用Stream分析来检索&将数据从IoTHub存储到Blob存储。经过几年的数据收集,您可以使用Azure机器学习从blob存储中读取这些数据以进行分析和报告。

如有任何疑虑,请随时告诉我。

答案 2 :(得分:1)

Azure为您的问题添加了一个新的有趣功能。

现在可以将IoT消息直接路由到Azure存储。 https://azure.microsoft.com/en-us/blog/route-iot-device-messages-to-azure-storage-with-azure-iot-hub/

我还没有测试过,但文章看起来很有希望。

答案 3 :(得分:1)

您将在阅读 https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-endpoints

您还应该查看“时间序列见解”

https://azure.microsoft.com/en-us/services/time-series-insights/

这是我的粗略草图。时间序列要求从Active Directory生成令牌,但是设置很容易。

enter image description here

如上所示,

  • 设备将向IoT中心发送数据[您甚至可以在此处使用设备配置服务]
  • IOTHub支持多个端点。因此一端可以查看时间序列见解,而另一端可以访问任何数据库(例如CosmoDB)。

    注意:时间序列只能存储400天的数据,以后会删除它。

  • 关于报告-时间序列包含大量报告组件,并且非常快。另外,您可以使用c#等编程语言来访问它。

重要说明:在设计任何云架构师之前,请研究数据的“大小调整”因素。就像数据的频率和大小。基于此,我们可以选择Azure云中的资源。

请阅读 http://download.microsoft.com/download/A/4/D/A4DAD253-BC21-41D3-B9D9-87D2AE6F0719/Microsoft_Azure_IoT_Reference_Architecture.pdf