Azure IoT 中心 - 保存遥测最佳实践
Azure IoT Hub - Save telemetry best practice
我正在开发一个可以保存天气数据的物联网解决方案。
我已经用谷歌搜索了几天如何设置后端。
我打算使用Azure IoT Hub来处理通信,但是下一步就是问题了。
我想将遥测数据存储到数据库中。这就是我感到困惑的地方。
有些例子说我应该使用 Azure BLOB 存储或 Azure Table 存储或 Azure SQL.
经过几年的数据收集,我想开始创建数据报告。所以存储要善于和大数据打交道。
我遇到的下一个问题是接收 D2C 并将其存储到数据库的工作人员。所有 Azure IoT 示例都使用控制台应用程序,有些使用 Azure 流分析只是为了将事件传输到数据库。最佳做法是什么?它需要能够扩展并尝试使用最佳实践。
提前致谢!
如果你选择 IoT 中心来处理通信,你有几个关于如何处理数据的选项(确保 IoT 中心是你的正确选择,如果你不需要双向通信,也许 Azure 事件中心会是更好的选择,在处理大数据的时候便宜很多)。
- 流分析 - 可以让您将传入数据输出到 SQL 数据库、BLOB、事件中心、Table 存储、服务总线队列和主题、文档数据库、Power Bi 和 DataLake 存储。在此选项中,您不必管理自己的工作人员来处理数据。
- EventProcessorHost - 在这里您必须编写自己的获取数据和存储数据的实现。此选项将使您能够灵活地将数据存储在您想要的每个存储中,但您必须管理 EPH 的托管。 Azure Worker Rule 是托管和扩展的不错选择。
- Storm (HD Insights) - 您可以使用 Apache storm 从 IoT 中心读取数据,它还会为您提供实时计算选项,比流分析提供的选项要广泛得多。使用 Storm 读取数据后,您还可以选择将其存储在您想要的每个存储中。请注意,Azure 上的风暴非常昂贵,对您的应用程序来说可能有点矫枉过正。
至于报告 - 这真的取决于您的需求,我会避免 blobs/table 存储任何复杂的报告,这两个更适合存储大量数据,而较少进行复杂查询。
如果你想拥有reporting/queries你可以选择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 堆栈来回答您的问题。
祝你好运
@KristerJohansson,根据你的描述,根据我的理解,这是一个物联网解决方案,数据收集器从一些带有传感器的设备接收天气数据,并存储这些数据以供分析和报告。我认为有一些关键的基础需要考虑作为决定数据量的变量,比如天气数据列、数据格式、采样频率、设备数量等
因此考虑可扩展性和大数据,根据我的经验,作为参考,我认为最佳实践是使用 IoTHub 处理通信并使用流分析从 IoTHub 检索数据并将其存储到 Blob 存储。经过几年的数据收集,您可以使用 Azure 机器学习从 blob 存储中读取这些数据以进行分析和报告。
如有任何疑问,请随时告诉我。
Azure 为您的问题添加了一个有趣的新功能。
现在可以将 IoT 消息直接路由到 Azure 存储。
https://azure.microsoft.com/en-us/blog/route-iot-device-messages-to-azure-storage-with-azure-iot-hub/
我还没有测试过,但这篇文章看起来很有希望。
您应该正在阅读
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 生成令牌,但设置起来很容易。
如上图,
- 设备将向 IoT 中心发送数据[您甚至可以在此处使用 设备配置服务]
IOTHub 支持多个端点。所以一端可以转到时间序列洞察力,一端可以转到 CosmoDB 等任何数据库。
注意:时间序列只能存储400天的数据,稍后会删除。
关于报告 - 时间序列具有广泛的报告成分,而且速度非常快。此外,您可以使用 c# 等编程语言访问它。
重要说明:在设计任何云架构师之前,请处理数据的"Sizing" 因素。比如,数据的频率和大小。基于此,我们可以 select Azure Cloud 中的资源。
我正在开发一个可以保存天气数据的物联网解决方案。 我已经用谷歌搜索了几天如何设置后端。 我打算使用Azure IoT Hub来处理通信,但是下一步就是问题了。
我想将遥测数据存储到数据库中。这就是我感到困惑的地方。 有些例子说我应该使用 Azure BLOB 存储或 Azure Table 存储或 Azure SQL.
经过几年的数据收集,我想开始创建数据报告。所以存储要善于和大数据打交道。
我遇到的下一个问题是接收 D2C 并将其存储到数据库的工作人员。所有 Azure IoT 示例都使用控制台应用程序,有些使用 Azure 流分析只是为了将事件传输到数据库。最佳做法是什么?它需要能够扩展并尝试使用最佳实践。
提前致谢!
如果你选择 IoT 中心来处理通信,你有几个关于如何处理数据的选项(确保 IoT 中心是你的正确选择,如果你不需要双向通信,也许 Azure 事件中心会是更好的选择,在处理大数据的时候便宜很多)。
- 流分析 - 可以让您将传入数据输出到 SQL 数据库、BLOB、事件中心、Table 存储、服务总线队列和主题、文档数据库、Power Bi 和 DataLake 存储。在此选项中,您不必管理自己的工作人员来处理数据。
- EventProcessorHost - 在这里您必须编写自己的获取数据和存储数据的实现。此选项将使您能够灵活地将数据存储在您想要的每个存储中,但您必须管理 EPH 的托管。 Azure Worker Rule 是托管和扩展的不错选择。
- Storm (HD Insights) - 您可以使用 Apache storm 从 IoT 中心读取数据,它还会为您提供实时计算选项,比流分析提供的选项要广泛得多。使用 Storm 读取数据后,您还可以选择将其存储在您想要的每个存储中。请注意,Azure 上的风暴非常昂贵,对您的应用程序来说可能有点矫枉过正。
至于报告 - 这真的取决于您的需求,我会避免 blobs/table 存储任何复杂的报告,这两个更适合存储大量数据,而较少进行复杂查询。
如果你想拥有reporting/queries你可以选择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 堆栈来回答您的问题。
祝你好运
@KristerJohansson,根据你的描述,根据我的理解,这是一个物联网解决方案,数据收集器从一些带有传感器的设备接收天气数据,并存储这些数据以供分析和报告。我认为有一些关键的基础需要考虑作为决定数据量的变量,比如天气数据列、数据格式、采样频率、设备数量等
因此考虑可扩展性和大数据,根据我的经验,作为参考,我认为最佳实践是使用 IoTHub 处理通信并使用流分析从 IoTHub 检索数据并将其存储到 Blob 存储。经过几年的数据收集,您可以使用 Azure 机器学习从 blob 存储中读取这些数据以进行分析和报告。
如有任何疑问,请随时告诉我。
Azure 为您的问题添加了一个有趣的新功能。
现在可以将 IoT 消息直接路由到 Azure 存储。 https://azure.microsoft.com/en-us/blog/route-iot-device-messages-to-azure-storage-with-azure-iot-hub/
我还没有测试过,但这篇文章看起来很有希望。
您应该正在阅读 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 生成令牌,但设置起来很容易。
如上图,
- 设备将向 IoT 中心发送数据[您甚至可以在此处使用 设备配置服务]
IOTHub 支持多个端点。所以一端可以转到时间序列洞察力,一端可以转到 CosmoDB 等任何数据库。
注意:时间序列只能存储400天的数据,稍后会删除。
关于报告 - 时间序列具有广泛的报告成分,而且速度非常快。此外,您可以使用 c# 等编程语言访问它。
重要说明:在设计任何云架构师之前,请处理数据的"Sizing" 因素。比如,数据的频率和大小。基于此,我们可以 select Azure Cloud 中的资源。