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/
Я еще не проверял это, но статья выглядит многообещающей.