[РЕШЕНО] Повторяющиеся данные в БД и их запись.

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

Модератор: immortal

fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение fandaymon » Вт июл 24, 2018 9:59 pm

ksv писал(а):
Вт июл 24, 2018 6:38 pm
Нет ровно никакой информативности в записи повторяющихся данных в конце периода этих самых неизменяющихся данных. Сам факт новой записи с новыми данными и говорит о конце этого предыдущего периода. То есть отрезок и без этого повтора однозначно определяется по двум записям в БД с РАЗЛИЧАЮЩИМИСЯ данными.
Постройте график с точками в концах отрезка и только с одной точкой в начале и увидите разницу. Удивительно как можно давно и плотно работать с графиками и не понимать очевидную вещь... Да даже и вне контекста графиков, если не хранить конец отрезка, то как узнать с какого момента величина начала меняться?
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение ksv » Вт июл 24, 2018 11:33 pm

skysilver писал(а):
Вт июл 24, 2018 9:44 pm
Если температура не менялась в промежутке времени, то на графике это будет горизонтальная линия.
Нет. Точнее в общем случае - нет. Может быть и такой стиль отрисовки, безусловно. И Highchart имеет такой стиль отдельно - отрисовка горизонтальной линии до следующего изменения. При этом хайчарту для этого не требуется повтор данных. Но это опция. Вы можете отрисовать так, а можете иначе по тем же самым данным. И более распространенным и более естественным отображением является простая кусочно-линейная апроксимация, которая наиболее естественно отображает реальное изменение той же температуры. Если, к примеру, в течение часа было 24 градуса, а потом датчик выдал 25, то это значит что в течение часа температура повышалась, а не резко скакнула, и линия графика должна быть не горизонтальной с резкой ступенькой в конце, а диагональная. Но, это дело вкуса, разумеется. Важно другое - в базе данных повторное значение лишнее для всех вариантов отрисовки, оно не нужно ни для горизонтальной линии, ни для диагональной, ни для сплайна, ни для чего, ни для какой логики и математики оно не требуется, поскольку элементарно вычисляется, если это необходимо. Этот повтор - избыточность для хранения в БД.

Я могу предположить версию, зачем так сделано в mjd. Дело видимо в том, что тип графика line в mjd не поддержан, а тип spline криво связывает разрозненные точки, график получается неестественным. Добавив же искусственно повторное значение мы получаем красивый ровный меандроподобный сглаженный график, который хоть и красив, но менее юзабелен и большом массиве отображения.
skysilver писал(а):
Вт июл 24, 2018 9:44 pm
А чтобы ее нарисовать нужно минимум две координаты, у которых y1 и y2, разумеется, будут равны.
Отлично, вот вы и подтвердили ту очевидную истину, которую я зачем-то пытаюсь тут втолковывать. Если y1 и y2 равны, причем разумеется равны (то есть это факт сам по себе), то нахрена её, эту y2 в базе-то хранить? Повторюсь, для отрисовки графиков второе значение не требуется ни для Highchart, ни для других библиотек (а я пользовался amChart, Google Chart, и везде одинаково).
skysilver писал(а):
Вт июл 24, 2018 9:44 pm
Не нравится такое поведение, тогда фильтруйте данные от датчиков до их записи в свойства объектов, через метод, например.
Да, не нравится. Очень не нравится. Это глупо и бессмысленно. Если иного пути нет - буду фильтровать. Однако для этого необходимо брать последнее значение из истории. Как это делается, подскажете? Хранить в переменной, конечно, можно, но этот вариант хуже, так как менее надёжен.
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение ksv » Вт июл 24, 2018 11:44 pm

