Агрегирование сервера и устройств

Многие устройства, которые подключаются к SberMobile (через Agent или драйверы устройств), предоставляют различные значения типа датчика или счетчика, такие как показатели температуры, одометра или потребления топлива. Эти значения обычно группируются (агрегируются) по временным периодам, чтобы можно было использовать консолидированные значения (средние, минимальные и максимальные) в отчетах, графиках и других средствах обработки данных.

Разработчики систем мониторинга и контроля устройств часто сталкиваются с необходимостью выбора между агрегированием данных в устройстве и передачей необработанных значений в SberMobile Server. Эта статья разъясняет все "за" и "против" каждого метода.

Агрегирование данных внутри устройства

В этом случае устройство само рассчитывает консолидированные значения (такие как ежедневные средние значения и ежемесячные минимальные). Затем оно предоставляет серверу заранее рассчитанные значения в форме табличных переменных, таких как:

Месяц

Среднее потребление топилива

Июнь 2012

124

Июль 2012

131

Август 2012

119

"За" этого метода:

  • Устройство может продолжить агрегирование данных, даже если связь с сервером недоступна длительное время (однако некоторые протоколы, такие как протокол SberMobile, позволяют произвести буферизацию устройства)
  • Агрегированная статистика доступна внутри устройства, например, для отображения на ЖК устройства или внутреннем веб-интерфейсе

"Против" этого метода:

  • Реализация агрегирования данных внутри устройства довольно сложна
  • Агрегированная статистика займет место в памяти устройства
  • Если потребуется много типов агрегации (например, для построения графиков), таких как средние/минимальные/максимальные показатели в минуту/час/день/неделю/месяц/год, устройство должно обеспечить множество таблиц агрегации для одного счетчика
  • Таблицы агрегации будут полностью заново прочитаны из сервера во время обновления, частичное чтение невозможно
  • Данные агрегации будут дублированы в устройстве и базе данных сервера
  • Графики не смогут автоматически переключаться между различными типами агрегирования (например, с ежедневных на ежемесячные образцы)

Агрегирование данных на сервере с использованием статистических каналов

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

"За" этого метода:

  • Только необработанные значения отправляются на сервер и, таким образом, трафик устройство-сервер минимизируется
  • Ресурсы устройства не используются для расчета, хранения и предоставления агрегированных данных
  • Сервер обеспечивает централизованный контроль агрегированных параметров
  • Агрегированные точки данных из множества устройств могут легко совмещаться в отчетах и графиках сервера

"Против" этого метода:

  • Кроме тех случаев, когда используется буферизация, сервер не получает необработанные значения от отключенных устройств, что приводит к пропускам в детализированной статистике (поминутной, почасовой) и снижению точности менее детализированной статистики (по дням, месяцам, годам)
  • Само устройство не сможет воспользоваться консолидированными данными, например, отобразить их на веб-интерфейсе

Использование обоих методов

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