#azure #azure-sql-database #azure-functions #azure-iot-hub #azure-stream-analytics
#azure #azure-sql-database #azure-функции #azure-iot-hub #azure-stream-analytics
Вопрос:
Для записи данных датчиков с устройства IoT в базу данных SQL в облаке я использую задание Azure Streaming Analytics. Задание SA имеет входные данные IoT Hub и выходные данные базы данных SQL. Запрос тривиален; он просто отправляет все данные через). Согласно калькулятору цен MS, самый дешевый способ выполнения этой задачи (в Западной Европе) составляет около 75 евро в месяц (см. скриншот).
На самом деле через концентратор отправляется только 1 сообщение в минуту, а цена фиксирована в месяц (независимо от количества сообщений). Я удивлен ценой за такую тривиальную задачу для небольших данных. Существует ли более дешевая альтернатива для таких потребностей в малой емкости? Возможно, функция Azure?
Комментарии:
1. Если вам не нужна какая-либо обработка с сохранением состояния, такая как управление окнами, для вашего объема данных простая функция Azure в плане потребления действительно должна быть дешевле. Согласно калькулятору цен на функции: «Первые 400 000 ГБ / с и 1 000 000 выполнений бесплатны».
2. Или, если вам не нужно работать в режиме, близком к реальному времени, вы также можете использовать функцию архивирования IoT Hub для отправки необработанных данных в хранилище больших двоичных объектов. Оттуда есть задание фабрики данных, которое получает его раз в час и записывает в SQL DB. Хотя не уверен, что это дешевле, чем функции. Для вашего объема данных я бы, вероятно, выбрал функцию.
Ответ №1:
Если вы не обрабатываете данные в режиме реального времени, то SA не нужен, вы могли бы просто использовать Event Hub для приема данных вашего датчика и пересылки их дальше. Существует несколько вариантов переноса данных из Event Hub в SQL. Как вы упомянули в своем вопросе, вы могли бы использовать функцию Azure или, если вам нужно решение без кода, вы могли бы использовать логическое приложение.
https://learn.microsoft.com/en-us/azure/connectors/connectors-create-api-azure-event-hubs
https://learn.microsoft.com/en-us/azure/connectors/connectors-create-api-sqlazure
Комментарии:
1. Спасибо за ваш ответ. Данные необходимо обрабатывать примерно раз в час. Но остается вопрос, как переслать его в базу данных?
Ответ №2:
В дополнение к ответу Кена, вашим решением может быть «холодный путь», когда данные телеметрии сохраняются в хранилище больших двоичных объектов Azure IoT Hub каждые 720 секунд (например, максимальная частота пакетной обработки).
Используя Azure Event Grid в хранилище больших двоичных объектов, это вызовет подписчика EventGridTrigger, когда мы сможем запустить потоковый процесс для этого пакета (или для группы пакетов в течение одного часа). После завершения этого пакетного процесса задание ASA можно остановить. Обратите внимание, что счет за задание ASA выставляется на основе активного времени обработки (это время между запуском / остановкой), стоимость которого при использовании задания ASA может быть значительно снижена.
Комментарии:
1. Есть ли у вас пример, показывающий использование Azure Event Grind и EventGridTrigger EventGridTrigger?