Выбор инструментов, которые с самого начала лучше всего подходят для ваших данных и рабочих нагрузок Интернета вещей (IoT), облегчит и ускорит вашу работу в долгосрочной перспективе, пишет на портале The New Stack Зои Штейнкамп, специалист по работе с разработчиками компании InfluxData.

Сегодня данные IoT или данные датчиков окружают нас повсюду. По прогнозам отраслевых аналитиков, к 2025 г. количество подключенных устройств во всем мире составит 30,9 млрд. единиц — по сравнению с 12,7 млрд. единиц в 2021-м.

Когда речь заходит о данных IoT, следует помнить, что они обладают особыми характеристиками, а это значит, что мы должны планировать, как их хранить и как ими управлять. Неправильный выбор таких аспектов, как хранение и инструментарий, может усложнить анализ данных и привести к увеличению затрат.

Один IoT-датчик отправляет в среднем одну точку данных в секунду. В общей сложности это более 80 000 точек данных за один день. А некоторые датчики генерируют данные каждую наносекунду, что значительно увеличивает этот ежедневный показатель.

Большинство сценариев использования IoT зависят далеко не от одного датчика. Если у вас несколько сотен датчиков, генерирующих данные с такой скоростью, то речь идет об огромном количестве данных. За один день вы можете получать миллионы точек данных для анализа, поэтому вам необходимо убедиться, что ваша система может справиться с рабочими нагрузками временных рядов такого размера. Более того, если ваше хранилище неэффективно, запросы возвращаются медленно, а инструменты анализа и визуализации не настроены для такого типа данных, вас ждут плохие времена.

Рассмотрим шесть лучших практик для создания эффективной и масштабируемой IoT-аналитики.

1. Начните с правильного хранения данных

Практически все данные IoT представляют собой временные ряды. Поэтому рассмотрите возможность их хранения в базе данных временных рядов, поскольку, будучи специально разработанными решениями для такого рода рабочих нагрузок, они обеспечивают наилучшую производительность. Форма данных IoT обычно содержит одни и те же четыре компонента. Первый — это просто название того, что вы отслеживаете. Мы можем назвать это измерением, и это может быть температура, давление, состояние устройства или что-то еще. Далее идут теги. Вы можете захотеть использовать теги, чтобы добавить контекст к вашим данным. Рассматривайте теги как метаданные для фактических значений, которые вы собираете. Сами значения, которые обычно являются числовыми, но не обязательно должны быть таковыми, мы можем назвать полями. И последний компонент — это временная метка, которая указывает, когда произошло измерение.

Зная форму и структуру наших данных, с ними легче работать, когда они находятся в базе данных. Что же такое база данных временных рядов? Это база данных, предназначенная для хранения таких данных, как, например, метрики, события, логи и трассировки, и запроса к ним на основе времени. Сравните это с базой данных не для временных рядов, где вы можете делать запросы по идентификатору, типу значения или их комбинации. В базе данных временных рядов мы делаем запрос исключительно по времени. В результате вы можете легко просмотреть данные за последний час, последние 24 часа и любой другой интервал, для которого у вас есть данные.

2. Сбор большого объема данных

Рабочие нагрузки, связанные с данными временных рядов, как правило, большие, быстрые и постоянные. Это означает, что вам нужен эффективный метод ввода данных в базу данных. Для этого мы можем воспользоваться таким инструментом, как Telegraf — агент ввода данных с открытым исходным кодом, предназначенный для запуска в качестве cron-задания для сбора метрик временных рядов. Он имеет более 300 плагинов для популярных источников данных временных рядов, включая устройства IoT, а также более общие плагины, такие как execd, которые можно использовать с различными источниками данных.

В зависимости от базы данных, с которой вы решили работать, другие варианты ввода данных могут включать клиентские библиотеки, которые позволяют записывать данные с помощью выбранного вами языка. Например, распространенным вариантом для такого типа инструментов является Python. Важно, чтобы эти клиентские библиотеки исходили от вашего источника базы данных, чтобы вы знали, что они могут обрабатывать поток ввода данных.

3. Очистка данных

У вас есть три варианта очистки данных: Вы можете очистить их перед хранением, после того, как они окажутся в базе данных, или в аналитических инструментах. Очистка данных перед хранением может быть простой, если у вас есть полный контроль над данными, которые вы отправляете в хранилище, и возможность отбрасывать те данные, которые вы считаете ненужными. Однако часто получаемые данные являются проприетарными, и вы не можете выбирать, какие значения вы получаете.

Например, мой датчик света отправляет дополнительные теги устройства, которые мне не нужны, а иногда, если источник света внезапно пропадает, он отправляет странные, ошибочные значения, например 0. В таких случаях мне нужно очистить данные после их поступления на хранение. В базе данных временных рядов я могу хранить необработанные данные в одном ведре (bucket) данных, а очищенные данные — в другом. Затем я могу использовать ведро с чистыми данными для загрузки в свои аналитические инструменты. При этом нет необходимости беспокоиться об очистке данных в инструментах, где изменения не обязательно будут реплицироваться обратно в базу данных. Если вы ждете, пока данные попадут в ваши аналитические инструменты, чтобы очистить их, это может потребовать больше ресурсов и повлиять на производительность.

4. Сила понижающей выборки

Очистка и понижающая выборка (downsampling) данных — это не одно и то же. Понижение — это агрегирование данных по времени. Например, исключение идентификатора устройства из измерений — это очистка, а получение среднего значения за последние пять минут — это понижающая выборка. Понижающая выборка — это мощный инструмент, который, как и очистка данных, позволяет сэкономить на хранении и сделать работу с данными проще и быстрее.

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

Вы контролируете свои IoT-устройства в режиме реального времени, но что делать со старыми данными после появления новых? Понижающая выборка берет данные с высокой степенью детализации и делает их менее детализированными, применяя средние значения, усреднения и другие операции. Это позволяет сохранить форму исторических данных, чтобы вы могли проводить исторические сравнения и выявлять аномалии, сокращая при этом объем хранения.

5. Мониторинг в режиме реального времени

Когда дело доходит до анализа данных, вы можете либо сравнить их с историческими данными, чтобы найти аномалии, либо задать параметры. Независимо от стиля мониторинга, важно проводить его в режиме реального времени, чтобы вы могли использовать поступающие данные для принятия быстрых решений и оперативных действий. Основные подходы к мониторингу в реальном времени включают использование встроенной опции в вашей базе данных, инструментов мониторинга в реальном времени или сочетание этих двух способов.

Независимо от выбранного подхода, очень важно, чтобы запросы имели быстрое время отклика и минимальную задержку, поскольку чем дольше данные доходят до ваших инструментов, тем менее реальными они становятся. Telegraf предлагает плагины для вывода данных на различные решения для мониторинга в реальном времени. И этот инструмент настроен на работу с данными временных рядов.

6. Агрегация исторических данных и холодное хранение

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

Некоторая репликация между локациями практически неизбежна, но чем больше вы можете предотвратить это, тем лучше, за исключением резервного копирования, конечно. И вы всегда можете использовать плагины вывода Telegraf для отправки данных в другие холодные хранилища.

При работе с данными IoT важно использовать правильные инструменты — от хранения до аналитики и визуализации. Выбор инструментов, которые лучше всего подходят для ваших данных и рабочих нагрузок IoT с самого начала, облегчит и ускорит вашу работу в долгосрочной перспективе.