Скорость изменения, нормализация и консолидация
Модуль статистики сохраняет скорость изменения (скорость) в течение временных интервалов. Эти временные интервалы находятся в хорошо определенных во времени границах. Однако ваш ввод не всегда является скоростью изменения и, скорее всего, не войдет в эти границы. Это значит, что ваш ввод должен меняться. Данный раздел объясняет, как это работает.
Следует выделить пару других этапов:
- Преобразование в скорость
- Нормализация интервала
- Консолидация интервалов в более большие
Это не мешает вам и не причиняет вред вашим данным. Это то, как работает модуль SPC в соответствии с проектом.
Каждый этап применяется для всего ввода, без каких-либо исключений. После преобразования вашего ввода в скорость происходит нормализация. После нормализации происходит консолидация. Все три этапа могут пропускаться, если вы тщательно настроили свою базу данных, но наличие одного пропущенного этапа не означает, что другие этапы будут пропускаться.
Если вы используете Индикатор, ввод уже является скоростью, но все же подлежит нормализации. Если вы вводите данные точно на границе нормализации, ваш ввод все равно подлежит консолидации.
Трансформация в скорость изменения
Все обрабатывается как скорость. Это не означает, что вы не можете работать с температурой, просто запомните, что она обрабатывается так, как если бы она так же была скоростью.
Существует несколько способов получения скорости из ввода модуля SPC (в зависимости от типа канала):
Индикатор:
Сохраняется его в "исходном виде". Ввод уже является скоростью. Примером может служить спидометр. Это тоже тип, используемый для отслеживания температуры и подобных показателей.
Сохранение в "исходном виде" не означает, что нормализация и консолидация пропускаются! Только сам этап.
Счетчик с переполнением:
Оценивается разница между предыдущим и текущим значением (дельта). Примером может служить одометр. Скорость рассчитывается так: дельта(счетчик с переполнением) разделенная на дельту (время).
Сбрасываемый счетчик:
Как одометр, но в этом случае счетчик переустанавливается при каждом чтении. Рассчитывается так: значение делится на дельту (время).
Счетчик без переполнения:
Как счетчик, но также может идти в обратную сторону. Примером может служить мониторинг двунаправленного насоса. Результат может быть как положительным, так и отрицательным.
В каждом из этих четырех случаев результатом будет скорость, которая действительна между предыдущим обновлением статистического канала и текущим. Модуль SPC не должен ничего знать о вводе, у него есть начало, конец и скорость.
Так завершается этап 1. Данные становятся скоростью, независимо от того, какой источник данных вы используете. С этого момента модуль SPC не знает и не проверяет, какой источник данных вы используете.
О скорости и времени
Если вы передаете что-то на скорости 60 байт в секунду в течение 1 секунды, вы можете передавать такое же количество данных на скорости 30 байт в секунду в течение 2 секунд, 20 байт в секунду в течение 3 секунд или 15 байт в секунду в течение 4 секунд, и так далее.
Данные числа все разные, но имеют одно общее: скорость, умноженная на время является константой. На этом рисунке важна сама поверхность, не ширина или высота, поскольку мы смотрим на количество данных, не их скорость или время. Далее объясняется, почему это важно.
Интервалы нормализации
Ввод теперь является скоростью, но он еще не находится в хорошо определенных границах времени. В этом случае нужна нормализация. Предположим, вы смотрите на счетчик каждую минуту. Что вы знаете? Вы знаете значения счетчика в ЧЧ:MM:СС. Вы не знаете, увеличил ли счетчик свои показатели на высокой скорости в течение небольшого промежутка времени (1 секунда на скорости 60 байт в секунду) или в течение длительного времени на небольшой скорости (60 секунд на скорости 1 байт в секунду). Посмотрите на рисунок выше еще раз, каждый ЧЧ:MM:СС будет находиться где-то в белых областях.
Это означает, что скорость, которую, как вы думаете, вы знаете, вообще не является реальной скоростью! В этом примере вы только знаете, что передали 60 байт за 60 секунд, где-то между ММ:СС и следующим MM:СС. Данная полученная скорость будет равняться 1 байту в секунду в течение каждого интервала в 60 секунд. Подчеркнем следующее: вы не знаете реальную скорость, только приблизительную.
Теперь посмотрите на другое изображение, показывающее замеренные интервалы и скорость. Образцы брались каждые 30 секунд в минуту, каждая закрашенная область представляет новый замер. Есть четыре закрашенных интервала, у последнего нулевая скорость, но известная (т.е. последнее обновление случилось в 04:30). Одно ожидаемое обновление, в 02:30, не произошло. Модуль SPC может идеально справиться с этим, если вы позволите. Обновление просто происходит в 03:30 и действительно до 01:30.
Нижняя часть изображения является результатом, полученным после нормализации. Она показывает, что каждый интервал использует часть каждого вводимого интервала. Первый интервал выстраивается из синего интервала (который начался до 00:00) и красного интервала (измеренного между 00:30 и 01:30). Используется только синяя часть, выпадающая в интервале 00:00 - 01:00, используется только красная часть, выпадающая в интервале 00:00 - 01:00. Подобное же происходит с другими интервалами. Заметим, что это только области, которые важны в данном случае. Используется хорошо определяемая часть синей области (в данном примере ровно половина) и хорошо определяемая часть красной области. Обе представляют байты, переданные за интервал. В этом примере используется половина каждого интервала, таким образом, мы получаем количество ранвое половине переданных байтов. Новый интервал, созданный в процессе нормализации, представляет собой сумму этих двух количеств. Его время известно, это фиксированное количество времени, размер шага, указанный вами для вашей базы данных. Его скорость - это область, поделенная на данное количество времени.
Если вы думаете, что неправильно перемещать данные по кругу таким образом, подумайте еще раз. Посмотрите на красный интервал. Вы знаете, что что-то произошло между 00:30 и 01:30. Вы знаете количество переданных данных, но вы не знает, когда. Возможно, что все они были переданы в первой половине этого интервала. Также возможно, что все они были переданы во второй половине этого интервала. В обоих случаях реальная скорость могла быть в два раза выше измеренной вами! Есть смысл разбить передачу так, как мы сделали. Вы все еще не знаете, правильно это или нет. В долгосрочной перспективе разницы нет, данные передаются, и мы об этом знаем.
Теперь скорости нормализованы. Это те скорости, с которыми работает модуль статистики. Заметим, что вторая и четвертая нормализованная скорость (сочетание красной и зеленой, сочетание зеленой и белой) ниже, чем зеленая скорость. Это важно, когда вы смотрите на максимальные скорости. Но поскольку красная и зеленая скорости являются сами по себе средними, их сочетание действительно так же, как и его источники.
Каждая нормализованная скорость действительна в течение фиксированного количества времени. Вместе они называются первичными данными - Primary Data Points (PDPs). Каждая PDP действительна в течение размера шага. Модуль SPC не знает и не обращает внимания на ввод, который вы ему предоставили. На этом завершается этап 2, и модуль SPC забывает весь оригинальный ввод.
Даже если нормализация является пустой (если вы убедились, что ваши временные метки уже находятся в хорошо определенных границах), все равно применяется консолидация.
Консолидация интервалов
Предположим, вы собираетесь представить свои данные в виде изображения. Вы хотите увидеть десять дней данных на одном графике. Если каждый PDP имеет в ширину одну минуту, вам нужно 10*24*60 PDP (10 дней 24 часов 60 минут). 14400 PDP - это много, особенно если ваше изображение будет иметь только 360 пикселей в ширину. Есть один способ показать свою информацию, а именно собрать вместе несколько PDP и показывать их как один пиксель-столбец. В этом случае вам нужно 40 PDP за раз для каждого из 360 столбцов, чтобы получить в общей сложности десять дней. Совмещение этих 40 PDP называется консолидацией, что может быть сделано несколькими способами:
Средний:
Рассчитывает среднее значение каждой скорости (из этих 40)
Минимальный:
Берет минимально зафиксированную скорость (из этих 40)
Максимальный:
Берет максимально зафиксированную скорость (из этих 40)
Суммарный:
Берет сумму этих 40 скоростей
Первый:
Берет первую зафиксированную скорость (из этих 40)
Последний:
Берет последнюю зафиксированную скорость (из этих 40)
То, какую функцию вы будете использовать, зависит от вашей задачи. Иногда вам нужно видеть средние значения, так что вы можете использовать ее, чтобы видеть количество переданных данных. Иногда вам нужно видеть максимальные значения, чтобы определить периоды перегрузки и т.д.
Какую бы функцию вы не выбрали, потребуется время для вычисления результатов. 40 на 360 - это немного, но представьте, что произойдет в случае с большими периодами времени (такими как несколько лет). Это значит, что вам нужно будет подождать, пока сгенерируется изображение.
Эту операцию также можно осуществить при помощи модуля SPC, но для этого потребуется планирование наперед. В этом примере вам нужно будет использовать 40 PDP одновременно. В других случаях каждый раз потребуется иное количество PDP, но вы можете заранее знать, какими будет это количество. Вместо произведения расчетов в момент использования, модуль SPC может производить их в период мониторинга. Каждый раз, когда известны серии 40 PDP, он консолидирует их и сохраняет как консодидированные данные - Consolidated Data Point (CDP). Эти CPD сохраняются в базе данных. Даже если консолидация не потребуется, вы сможете "консолидировать" один PDP в один CDP.