fandaymon писал(а):
Вт июл 24, 2018 9:59 pm
Постройте график с точками в концах отрезка и только с одной точкой в начале и увидите разницу. Удивительно как можно давно и плотно работать с графиками и не понимать очевидную вещь... Да даже и вне контекста графиков, если не хранить конец отрезка, то как узнать с какого момента величина начала меняться?
Чувак, мотани пару страниц этой ветки назад, я уже все давно нарисовал и выложил скрины. Может тогда поймёшь, о чем я... Хотя... Если задаётся вопрос "как узнать с какого момента величина начала меняться", то я пас. Это ребята, 5-ый класс, наверное... Извините, расстроен... Все, за сим я заканчиваю этот бесполезный ликбез.
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение ksv » Ср июл 25, 2018 12:38 am

Всё, я сам понял смысл этой повторной точки. Наличие повтора в БД перед изменением говорит о том, что все это время данные с датчика исправно поступали. Если бы повторного значения не было, было бы непонятно, работал датчик все это время, или нет. Вот в этом смысл есть. Согласен.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение fandaymon » Ср июл 25, 2018 12:50 am

ksv писал(а):
Вт июл 24, 2018 11:44 pm
fandaymon писал(а):
Вт июл 24, 2018 9:59 pm
Постройте график с точками в концах отрезка и только с одной точкой в начале и увидите разницу. Удивительно как можно давно и плотно работать с графиками и не понимать очевидную вещь... Да даже и вне контекста графиков, если не хранить конец отрезка, то как узнать с какого момента величина начала меняться?
Чувак, мотани пару страниц этой ветки назад, я уже все давно нарисовал и выложил скрины. Может тогда поймёшь, о чем я... Хотя... Если задаётся вопрос "как узнать с какого момента величина начала меняться", то я пас. Это ребята, 5-ый класс, наверное... Извините, расстроен... Все, за сим я заканчиваю этот бесполезный ликбез.
Ну вот это меня и удивляет - что класс пятый...
Как можно выкинуть временную метку с которой началось изменение и считать что мы не потеряли информацию?!
Какое отношение ко всему этому имеет кусочно линейная аппроксимация?!
По какой причудливой логике если наш термометр каждую минуту в течение часа выдавал 24 градуса, а потом в час и 1 минуту выдал 25, то это означает что температура весь этот час поднималась?!
И самое главное - ПОЧЕМУ автор программы должен в неё закладывать не обычную логику, а вот такую?!
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение ksv » Ср июл 25, 2018 7:57 am

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

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

И нигде я не просил что-то менять автора в логике, я хотел понять зачем так, никто ответить оказался не в состоянии. Просто буду фильтровать этот ненужный повтор сам, это просто.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение fandaymon » Ср июл 25, 2018 11:43 am

ksv писал(а):
Ср июл 25, 2018 7:57 am
Как рисовать линию графика - вопрос предпочтений. Я использую всегда очень короткие интервалы опроса тех датчиков, где мне важно отследить резкие изменения.
Если вы художник и вам не важно, что именно показывает график, то да - рисуйте как вам хочется. Мажордомо писался не для художников и он строит график по точкам.

Я говорю лишь только о том, что сам факт записи новых данных однозначно даёт ответ какими были предыдущие данные, и для этой цели хранить их не нужно. Здесь не может быть никакой потери данных по самой логике записи в БД - отсутствие данных означает их повтор. Из этой логики ВСЕ отсутствующие данные, в том числе и запись о конце неизменяющихся отрезка, восстановимы, потому-что известно что они одинаковы.
Вот жеж - точка это 2 координаты! 2! Да, одна из них (y) - одинаковая в начале и конце отрезка, но вторая-то (x) - разная! Отрезок задаётся всегда 2 координатами, даже если известно что этот отрезок параллелен оси x. Мы не можем отбросить вторую точку, потому что она даёт нам длину отрезка. Или в школе вам это не рассказывали?!
Да, если у нас период опроса датчиков постоянный и он где-то хранится, то мы можем сделать вывод, что если тут данные записаны, то на предыдущем опросе было предыдущее значение. НО! Для вывода правильного графика нам всё равно нужно будет посчитать вторую точку и добавить её в выборку. Нам нужно хранить период опроса. И этот период опроса должен быть постоянным, что конечно бывает совсем не всегда. Итого - чрезмерное усложнение, которое к тому же не охватывает весь диапазон датчиков.
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение ksv » Ср июл 25, 2018 12:12 pm

