Azure IoT Hub - сохраните лучшие методы телеметрии

Я работаю над решением IoT, которое будет сохранять данные о погоде. Я уже несколько дней гуглю по настройке бэкэнда. Я собираюсь использовать Azure IoT Hub для обработки связи, но следующим шагом является проблема.

Я хочу сохранить телеметрию в базу данных. Это где я запутался. В некоторых примерах говорится, что я должен использовать хранилище больших двоичных объектов Azure, хранилище Azure Table или Azure SQL.

После нескольких лет сбора данных я хочу начать создавать отчеты данных. Таким образом, хранилище должно хорошо работать с большими данными.

Следующая проблема, на которой я застрял, - это работник, который получит D2C и сохранит его в базе данных. Все примеры IoT Azure используют консольное приложение, а некоторые используют аналитику Azure Stream только для переноса события в базу данных. Какова лучшая практика? Он должен уметь масштабироваться и пытаться использовать лучшие практики.

Заранее спасибо!

4 ответа

Если вы выбираете IoT Hub для управления связью, у вас есть несколько вариантов обработки данных (убедитесь, что IoT Hub - правильный выбор для вас, если вам не нужна двунаправленная связь, возможно, Azure Event Hub будет лучшим выбором, это намного дешевле при работе с большими данными).

  • Потоковая аналитика - позволит вам выводить входящие данные в базу данных SQL, большой двоичный объект, концентратор событий, хранилище таблиц, очередь и тему служебной шины, базу данных документов, Power Bi и хранилище DataLake. В этом варианте вам не придется управлять собственным работником для обработки данных.
  • EventProcessorHost - здесь вам нужно написать свою собственную реализацию получения и хранения данных. Эта опция даст вам возможность хранить данные в любом хранилище, которое вы хотите, но вам придется управлять хостингом EPH. Рабочее правило Azure - хороший выбор для хостинга и масштабирования.
  • Storm (HD Insights) - вы можете использовать Apache Storm для чтения данных из IoT Hub, он также предоставит вам возможности вычислений в реальном времени, которые намного шире, чем у Stream Analytics. После чтения данных с помощью Storm у вас также есть возможность сохранить их в любом хранилище, которое вы хотите. имейте в виду, что шторм в Azure очень дорог и может быть излишним для вашего приложения.

Что касается отчетности - это действительно зависит от ваших потребностей, я бы избегал хранения больших двоичных объектов или таблиц для любых сложных отчетов, эти две более оптимизированы для хранения большого количества данных и меньше для выполнения сложных запросов.

Если вы хотите создавать собственные отчеты / запросы, вы можете выбрать 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.

Удачи

Вы должны будете читать https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-endpoints

Вы также должны взглянуть на "Insight Time Series"

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

Вот мой грубый набросок. Временные ряды требуют, чтобы токен генерировался из Active Directory, но его легко настроить.

введите описание изображения здесь

Как показано выше,

  • Устройство будет отправлять данные в IoT Hub [Вы даже можете воспользоваться услугой предоставления устройств здесь]
  • IOTHub поддерживает несколько конечных точек. так что один конец может перейти к пониманию временных рядов, а другой - к любой базе данных, такой как CosmoDB.

    Примечание. Временные ряды могут хранить только 400 дней данных, затем он их удаляет.

  • Относительно отчетов - Временные ряды имеют обширные компоненты для отчетов, и это очень быстро. Кроме того, вы можете получить к нему доступ, используя язык программирования, как C#.

Важное примечание: перед проектированием любого облачного архитектора, пожалуйста, поработайте над коэффициентом "размеров" данных. Мол, частота данных и размер. Исходя из этого, мы можем выбрать ресурсы в лазурном облаке.

Пожалуйста, прочтите этот http://download.microsoft.com/download/A/4/D/A4DAD253-BC21-41D3-B9D9-87D2AE6F0719/Microsoft_Azure_IoT_Reference_Architecture.pdf

@KristerJohansson, Согласно вашему описанию, исходя из моего понимания, это IoT-решение, позволяющее сборщику данных получать данные о погоде с некоторых устройств с датчиками и сохранять их для анализа и составления отчетов. Я думаю, что есть некоторые ключевые базы, которые необходимо рассматривать как переменные, определяющие объем данных, такие как столбцы данных о погоде, формат данных, частота выборки, количество устройств и т. Д.

Таким образом, учитывая масштабируемость и большие данные, исходя из моего опыта, в качестве справки, я думаю, что лучшая практика заключается в том, чтобы использовать IoTHub для обработки связи и использовать потоковую аналитику для извлечения и хранения данных из IoTHub в хранилище BLOB-объектов. После нескольких лет сбора данных вы можете использовать машинное обучение Azure для чтения этих данных из хранилища больших двоичных объектов для анализа и составления отчетов.

Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.

Azure добавил новую интересную функцию для вашей проблемы.

Теперь можно направлять сообщения IoT непосредственно в хранилище Azure. https://azure.microsoft.com/en-us/blog/route-iot-device-messages-to-azure-storage-with-azure-iot-hub/

Я еще не проверял это, но статья выглядит многообещающей.

Другие вопросы по тегам