"Живые" графики нужна помощь.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: "Живые" графики нужна помощь.

Сообщение LutsenkoDenis » Пн сен 30, 2013 4:56 pm

В таблице phistory индексов нет, только первичный ключ по полю ID, который в данном случае не используется.

Соответственно, если выборка из базы идёт не по ID а по другим полям, то на это потребуется много времени.

Если не переделывать данную таблицу капитально, то я попробовал бы создать индекс как минимум по полю ADDED.
Или по связке VALUE_ID и ADDED.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: "Живые" графики нужна помощь.

Сообщение sergejey » Пн сен 30, 2013 5:45 pm

LutsenkoDenis писал(а):В таблице phistory индексов нет, только первичный ключ по полю ID, который в данном случае не используется.

Соответственно, если выборка из базы идёт не по ID а по другим полям, то на это потребуется много времени.

Если не переделывать данную таблицу капитально, то я попробовал бы создать индекс как минимум по полю ADDED.
Или по связке VALUE_ID и ADDED.
Всё верно -- отсутствие индексов это недоработка. Я у себя в базе их добавлял, но видимо в дистрибутив всё же не включил, а они здорово ускоряют работу с историей значений.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 32 раза
Поблагодарили: 28 раз

Re: "Живые" графики нужна помощь.

Сообщение denis » Вт окт 01, 2013 9:09 am

Проблема "прореживания" не только в скорости работы, но и в логике этого "прореживания". Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5
"прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
Таким образом, при "прореживании" надо учитывать значения переменных, которые отражают фактическую картину, а не просто каждое десятое, сотое, тысячное...
Поэтому вариант со вспомогательными таблицами мне нравится больше, их можно создавать (обновлять) отдельным скриптом, который запускать раз в неделю и он уже будет учитывать все максимумы-минимумы значений в периоде. Причем можно просто в отдельную базу это писать, чтобы не засорять базу проекта.
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Вт окт 01, 2013 10:22 am

denis писал(а):Проблема "прореживания" не только в скорости работы, но и в логике этого "прореживания". Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5
"прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
Таким образом, при "прореживании" надо учитывать значения переменных, которые отражают фактическую картину, а не просто каждое десятое, сотое, тысячное...
Поэтому вариант со вспомогательными таблицами мне нравится больше, их можно создавать (обновлять) отдельным скриптом, который запускать раз в неделю и он уже будет учитывать все максимумы-минимумы значений в периоде. Причем можно просто в отдельную базу это писать, чтобы не засорять базу проекта.
Ну да, у меня тоже такие мысли были, просто этот вариант у меня получился как самый простой без переделки таблицы и добавления новых, ну и плюс кол-во точек необходимо выбирать исходя из периода опроса дастчиков и кол-ва точек на графике, тогда и тормозить не будет и график будет отражать реальную картину.
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: "Живые" графики нужна помощь.

Сообщение LutsenkoDenis » Вт окт 01, 2013 1:10 pm

denis писал(а):Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5. "прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
На счёт прореживания не вкурсе.
А что мешает из базы брать только уникальные значения?
Т.е. за день будет: +5 +20 +1.

С учётом наличия индексов на таблице запрос будет достаточно быстро выполняться.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Вт окт 01, 2013 2:23 pm

LutsenkoDenis писал(а):
denis писал(а):Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5. "прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
На счёт прореживания не вкурсе.
А что мешает из базы брать только уникальные значения?
Т.е. за день будет: +5 +20 +1.

С учётом наличия индексов на таблице запрос будет достаточно быстро выполняться.
C самого начала как только я прикрутил 1-wire у меня данные писались в таблицу примерно каждые 30 сек, всего допустим 4 датчика, при моем нынешнем алгоритме выборки график строится секунд 5-6, что не так и много, просто нужно уточнить некоторые моменты по самим настройкам в highcharts, сейчас при диапазоне 1 час график не видно, где-то надо переменную поправить. Можно наверное и только уникальные брать, но в таблице они с запятой идут 23,4 23,5 или даже с двумя знаками после запятой, график наверное будет ломаный. Я специально сравнивал текущий higcharts из majordomo с моей версией визуально на всех диапазонах графики очень похожи, но версия которую сделал Сергей ограничена диапазоном вывода и интервалом точек, вот сдесь:

var chart_preiod=50; //days
var chart_interval=60; //seconds (interval);

если поставить 200 дней, график не построится, нужно увеличить chart_interval, в моем же варианте изначально строится весь диапазон который есть в таблице, и уменьшив диапазон можно увидеть все точки которые есть в таблице.
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: "Живые" графики нужна помощь.

Сообщение LutsenkoDenis » Вт окт 01, 2013 3:05 pm

Urbas81 писал(а):Можно наверное и только уникальные брать, но в таблице они с запятой идут 23,4 23,5 или даже с двумя знаками после запятой, график наверное будет ломаный.
Блин, не понимаю...
В таблице phistory поле VALUE_ID - это на сколько я понимаю ID датчика.
Тогда зачем значения с датчика через запятую?

з.ы.
Графики еще не прикручивал, но как раз планировал показания орегоновской метеостанции отображать.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Вт окт 01, 2013 4:01 pm

LutsenkoDenis писал(а):
Urbas81 писал(а):Можно наверное и только уникальные брать, но в таблице они с запятой идут 23,4 23,5 или даже с двумя знаками после запятой, график наверное будет ломаный.
Блин, не понимаю...
В таблице phistory поле VALUE_ID - это на сколько я понимаю ID датчика.
Тогда зачем значения с датчика через запятую?
Значения температры в таблице имеют знаки после запятой,
Я подумал что фраза "А что мешает из базы брать только уникальные значения?
Т.е. за день будет: +5 +20 +1." подразумевает разные числа, вот и написал что с учетом знаков после запятой они практически все будут разные, если в уникальности имеется ввиду ID, так в запросе и так по нему идет выбор, другие датчики не выбираются.
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 32 раза
Поблагодарили: 28 раз

Re: "Живые" графики нужна помощь.

Сообщение denis » Вт окт 01, 2013 7:15 pm

Я приведенным sergejey в ветке кодом не пользуюсь, у меня "списано" с другого участника форума и выводится сразу несколько значений на один график. Превратить данные в уникальные поэтому не проблема, т.е. если есть значения: 24,5 24,7 24,3 25,1 24,9 то округляем и получаем уникальные значения: 25 и 24. Но все равно, надо перебрать, округлить весь миллион записей каждый раз, поэтому и нравится идея с заранее заготовленными таблицами.
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Ср окт 02, 2013 1:44 pm

denis писал(а):Я приведенным sergejey в ветке кодом не пользуюсь, у меня "списано" с другого участника форума и выводится сразу несколько значений на один график. Превратить данные в уникальные поэтому не проблема, т.е. если есть значения: 24,5 24,7 24,3 25,1 24,9 то округляем и получаем уникальные значения: 25 и 24. Но все равно, надо перебрать, округлить весь миллион записей каждый раз, поэтому и нравится идея с заранее заготовленными таблицами.
А можно посмотреть код который выводит несколько значений на один график, и как идет запрос к БД. Я выводил несколько значений на один график, но запрос к БД отличался от того который используется в варианте с разными интервалами.
Ответить