fandaymon писал(а):
Ср июл 25, 2018 11:43 am
НО! Для вывода правильного графика нам всё равно нужно будет посчитать вторую точку и добавить её в выборку
https://www.highcharts.com/docs/chart-a ... line-chart
Удивительно, правда? И как это highchart рисует отрезок по одной точке..? (см. опцию STEP). Ума не приложу. Шаманы, не иначе.
Устал я, честно. Оставайтесь при вашем мнении, мне это не важно.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение fandaymon » Ср июл 25, 2018 12:33 pm

ksv писал(а):
Ср июл 25, 2018 12:12 pm
fandaymon писал(а):
Ср июл 25, 2018 11:43 am
НО! Для вывода правильного графика нам всё равно нужно будет посчитать вторую точку и добавить её в выборку
https://www.highcharts.com/docs/chart-a ... line-chart
Удивительно, правда? И как это highchart рисует отрезок по одной точке..? (см. опцию STEP). Ума не приложу. Шаманы, не иначе.
Устал я, честно. Оставайтесь при вашем мнении, мне это не важно.
Ключевое слово - правильный. Я ж говорю - никто не может запретить вам рисовать как угодно и что угодно, но как-то люди в общем и математики в частности договорились, что нарисовать график, это значит отложить все имеющиеся у нас точки и соединить их линиями

В вашем примере вы всё равно рисуете не по одной точке, а по 2 - просто вторая точка вычисляется.

Мне в прицнипе тоже всё равно, что за каша у вас в голове, я просто реагирую на
И нигде я не просил что-то менять автора в логике, я хотел понять зачем так, никто ответить оказался не в состоянии.
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.

Сообщение ksv » Ср июл 25, 2018 12:59 pm

fandaymon писал(а):
Ср июл 25, 2018 12:33 pm
Мне в прицнипе тоже всё равно, что за каша у вас в голове, я просто реагирую на
И нигде я не просил что-то менять автора в логике, я хотел понять зачем так, никто ответить оказался не в состоянии.
Отреагировать проще всего (и правильнее) было бы таким ответом, который исходя из всего вышеизложенного напрашивается уже сам собой: "В mjd так сделано потому, что этот способ хранения данных обеспечивает правильную отрисовку именно этих поддерживаемых стилей графиков именно этой используемой в mjd библиотеки". Вот всё. Ответ понятен и удовлетворителен.
fandaymon писал(а):
Ср июл 25, 2018 12:33 pm
В вашем примере вы всё равно рисуете не по одной точке, а по 2 - просто вторая точка вычисляется.
Давышто? А я как-то и упустил это из виду :)
ksv писал(а):
Вт июл 24, 2018 11:33 pm
Важно другое - в базе данных повторное значение лишнее для всех вариантов отрисовки, оно не нужно ни для горизонтальной линии, ни для диагональной, ни для сплайна, ни для чего, ни для какой логики и математики оно не требуется, поскольку элементарно вычисляется, если это необходимо.
Я неправильную стратегию избрал с самого начала, сделав упор на отрисовку графиков, думая, что аудитории этот аргумент будет ближе. И не учёл скудную поддержку стилей хайчарта мажордомом. На самом же деле я ратую только лишь за экономию объёмов хранимых в БД данных, это гораздо важнее.

p.s. А нет, не устал :)
Ок, я полагаю, мы (ну ладно, - я) разобрались с этим вопросом. Спасибо всем за участие в дискуссии, извините, если кого оскорбил ненароком. Но если что, готов таки продолжить :)
Ответить